Function Reference

_GUIImageList_GetIcon

イメージリストの画像とマスクからアイコンを作成します。

#Include <GuiImageList.au3>
_GUIImageList_GetIcon($hWnd, $iIndex[, $iStyle = 0])

 

パラメータ

$hWnd コントロールのハンドル
$iIndex 画像のゼロ始まりのインデックス
$iStyle [オプション]描画スタイルとオーバーレイ画像:
1 - マスクを使用して背景色に関係なく画像を透過的に描画します
2 - システムのハイライト色と25パーセントのブレンディングで画像を描画します
4 - システムのハイライト色と50パーセントのブレンディングで画像を描画します
8 - マスクを描画します

 

返し値

成功: アイコンのハンドル
失敗: 0

 

注意

この関数が返すアイコンの破棄に関しては呼び出し側アプリケーションにその責任があります。
_GUIImageList_DestroyIconを使用して破棄してください。

 

関連

 


#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <WinAPI.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

$Debug_SB = False ; 関数に渡されるClassNameを調べる。動作を確認するにはTrueを設定し、他のコントロールのハンドルを使用

Global $hStatus, $iMemo

_Main()

Func _Main()

    Local $hGUI, $hIcons[2], $hImage
    Local $aParts[4] = [75, 150, 300, 400]
   
    ; GUIを作成
    $hGUI = GUICreate("ImageList Get Icon", 400, 300)
    $hStatus = _GUICtrlStatusBar_Create($hGUI)
   
    ; メモコントロールを作成
    $iMemo = GUICtrlCreateEdit("", 2, 2, 396, 274, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    GUISetState()

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    ; パーツを設定
    _GUICtrlStatusBar_SetParts($hStatus, $aParts)
    _GUICtrlStatusBar_SetText($hStatus, "Part 1")
    _GUICtrlStatusBar_SetText($hStatus, "Part 2", 1)

    ; 画像をロード
    $hImage = _GUIImageList_Create(11, 11)
    _GUIImageList_Add($hImage, _WinAPI_CreateSolidBitmap($hStatus, 0xFF0000, 11, 11))
    _GUIImageList_Add($hImage, _WinAPI_CreateSolidBitmap($hStatus, 0x00FF00, 11, 11))
    _GUIImageList_Add($hImage, _WinAPI_CreateSolidBitmap($hStatus, 0x0000FF, 11, 11))

    ; アイコンを設定
    $hIcons[0] = _GUIImageList_GetIcon($hImage, 1)
    $hIcons[1] = _GUIImageList_GetIcon($hImage, 2)
    _GUICtrlStatusBar_SetIcon($hStatus, 0, $hIcons[0])
    _GUICtrlStatusBar_SetIcon($hStatus, 1, $hIcons[1])

    ; アイコンハンドルを表示
    MemoWrite("Part 1 icon handle .: 0x" & Hex($hIcons[0]))
    MemoWrite("Part 2 icon handle .: 0x" & Hex($hIcons[1]))

    ; ユーザーが終了するまでループ
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    ; アイコンを解放
    MsgBox(4096, "Information", "Icon 1 Destroyed? " & _GUIImageList_DestroyIcon($hIcons[0]))
    MsgBox(4096, "Information", "Icon 2 Destroyed? " & _GUIImageList_DestroyIcon($hIcons[1]))
    GUIDelete()
EndFunc   ;==>_Main

; メモ帳にメッセージを書き込む
Func MemoWrite($sMessage = "")
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hStatus
            Switch $iCode
                Case $NM_CLICK ; ユーザーがコントロールでマウス左ボタンをクリック
                    Local $tinfo = DllStructCreate($tagNMMOUSE, $ilParam)
                    $hWndFrom = HWnd(DllStructGetData($tinfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tinfo, "IDFrom")
                    $iCode = DllStructGetData($tinfo, "Code")
                    _DebugPrint("$NM_CLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode & @LF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tinfo, "ItemSpec") & @LF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tinfo, "ItemData") & @LF & _
                            "-->X:" & @TAB & DllStructGetData($tinfo, "X") & @LF & _
                            "-->Y:" & @TAB & DllStructGetData($tinfo, "Y") & @LF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tinfo, "HitInfo"))
                    Return True ; マウスクリックが制御され、システムによるデフォルト処理が抑制されたことを表す
;~                  Return FALSE ; クリックに対するデフォルト処理を許可
                Case $NM_DBLCLK ; ユーザーがコントロールでマウス左ボタンをダブルクリック
                    Local $tinfo = DllStructCreate($tagNMMOUSE, $ilParam)
                    $hWndFrom = HWnd(DllStructGetData($tinfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tinfo, "IDFrom")
                    $iCode = DllStructGetData($tinfo, "Code")
                    _DebugPrint("$NM_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode & @LF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tinfo, "ItemSpec") & @LF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tinfo, "ItemData") & @LF & _
                            "-->X:" & @TAB & DllStructGetData($tinfo, "X") & @LF & _
                            "-->Y:" & @TAB & DllStructGetData($tinfo, "Y") & @LF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tinfo, "HitInfo"))
                    Return True ; マウスクリックが制御され、システムによるデフォルト処理が抑制されたことを表す
;~                  Return FALSE ; クリックに対するデフォルト処理を許可
                Case $NM_RCLICK ; ユーザーがコントロールでマウス右ボタンをクリック
                    Local $tinfo = DllStructCreate($tagNMMOUSE, $ilParam)
                    $hWndFrom = HWnd(DllStructGetData($tinfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tinfo, "IDFrom")
                    $iCode = DllStructGetData($tinfo, "Code")
                    _DebugPrint("$NM_RCLICK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode & @LF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tinfo, "ItemSpec") & @LF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tinfo, "ItemData") & @LF & _
                            "-->X:" & @TAB & DllStructGetData($tinfo, "X") & @LF & _
                            "-->Y:" & @TAB & DllStructGetData($tinfo, "Y") & @LF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tinfo, "HitInfo"))
                    Return True ; マウスクリックが制御され、システムによるデフォルト処理が抑制されたことを表す
;~                  Return FALSE ; クリックに対するデフォルト処理を許可
                Case $NM_RDBLCLK ; ユーザーがコントロールでマウス右ボタンをダブルクリック
                    Local $tinfo = DllStructCreate($tagNMMOUSE, $ilParam)
                    $hWndFrom = HWnd(DllStructGetData($tinfo, "hWndFrom"))
                    $iIDFrom = DllStructGetData($tinfo, "IDFrom")
                    $iCode = DllStructGetData($tinfo, "Code")
                    _DebugPrint("$NM_RDBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode & @LF & _
                            "-->ItemSpec:" & @TAB & DllStructGetData($tinfo, "ItemSpec") & @LF & _
                            "-->ItemData:" & @TAB & DllStructGetData($tinfo, "ItemData") & @LF & _
                            "-->X:" & @TAB & DllStructGetData($tinfo, "X") & @LF & _
                            "-->Y:" & @TAB & DllStructGetData($tinfo, "Y") & @LF & _
                            "-->HitInfo:" & @TAB & DllStructGetData($tinfo, "HitInfo"))
                    Return True ; マウスクリックが制御され、システムによるデフォルト処理が抑制されたことを表す
;~                  Return FALSE ; クリックに対するデフォルト処理を許可
                Case $SBN_SIMPLEMODECHANGE ; シンプルモード変更
                    _DebugPrint("$SBN_SIMPLEMODECHANGE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; 返し値なし
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func _DebugPrint($s_text, $line = @ScriptLineNumber)
    ConsoleWrite( _
            "!===========================================================" & @LF & _
            "+======================================================" & @LF & _
            "-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
            "+======================================================" & @LF)
EndFunc   ;==>_DebugPrint