ヘッダーコントロールを作成します。
#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