リストボックスコントロールを作成します。
#Include <GuiListBox.au3>
_GUICtrlListBox_Create($hWnd, $sText, $iX, $iY[, $iWidth = 100[, $iHeight = 200[, $iStyle = 0x00B00002[, $iExStyle = 0x00000200]]]])
パラメータ
$hWnd | 親ウィンドウまたはオーナーウィンドウのハンドル |
$sText | コンボボックスに追加される文字列 |
$iX | コントロールの水平位置 |
$iY | コントロールの垂直位置 |
$iWidth | [オプション]コントロールの幅 |
$iHeight | [オプション]コントロールの高さ |
$iStyle | [オプション]コントロールのスタイル: $LBS_COMBOBOX - リストボックスがコンボボックスの一部であることを通知します $LBS_DISABLENOSCROLL - 無効化された垂直スクロールバーを表示します $LBS_EXTENDEDSEL - 複数アイテムの選択を許可します $LBS_HASSTRINGS - リストボックスが文字列からなるアイテムを格納していることを表します $LBS_MULTICOLUMN - 水平にスクロールできる複数列のリストボックスを表します $LBS_MULTIPLESEL - ユーザーがクリックするたびに文字列の選択をオン/オフします $LBS_NODATA - データのないリストボックスを表します $LBS_NOINTEGRALHEIGHT - サイズ設定にアプリケーションによって設定されたサイズの正確な値を使用します $LBS_NOREDRAW - 変更が起きた際にリストボックスの外見を更新しないように指定します $LBS_NOSEL - リストボックス内のアイテムは表示されるだけで選択できないように指定します $LBS_NOTIFY - ユーザーが文字列をクリック、ダブルクリックをした際に通知します $LBS_OWNERDRAWFIXED - リストボックスがオーナーによって描画されるよう指定します $LBS_OWNERDRAWVARIABLE - リストボックスがオーナーによって変数の高さで描画されるよう指定します $LBS_SORT - リストボックス内の文字列をアルファベット順にソートします $LBS_STANDARD - 標準的なリストボックススタイル $LBS_USETABSTOPS - リストボックスでのタブ文字の認識、展開を有効にします $LBS_WANTKEYBOARDINPUT - オーナーがWM_VKEYTOITEMメッセージを受け取るように指定します |
デフォルト: $LBS_SORT、$WS_HSCROLL、$WS_VSCROLL、$WS_BORDER 強制 : $WS_CHILD、$WS_TABSTOP、$WS_VISIBLE、$LBS_NOTIFY |
|
$iExStyle | [オプション]コントロール拡張スタイル。標準的な$WS_EX_定数と対応しています。 デフォルト: $WS_EX_CLIENTEDGE |
返し値
成功: | リストボックスコントロールのハンドル |
失敗: | 0 |
注意
この関数は上級者、コントロール動作学習用です。
関連
_GUICtrlListBox_Destroy
例
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GUIListBox.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
Opt('MustDeclareVars', 1)
$Debug_LB = False ; ListBox関数に渡されるClassNameを調べる。動作を確認するにはTrueを設定し、他のコントロールのハンドルを使用
Global $hListBox
_Main()
Func _Main()
Local $hGUI
; GUIを作成
$hGUI = GUICreate("(UDF Created) List Box Create", 400, 296)
$hListBox = _GUICtrlListBox_Create($hGUI, "String upon creation", 2, 2, 396, 296)
GUISetState()
MsgBox(4160, "Information", "Adding Items")
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
; ファイルを追加
_GUICtrlListBox_BeginUpdate($hListBox)
_GUICtrlListBox_ResetContent($hListBox)
_GUICtrlListBox_InitStorage($hListBox, 100, 4096)
_GUICtrlListBox_Dir($hListBox, @WindowsDir & "\win*.exe")
_GUICtrlListBox_AddFile($hListBox, @WindowsDir & "\Notepad.exe")
_GUICtrlListBox_Dir($hListBox, "", $DDL_DRIVES)
_GUICtrlListBox_Dir($hListBox, "", $DDL_DRIVES, False)
_GUICtrlListBox_EndUpdate($hListBox)
; ユーザーが終了するまでループ
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
EndFunc ;==>_Main
Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; 下位ワード
$iCode = BitShift($iwParam, 16) ; 上位ワード
Switch $hWndFrom
Case $hListBox, $hWndListBox
Switch $iCode
Case $LBN_DBLCLK ; ユーザーがリストボックスの文字列をダブルクリックした際に送信される
_DebugPrint("$LBN_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
; 返し値なし
Case $LBN_ERRSPACE ; リストボックスが要求に見合う十分なメモリを割り当てられなかった際に送信される
_DebugPrint("$LBN_ERRSPACE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
; 返し値なし
Case $LBN_KILLFOCUS ; リストボックスからキーボードフォーカスが外れた際に送信される
_DebugPrint("$LBN_KILLFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
; 返し値なし
Case $LBN_SELCANCEL ; ユーザーがリストボックス内の選択をキャンセルした際に送信される
_DebugPrint("$LBN_SELCANCEL" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
; 返し値なし
Case $LBN_SELCHANGE ; リストボックス内の選択が変更された際に送信される
_DebugPrint("$LBN_SELCHANGE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
; 返し値なし
Case $LBN_SETFOCUS ; リストボックスにキーボードフォーカスが合った際に送信される
_DebugPrint("$LBN_SETFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
"-->IDFrom:" & @TAB & $iIDFrom & @LF & _
"-->Code:" & @TAB & $iCode)
; 返し値なし
EndSwitch
EndSwitch
; デフォルトのAutoit3内部メッセージコマンドを続行
; ラインアウトで完了することもできる
; !!!ただし'Return'(値なし)だけは新しいデフォルトのAutoit3メッセージ
; を続行できない!!!
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND
Func _DebugPrint($s_text)
$s_text = StringReplace($s_text, @LF, @LF & "-->")
ConsoleWrite("!===========================================================" & @LF & _
"+===========================================================" & @LF & _
"-->" & $s_text & @LF & _
"+===========================================================" & @LF)
EndFunc ;==>_DebugPrint