拡張コンボボックスコントロールを作成します。
#Include <GuiComboBoxEx.au3>
_GUICtrlComboBoxEx_Create($hWnd, $sText, $iX, $iY[, $iWidth = 100[, $iHeight = 200[, $iStyle = 0x00200002[, $iExStyle = 0x00000000]]]])
パラメータ
$hWnd | 親ウィンドウまたはオーナーウィンドウのハンドル |
$sText | コンボボックスに追加する区切られたテキスト |
$iX | コントロールの水平位置 |
$iY | コントロールの垂直位置 |
$iWidth | [オプション]コントロールの幅 |
$iHeight | [オプション]コントロールの高さ |
$iStyle | [オプション]コントロールのスタイル: $CBS_DROPDOWN - ユーザーがエディットコントロールの隣のアイコンを選択しないとリストボックスが表示されない以外は$CBS_SIMPLEと同じです。 $CBS_DROPDOWNLIST - エディットコントロールがリストボックスに現在の選択値として表示されるアイテムのスタティックなテキストで置換される以外は$CBS_DROPDOWNと同じです。 $CBS_SIMPLE - 常にリストボックスを表示します。 |
デフォルト : $CBS_DROPDOWN、$WS_VSCROLL 強制 : $WS_CHILD、$WS_TABSTOP、$WS_VISIBLE |
|
$iExStyle | [オプション]コントロールの拡張スタイル: $CBES_EX_CASESENSITIVE - リストの検索で大文字小文字を区別します。 $CBES_EX_NOEDITIMAGE - エディットボックスとドロップダウンリストでアイテム画像を表示しません $CBES_EX_NOEDITIMAGEINDENT - エディットボックスとドロップダウンリストでアイテム画像を表示しません $CBES_EX_NOSIZELIMIT - 拡張コンボボックスコントロールを格納されているコンボボックスコントロールより小さい垂直サイズにできるようにします。 $CBES_EX_PATHWORDBREAKPROC - Microsoft Windows NTのみ。 エディットボックスでスラッシュ(/)、バックスラッシュ(\)、ピリオド(.)を単語区切り文字として使用します。 これによってキーボードショートカットでパス名とURLでの単語から単語へのカーソル移動を効果的におこなえるようになります。 |
返し値
成功: | リストボックスコントロールのハンドル |
失敗: | 0 |
注意
なし。
関連
_GUICtrlComboBoxEx_Destroy
例
#include <GuiComboBoxEx.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
Opt('MustDeclareVars', 1)
$Debug_CB = False ; ComboBox/ComboBoxEx関数に渡されるClassNameを調べる。動作を確認するにはTrueを設定し、他のコントロールのハンドルを使用
Global $hCombo
_Main()
Func _Main()
Local $hGUI
; GUIを作成
$hGUI = GUICreate("ComboBoxEx Create", 400, 300)
$hCombo = _GUICtrlComboBoxEx_Create ($hGUI, "This is a test|Line 2", 2, 2, 394, 268)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
_GUICtrlComboBoxEx_AddString ($hCombo, "Some More Text")
_GUICtrlComboBoxEx_InsertString ($hCombo, "Inserted Text", 1)
; ユーザーが終了するまでループ
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc ;==>_Main
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 $hCombo
Switch $iCode
Case $CBEN_BEGINEDIT ; ユーザーによってドロップダウンリストがアクティブ化されるか、コントロールのエディットボックスがクリックされた際に送信
_DebugPrint("$CBEN_BEGINEDIT" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
Return 0
Case $CBEN_DELETEITEM
_DebugPrint("$CBEN_DELETEITEM" & _GetComboBoxEx($ilParam))
Return 0
Case $CBEN_DRAGBEGINA, $CBEN_DRAGBEGINW
Local $tInfo = DllStructCreate($tagNMCBEDRAGBEGIN, $ilParam)
If DllStructGetData($tInfo, "ItemID") Then _DebugPrint("$CBEN_DRAGBEGIN" & _GetComboBoxEx($ilParam))
_DebugPrint("$CBEN_DRAGBEGIN" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tInfo, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tInfo, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tInfo, "Code") & @LF & _
"-->ItemID:" & @TAB & DllStructGetData($tInfo, "ItemID") & @LF & _
"-->Text:" & @TAB & DllStructGetData($tInfo, "Text"))
; 返し値は無視される
Case $CBEN_ENDEDITA, $CBEN_ENDEDITW ; ユーザーがエディットボックスでの操作を終えるか、コントロールのドロップダウンリストからアイテムを選択した際に送信
Local $tInfo = DllStructCreate($tagNMCBEENDEDIT, $ilParam)
_DebugPrint("$CBEN_ENDEDIT" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tInfo, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tInfo, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tInfo, "Code") & @LF & _
"-->fChanged:" & @TAB & DllStructGetData($tInfo, "fChanged") & @LF & _
"-->NewSelection:" & @TAB & DllStructGetData($tInfo, "NewSelection") & @LF & _
"-->Text:" & @TAB & DllStructGetData($tInfo, "Text") & @LF & _
"-->Why:" & @TAB & DllStructGetData($tInfo, "Why"))
Return False ; 通知を受け、コントロールに選択アイテムの表示を許可する
;~ Return True ; その他の場合
Case $CBEN_GETDISPINFOA, $CBEN_GETDISPINFOW ; コールバックアイテムの表示情報を取得するために送信
_DebugPrint("$CBEN_GETDISPINFO" & _GetComboBoxEx($ilParam))
Return 0
Case $CBEN_INSERTITEM
Local $tInfo = DllStructCreate($tagNMCOMBOBOXEX, $ilParam)
Local $tBuffer = DllStructCreate("wchar Text[" & DllStructGetData($tInfo, "TextMax") & "]", DllStructGetData($tInfo, "Text"))
_DebugPrint("$CBEN_INSERTITEM" & @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tInfo, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tInfo, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tInfo, "Code") & @LF & _
"-->Mask:" & @TAB & DllStructGetData($tInfo, "Mask") & @LF & _
"-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
"-->Text:" & @TAB & DllStructGetData($tBuffer, "Text") & @LF & _
"-->TextMax:" & @TAB & DllStructGetData($tInfo, "TextMax") & @LF & _
"-->Indent:" & @TAB & DllStructGetData($tInfo, "Indent") & @LF & _
"-->Image:" & @TAB & DllStructGetData($tInfo, "Image") & @LF & _
"-->SelectedImage:" & @TAB & DllStructGetData($tInfo, "SelectedImage") & @LF & _
"-->OverlayImage:" & @TAB & DllStructGetData($tInfo, "OverlayImage") & @LF & _
"-->Param:" & @TAB & DllStructGetData($tInfo, "Param"))
Return 0
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func _GetComboBoxEx($ilParam)
Local $tInfo = DllStructCreate($tagNMCOMBOBOXEX, $ilParam)
Local $aItem = _GUICtrlComboBoxEx_GetItem ($hCombo, DllStructGetData($tInfo, "Item"))
Return @LF & "--> hWndFrom:" & @TAB & DllStructGetData($tInfo, "hWndFrom") & @LF & _
"-->IDFrom:" & @TAB & DllStructGetData($tInfo, "IDFrom") & @LF & _
"-->Code:" & @TAB & DllStructGetData($tInfo, "Code") & @LF & _
"-->Mask:" & @TAB & DllStructGetData($tInfo, "Mask") & @LF & _
"-->Item:" & @TAB & DllStructGetData($tInfo, "Item") & @LF & _
"-->Text:" & @TAB & $aItem[0] & @LF & _
"-->TextMax:" & @TAB & $aItem[1] & @LF & _
"-->Indent:" & @TAB & $aItem[2] & @LF & _
"-->Image:" & @TAB & $aItem[3] & @LF & _
"-->SelectedImage:" & @TAB & $aItem[4] & @LF & _
"-->OverlayImage:" & @TAB & $aItem[5] & @LF & _
"-->Param:" & @TAB & $aItem[5]
EndFunc ;==>_GetComboBoxEx
Func _DebugPrint($s_text, $line = @ScriptLineNumber)
ConsoleWrite( _
"!===========================================================" & @LF & _
"+======================================================" & @LF & _
"-->Line(" & StringFormat("%04d", $line) & "):" & @TAB & $s_text & @LF & _
"+======================================================" & @LF)
EndFunc ;==>_DebugPrint