Function Reference

_GUICtrlHeader_Create

ヘッダーコントロールを作成します。

#Include <GuiHeader.au3>
_GUICtrlHeader_Create($hWnd[, $iStyle = 0x00000046])

 

パラメータ

$hWnd 親ウィンドウまたはオーナーウィンドウのハンドル
$iStyle [オプション]コントロールのスタイル:
$HDS_BUTTONS - コントロールの各アイテムの外見と動きがプッシュボタンのようになります
$HDS_DRAGDROP - ドラッグ&ドロップによるヘッダーアイテムの並べ替えを可能にします
$HDS_FILTERBAR - 標準のヘッダーコントロールの一部としてフィルターバーを含めます
$HDS_FLAT - ヘッダーコントロールが平面的に描画されるようにします
$HDS_FULLDRAG - ヘッダーコントロールで列の内容が表示されるようにします
$HDS_HIDDEN - 非表示設定のヘッダーコントロールを表します
$HDS_HORZ - 水平方向のヘッダーコントロールを作成します
$HDS_HOTTRACK - ホットトラッキングを有効にします
デフォルト: $HDS_BUTTONS、$HDS_HOTTRACK、$HDS_DRAGDROP
強制 : $WS_CHILD、$WS_VISIBLE

 

返し値

成功: ヘッダーコントロールのハンドル
失敗: 0

 

注意

なし。

 

関連

_GUICtrlHeader_Destroy

 


#include <GuiConstantsEx.au3>
#include <GuiHeader.au3>
#include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

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

Global $hHeader

_Main()

Func _Main()
    Local $hGUI

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

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

    ; 全フィルタをクリア
    _GUICtrlHeader_ClearFilterAll ($hHeader)

    ; ユーザーが終了するまでループ
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc   ;==>_Main

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
        Case $hHeader
            Switch $iCode
                Case $HDN_BEGINDRAG ; ヘッダーコントロールアイテムの1つがドラッグ操作された際に送信される
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_BEGINDRAG" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    Return False ; ヘッダーコントロールがドラッグ&ドロップ操作を自動管理するよう許可
;~                      Return True  ; 外部の(手動)ドラッグ&ドロップ管理によってコントロールのオーナーに
                    ; ドラッグ&ドロップ処理の一部に独自機能追加の許可をしていることを表す
                Case $HDN_BEGINTRACK, $HDN_BEGINTRACKW ; ヘッダーコントロールの親ウィンドウにユーザーがコントロールのディバイダーをドラッグしていることを通知
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_BEGINTRACK" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    Return False ; ディバイダーのトラッキングを許可
;~                      Return True  ; トラッキングをさせない
                Case $HDN_DIVIDERDBLCLICK, $HDN_DIVIDERDBLCLICKW ; ヘッダーコントロールの親ウィンドウにユーザーがコントロールのディバイダー領域をダブルクリックしていることを通知
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_DIVIDERDBLCLICK" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    ; 返し値なし
                Case $HDN_ENDDRAG ; ヘッダーコントロールアイテムのドラッグ操作が終わった際に送信される
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_ENDDRAG" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    Return False ; コントロールにアイテムの自動配置と自動並べ替えを許可
;~                      Return True  ; アイテムの配置をさせない
                Case $HDN_ENDTRACK, $HDN_ENDTRACKW ; ヘッダーコントロールの親ウィンドウにユーザーがディバイダーのドラッグをやめたことを通知
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_ENDTRACK" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    ; 返し値なし
                Case $HDN_FILTERBTNCLICK ; ヘッダーコントロールの親ウィンドウにフィルターボタンがクリックされたことを通知。または$HDM_SETITEM メッセージに反応
                    $tNMHDFILTERBTNCLICK = DllStructCreate($tagNMHDFILTERBTNCLICK, $ilParam)
                    _DebugPrint("$HDN_FILTERBTNCLICK" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Item") & @LF & _
                            "-->Left:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Left") & @LF & _
                            "-->Top:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Top") & @LF & _
                            "-->Right:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Right") & @LF & _
                            "-->Bottom:" & @TAB & DllStructGetData($tNMHDFILTERBTNCLICK, "Bottom"))
;~                      Return True  ; ヘッダーコントロールの親ウィンドウに$HDN_FILTERCHANGE通知が送信される
                    ; この通知によって親ウィンドウはそのユーザーインターフェイスの要素の同期が可能になる
                    Return False ; 通知を送信したくない場合
                Case $HDN_FILTERCHANGE ; ヘッダーコントロールの親ウィンドウにヘッダーコントロールフィルターの属性が変更あるいは編集されたことを通知。
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_FILTERCHANGE" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    ; 返し値なし
                Case $HDN_GETDISPINFO, $HDN_GETDISPINFOW ; コントロールがコールバックヘッダーアイテムの情報が必要な場合にヘッダーコントロールのオーナーに送信される
                    $tNMHDDISPINFO = DllStructCreate($tagNMHDDISPINFO, $ilParam)
                    _DebugPrint("$HDN_GETDISPINFO" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHDDISPINFO, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHDDISPINFO, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHDDISPINFO, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHDDISPINFO, "Item"))
;~                      Return LRESULT
                Case $HDN_ITEMCHANGED, $HDN_ITEMCHANGEDW ; ヘッダーコントロールの親ウィンドウにヘッダーアイテムの属性が変更したことを通知
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_ITEMCHANGED" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    ; 返し値なし
                Case $HDN_ITEMCHANGING, $HDN_ITEMCHANGINGW ; ヘッダーコントロールの親ウィンドウにヘッダーアイテムの属性が変更中であることを通知
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_ITEMCHANGING" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    Return False ; 変更を許可
;~                      Return True  ; 変更をさせない
                Case $HDN_ITEMCLICK, $HDN_ITEMCLICKW ; ヘッダーコントロールの親ウィンドウにユーザーがコントロールをクリックしたことを通知
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_ITEMCLICK" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    ; 返し値なし
                Case $HDN_ITEMDBLCLICK, $HDN_ITEMDBLCLICKW ; ヘッダーコントロールの親ウィンドウにユーザーがコントロールをダブルクリックしたことを通知
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_ITEMDBLCLICK" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    ; 返し値なし
                Case $HDN_TRACK, $HDN_TRACKW ; ヘッダーコントロールの親ウィンドウにユーザーがヘッダーコントロールのディバイダーをドラッグ中であることを通知
                    $tNMHEADER = DllStructCreate($tagNMHEADER, $ilParam)
                    _DebugPrint("$HDN_TRACK" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMHEADER, "hWndFrom") & @LF & _
                            "-->IDFrom:" & @TAB & DllStructGetData($tNMHEADER, "IDFrom") & @LF & _
                            "-->Code:" & @TAB & DllStructGetData($tNMHEADER, "Code") & @LF & _
                            "-->Item:" & @TAB & DllStructGetData($tNMHEADER, "Item") & @LF & _
                            "-->Button:" & @TAB & DllStructGetData($tNMHEADER, "Button"))
                    Return False ; ディバイダーのトラッキングを継続
;~                      Return True  ; トラッキングを終了
            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