Function Reference

_GUICtrlComboBoxEx_Create

拡張コンボボックスコントロールを作成します。

#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