Function Reference

_GUICtrlHeader_CreateDragImage

ドラッグ時の画像として使用されるアイテム画像の半透明バージョンを作成します。

#Include <GuiHeader.au3>
_GUICtrlHeader_CreateDragImage($hWnd, $iIndex)

 

パラメータ

$hWnd コントロールのハンドル
$iIndex ゼロ始まりのアイテムインデックス。アイテムに割り当てられる画像が透明画像のもとになります。

 

返し値

成功: 新しい画像のみを要素として格納した画像リストのハンドル
失敗: 0

 

注意

なし。

 

関連

_GUICtrlHeader_GetImageList

 


#include <GuiConstantsEx.au3>
#include <GuiHeader.au3>
#include <GuiImageList.au3>
#include <WinAPI.au3>

Opt('MustDeclareVars', 1)

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

_Main()

Func _Main()
    Local $hGUI, $hHeader, $hImage, $iMsg, $aSize, $tPos, $tRect, $hDC

    ; GUIを作成
    $hGUI = GUICreate("Header", 400, 300)
    $hHeader = _GUICtrlHeader_Create ($hGUI)
    GUISetState()

    ; 列を追加
    _GUICtrlHeader_AddItem ($hHeader, "Column 1", 100)
    _GUICtrlHeader_AddItem ($hHeader, "Column 2", 100)
    _GUICtrlHeader_AddItem ($hHeader, "Column 3", 100)
    _GUICtrlHeader_AddItem ($hHeader, "Column 4", 100)

    ; ドラッグ時画像を作成
    $hImage = _GUICtrlHeader_CreateDragImage ($hHeader, 1)
    $aSize = _GUIImageList_GetIconSize ($hImage)
    $hDC = _WinAPI_GetDC ($hGUI)

    ; ユーザーがやめるまでカーソル位置にドラッグ時画像を表示
    Do
        $iMsg = GUIGetMsg()
        If $iMsg = $GUI_EVENT_MOUSEMOVE Then
            If $tPos <> 0 Then
                $tRect = DllStructCreate($tagRECT)
                DllStructSetData($tRect, "Left", DllStructGetData($tPos, "X"))
                DllStructSetData($tRect, "Top", DllStructGetData($tPos, "Y"))
                DllStructSetData($tRect, "Right", DllStructGetData($tPos, "X") + $aSize[0])
                DllStructSetData($tRect, "Bottom", DllStructGetData($tPos, "Y") + $aSize[1])
                _WinAPI_InvalidateRect ($hGUI, $tRect)
            EndIf
            $tRect = _WinAPI_GetClientRect ($hGUI)
            $tPos = _WinAPI_GetMousePos (True, $hGUI)
            If _WinAPI_PtInRect ($tRect, $tPos) Then
                _GUIImageList_Draw ($hImage, 0, $hDC, DllStructGetData($tPos, "X"), DllStructGetData($tPos, "Y"))
            EndIf
        EndIf
    Until $iMsg = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main