レバーコントロールを作成します。
#Include <GuiRebar.au3>
_GUICtrlRebar_Create($hWnd[, $iStyles = 0x513])
パラメータ
$hWnd | 親ウィンドウまたはオーナーウィンドウのハンドル |
$iStyles | レバーコントロールは標準のウィンドウスタイルに加え、さまざまなコントロールスタイルをサポートしています: $RBS_AUTOSIZE - バージョン4.71。コントロールのサイズまたは位置が変わった際にレバーコントロールが自動的にバンドの配置を変更します。その際、$RBN_AUTOSIZE通知が送信されます。 $RBS_BANDBORDERS - バージョン4.71。レバーコントロールは隣り合うバンドを分けるための細いラインを表示します。 $RBS_DBLCLKTOGGLE - バージョン4.71。ユーザーがバンドをダブルクリックした際にレバーコントロールは最大化・最小化を切り替えます。 このスタイルが設定されていない場合、最大化・最小化の切り替えはユーザーによるバンドのシングルクリックによっておこなわれます。 $RBS_FIXEDORDER - バージョン4.70。レバーコントロールはバンドを常に同じ順序で表示します。バンドを異なる行に移動することははできますが、バンドの順序は維持されます。 $RBS_REGISTERDROP - バージョン4.71。レバーコントロールはコントロール内のバンド上にオブジェクトがドラッグされた際に$RBN_GETOBJECT通知メッセージを発生します。 $RBS_TOOLTIPS - バージョン4.71。まだサポートされていません。 $RBS_VARHEIGHT - バージョン4.71。レバーコントロールは可能な場合、最低限必要な高さでバンドを表示します。このスタイルが設定されていない場合、レバーコントロールは表示されている最も高いバンドの高さを使用して他のバンドの高さを決定した上で全てのバンドを同じ高さで表示します。 $RBS_VERTICALGRIPPER - バージョン4.71。垂直レバーコントロールでサイズグリップが水平でなく垂直に表示されます。このスタイルは$CCS_VERTスタイルが設定されていないレバーコントロールでは無視されます。 $CCS_LEFT - バージョン4.70。コントロールは親ウィンドウの左側に垂直に表示されます。 $CCS_NODIVIDER - コントロール上部に2ピクセルのハイライトが描画されないようにします。 $CCS_RIGHT - バージョン4.70。コントロールは親ウィンドウの右側に垂直に表示されます。 $CCS_VERT - バージョン4.70。コントロールが垂直に表示されます。 |
デフォルト: $CCS_TOP、$RBS_VARHEIGHT 強制: $WS_CHILD、$WS_VISIBLE、$WS_CLIPCHILDREN、$WS_CLIPSIBLINGS |
返し値
成功: | レバーコントロールのハンドル |
失敗: | @errorを設定します。 |
注意
なし。
関連
_GUICtrlRebar_Destroy
例
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiReBar.au3>
#include <GuiToolBar.au3>
#include <GuiComboBox.au3>
#include <GuiDateTimePicker.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <GuiConstantsEx.au3>
Opt("MustDeclareVars", 1)
$Debug_RB = False
Global $hReBar
_Main()
Func _Main()
Local $hgui, $btnExit, $hToolbar, $hCombo, $hDTP, $hInput
Local Enum $idNew = 1000, $idOpen, $idSave, $idHelp
$hgui = GUICreate("Rebar", 400, 396, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_MAXIMIZEBOX))
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; レバーコントロールを作成
$hReBar = _GUICtrlReBar_Create($hgui, BitOR($CCS_TOP, $WS_BORDER, $RBS_VARHEIGHT, $RBS_AUTOSIZE, $RBS_BANDBORDERS))
; レバーに挿入するツールバーを作成
$hToolbar = _GUICtrlToolBar_Create($hgui, BitOR($TBSTYLE_FLAT, $CCS_NORESIZE, $CCS_NOPARENTALIGN))
; 標準システムビットマップを追加
Switch _GUICtrlToolbar_GetBitmapFlags($hToolbar)
Case 0
_GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_SMALL_COLOR)
Case 2
_GUICtrlToolbar_AddBitmap($hToolbar, 1, -1, $IDB_STD_LARGE_COLOR)
EndSwitch
; ボタンを追加
_GUICtrlToolbar_AddButton($hToolbar, $idNew, $STD_FILENEW)
_GUICtrlToolbar_AddButton($hToolbar, $idOpen, $STD_FILEOPEN)
_GUICtrlToolbar_AddButton($hToolbar, $idSave, $STD_FILESAVE)
_GUICtrlToolbar_AddButtonSep($hToolbar)
_GUICtrlToolbar_AddButton($hToolbar, $idHelp, $STD_HELP)
; レバーに挿入するコンボボックスを作成
$hCombo = _GUICtrlComboBox_Create($hgui, "", 0, 0, 120)
_GUICtrlComboBox_BeginUpdate($hCombo)
_GUICtrlComboBox_AddDir($hCombo, @WindowsDir & "\*.exe")
_GUICtrlComboBox_EndUpdate($hCombo)
; レバーに挿入する日付け時刻ピッカーを作成
$hDTP = _GUICtrlDTP_Create($hgui, 0, 0, 190)
; レバーに挿入する入力ボックスを作成
$hInput = GUICtrlCreateInput("Input control", 0, 0, 120, 20)
; デフォルトのアドを追加
; コントロールにバンドを追加
_GUICtrlReBar_AddBand($hReBar, $hCombo, 120, 200, "Dir *.exe")
; 日付け時刻ピッカーのあるバンドを追加
_GUICtrlReBar_AddBand($hReBar, $hDTP, 120)
; ツールバーのあるバンドをレバーの最初に追加
_GUICtrlReBar_AddToolBarBand($hReBar, $hToolbar, "", 0)
; 他のコントロールを追加
_GUICtrlReBar_AddBand($hReBar, GUICtrlGetHandle($hInput), 120, 200, "Name:")
$btnExit = GUICtrlCreateButton("Exit", 150, 360, 100, 25)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $btnExit
Exit
EndSwitch
WEnd
EndFunc ;==>_Main
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg, $iwParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
Local $tAUTOBREAK, $tAUTOSIZE, $tNMREBAR, $tCHEVRON, $tCHILDSIZE, $tOBJECTNOTIFY
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hReBar
Switch $iCode
Case $RBN_AUTOBREAK
; レバーの親にレバー内に改行が現れることを通知。親は改行をおこなうかを決定する
$tAUTOBREAK = DllStructCreate($tagNMREBARAUTOBREAK, $ilParam)
_DebugPrint("$RBN_AUTOBREAK" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tAUTOBREAK, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tAUTOBREAK, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tAUTOBREAK, "Code") & @LF & _
"-->uBand:" & @TAB & DllStructGetData($tAUTOBREAK, "uBand") & @LF & _
"-->wID:" & @TAB & DllStructGetData($tAUTOBREAK, "wID") & @LF & _
"-->lParam:" & @TAB & DllStructGetData($tAUTOBREAK, "lParam") & @LF & _
"-->uMsg:" & @TAB & DllStructGetData($tAUTOBREAK, "uMsg") & @LF & _
"-->fStyleCurrent:" & @TAB & DllStructGetData($tAUTOBREAK, "fStyleCurrent") & @LF & _
"-->fAutoBreak:" & @TAB & DllStructGetData($tAUTOBREAK, "fAutoBreak"))
; 返し値、不使用
Case $RBN_AUTOSIZE
; レバーが自身を自動サイズ変更した際に作成時に$RBS_AUTOSIZEスタイル設定されているレバーコントロールによって送信される
$tAUTOSIZE = DllStructCreate($tagNMRBAUTOSIZE, $ilParam)
_DebugPrint("$RBN_AUTOSIZE" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tAUTOSIZE, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tAUTOSIZE, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tAUTOSIZE, "Code") & @LF & _
"-->fChanged:" & @TAB & DllStructGetData($tAUTOSIZE, "fChanged") & @LF & _
"-->TargetLeft:" & @TAB & DllStructGetData($tAUTOSIZE, "TargetLeft") & @LF & _
"-->TargetTop:" & @TAB & DllStructGetData($tAUTOSIZE, "TargetTop") & @LF & _
"-->TargetRight:" & @TAB & DllStructGetData($tAUTOSIZE, "TargetRight") & @LF & _
"-->TargetBottom:" & @TAB & DllStructGetData($tAUTOSIZE, "TargetBottom") & @LF & _
"-->ActualLeft:" & @TAB & DllStructGetData($tAUTOSIZE, "ActualLeft") & @LF & _
"-->ActualTop:" & @TAB & DllStructGetData($tAUTOSIZE, "ActualTop") & @LF & _
"-->ActualRight:" & @TAB & DllStructGetData($tAUTOSIZE, "ActualRight") & @LF & _
"-->ActualBottom:" & @TAB & DllStructGetData($tAUTOSIZE, "ActualBottom"))
; 返し値、不使用
Case $RBN_BEGINDRAG
; ユーザーがバンドのドラッグを開始した際にレバーコントロールによって送信される
$tNMREBAR = DllStructCreate($tagNMREBAR, $ilParam)
_DebugPrint("$RBN_BEGINDRAG" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMREBAR, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tNMREBAR, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tNMREBAR, "Code") & @LF & _
"-->dwMask:" & @TAB & DllStructGetData($tNMREBAR, "dwMask") & @LF & _
"-->uBand:" & @TAB & DllStructGetData($tNMREBAR, "uBand") & @LF & _
"-->fStyle:" & @TAB & DllStructGetData($tNMREBAR, "fStyle") & @LF & _
"-->wID:" & @TAB & DllStructGetData($tNMREBAR, "wID") & @LF & _
"-->lParam:" & @TAB & DllStructGetData($tNMREBAR, "lParam"))
Return 0 ; レバーにドラッグ操作の継続を許可
;~ Return 1 ; 非ゼロの場合、ドラッグ操作を破棄
Case $RBN_CHEVRONPUSHED
; シェブロンが押された際にレバーコントロールによって送信される
;
アプリケーションが通知を受け取った際、各非表示ツールアイテムのポップアップメニューを表示
;
ポップアップメニューの正しい位置を得るためにNMREBARCHEVRON構造体のrcメンバーを使用
$tCHEVRON = DllStructCreate($tagNMREBARCHEVRON, $ilParam)
_DebugPrint("$RBN_CHEVRONPUSHED" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tCHEVRON, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tCHEVRON, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tCHEVRON, "Code") & @LF & _
"-->uBand:" & @TAB & DllStructGetData($tCHEVRON, "uBand") & @LF & _
"-->wID:" & @TAB & DllStructGetData($tCHEVRON, "wID") & @LF & _
"-->lParam:" & @TAB & DllStructGetData($tCHEVRON, "lParam") & @LF & _
"-->Left:" & @TAB & DllStructGetData($tCHEVRON, "Left") & @LF & _
"-->Top:" & @TAB & DllStructGetData($tCHEVRON, "Top") & @LF & _
"-->Right:" & @TAB & DllStructGetData($tCHEVRON, "Right") & @LF & _
"-->lParamNM:" & @TAB & DllStructGetData($tCHEVRON, "lParamNM"))
; 返し値、不使用
Case $RBN_CHILDSIZE
; バンドの子ウィンドウがサイズ変更された際にレバーコントロールによって送信される
$tCHILDSIZE = DllStructCreate($tagNMREBARCHILDSIZE, $ilParam)
_DebugPrint("$RBN_CHILDSIZE" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tCHILDSIZE, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tCHILDSIZE, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tCHILDSIZE, "Code") & @LF & _
"-->uBand:" & @TAB & DllStructGetData($tCHILDSIZE, "uBand") & @LF & _
"-->wID:" & @TAB & DllStructGetData($tCHILDSIZE, "wID") & @LF & _
"-->CLeft:" & @TAB & DllStructGetData($tCHILDSIZE, "CLeft") & @LF & _
"-->CTop:" & @TAB & DllStructGetData($tCHILDSIZE, "CTop") & @LF & _
"-->CRight:" & @TAB & DllStructGetData($tCHILDSIZE, "CRight") & @LF & _
"-->CBottom:" & @TAB & DllStructGetData($tCHILDSIZE, "CBottom") & @LF & _
"-->BLeft:" & @TAB & DllStructGetData($tCHILDSIZE, "BandLeft") & @LF & _
"-->BTop:" & @TAB & DllStructGetData($tCHILDSIZE, "BTop") & @LF & _
"-->BRight:" & @TAB & DllStructGetData($tCHILDSIZE, "BRight") & @LF & _
"-->BBottom:" & @TAB & DllStructGetData($tCHILDSIZE, "BBottom"))
; 返し値、不使用
Case $RBN_DELETEDBAND
; バンドが削除された後にレバーコントロールによって送信される
$tNMREBAR = DllStructCreate($tagNMREBAR, $ilParam)
_DebugPrint("$RBN_DELETEDBAND" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMREBAR, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tNMREBAR, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tNMREBAR, "Code") & @LF & _
"-->dwMask:" & @TAB & DllStructGetData($tNMREBAR, "dwMask") & @LF & _
"-->uBand:" & @TAB & DllStructGetData($tNMREBAR, "uBand") & @LF & _
"-->fStyle:" & @TAB & DllStructGetData($tNMREBAR, "fStyle") & @LF & _
"-->wID:" & @TAB & DllStructGetData($tNMREBAR, "wID") & @LF & _
"-->lParam:" & @TAB & DllStructGetData($tNMREBAR, "lParam"))
; 返し値、不使用
Case $RBN_DELETINGBAND
; バンドが削除されている間、レバーコントロールによって送信される
$tNMREBAR = DllStructCreate($tagNMREBAR, $ilParam)
_DebugPrint("$RBN_DELETINGBAND" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMREBAR, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tNMREBAR, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tNMREBAR, "Code") & @LF & _
"-->dwMask:" & @TAB & DllStructGetData($tNMREBAR, "dwMask") & @LF & _
"-->uBand:" & @TAB & DllStructGetData($tNMREBAR, "uBand") & @LF & _
"-->fStyle:" & @TAB & DllStructGetData($tNMREBAR, "fStyle") & @LF & _
"-->wID:" & @TAB & DllStructGetData($tNMREBAR, "wID") & @LF & _
"-->lParam:" & @TAB & DllStructGetData($tNMREBAR, "lParam"))
; 返し値、不使用
Case $RBN_ENDDRAG
; ユーザーがバンドのドラッグをやめた際にレバーコントロールによって送信される
$tNMREBAR = DllStructCreate($tagNMREBAR, $ilParam)
_DebugPrint("$RBN_ENDDRAG" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tNMREBAR, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tNMREBAR, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tNMREBAR, "Code") & @LF & _
"-->dwMask:" & @TAB & DllStructGetData($tNMREBAR, "dwMask") & @LF & _
"-->uBand:" & @TAB & DllStructGetData($tNMREBAR, "uBand") & @LF & _
"-->fStyle:" & @TAB & DllStructGetData($tNMREBAR, "fStyle") & @LF & _
"-->wID:" & @TAB & DllStructGetData($tNMREBAR, "wID") & @LF & _
"-->lParam:" & @TAB & DllStructGetData($tNMREBAR, "lParam"))
; 返し値、不使用
Case $RBN_GETOBJECT
; コントロール内のバンド上にオブジェクトがドラッグされた際に作成時に$RBS_REGISTERDROPスタイル設定されているレバーコントロールによって送信される
$tOBJECTNOTIFY = DllStructCreate($tagNMOBJECTNOTIFY, $ilParam)
_DebugPrint("$RBN_GETOBJECT" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tOBJECTNOTIFY, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tOBJECTNOTIFY, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tOBJECTNOTIFY, "Code") & @LF & _
"-->Item:" & @TAB & DllStructGetData($tOBJECTNOTIFY, "Item") & @LF & _
"-->piid:" & @TAB & DllStructGetData($tOBJECTNOTIFY, "piid") & @LF & _
"-->pObject:" & @TAB & DllStructGetData($tOBJECTNOTIFY, "pObject") & @LF & _
"-->Result:" & @TAB & DllStructGetData($tOBJECTNOTIFY, "Result"))
; 返し値、不使用
Case $RBN_HEIGHTCHANGE
; レバーコントロールの高さが変更された際にレバーコントロールによって送信される
;
$CCS_VERTスタイルを使用しているレバーコントロールは幅が変更された際にこの通知メッセージを送信する
_DebugPrint("$RBN_HEIGHTCHANGE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
; 返し値、不使用
Case $RBN_LAYOUTCHANGED
; コントロールのバンドの配置をユーザーが変更した際にレバーコントロールによって送信される
_DebugPrint("$RBN_LAYOUTCHANGED" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
; 返し値、不使用
Case $RBN_MINMAX
; バンドの最大化・最小化前にレバーコントロールによって送信される
_DebugPrint("$RBN_MINMAX" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
;~ Return 1 ; 非ゼロの値の場合、操作を破棄
Return 0 ; ゼロの場合、継続許可
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