Function Reference

_GUICtrlButton_Create

ボタンコントロールを作成します。

#Include <GuiButton.au3>
_GUICtrlButton_Create($hWnd, $sText, $iX, $iY, $iWidth, $iHeight[, $iStyle = -1[, $iExStyle = -1]])

 

パラメータ

$hWnd 親ウィンドウまたはオーナーウィンドウのハンドル
$sText ボタンに追加するテキスト
$iX コントロールの水平位置
$iY コントロールの垂直位置
$iWidth コントロールの幅
$iHeight コントロールの高さ
$iStyle [オプション]コントロールのスタイル:
  $BS_AUTO3STATE - ユーザーがチェックボックスを選択するたびに状態が選択、利用不可、取り消しと入れ替わる三状態のチェックボックスを作成します。
  $BS_AUTOCHECKBOX - ユーザーがチェックボックスを選択するたびに状態が選択、取り消しの間を切り替わるチェックボックスを作成します。
  $BS_AUTORADIOBUTTON - ユーザーが選択した際にボタンが自動でハイライトされ同じグループ、同じスタイルの他のラジオボタンの選択が取り消される以外はラジオボタンと同じ。
  $BS_FLAT - 指定するとボタンが2次元的になります。3D画像作成のデフォルトシェーディングは使用されません。
  $BS_GROUPBOX - 他のボタンをグループ分けする長方形を作成します。このスタイルに関連付けられたテキストが長方形の左上隅に表示されます。
  $BS_PUSHLIKE - プッシュボタン風の外見、動作のボタン(チェックボックス、三状態チェックボックス、ラジオボタン)を作成します。ボタンは押されていない、チェックされていない場合上がっていて押されている、チェックされている場合沈み込んでいるように見えます。
  $BS_DEFPUSHBUTTON - 太い黒枠をもつプッシュボタンを作成します。ボタンがダイアログボックス内にある場合、ボタンに入力フォーカスが合っていない場合でもユーザーはENTERキーを押すことでボタンを選択できます。このスタイルはユーザーにすばやく通常のオプションまたはデフォルト選択することを可能にさせ、便利です。
  $BS_BOTTOM - ボタン長方形の底部にテキストを配置します。
  $BS_CENTER - ボタン長方形の水平方向中央にテキストを揃えます。
  $BS_LEFT - チェックボックス右側のボタン長方形のテキストを左揃えにします。
  $BS_MULTILINE - テキスト文字列がボタン長方形に1行で収まりきらない場合、ボタンテキストを複数行にします。
  $BS_RIGHT - チェックボックス右側のボタン長方形のテキストを右揃えにします。
  $BS_RIGHTBUTTON - ボタン長方形の右側にチェックボックス欄を配置します。
  $BS_TOP - ボタン長方形の上部にテキストを配置します。
  $BS_VCENTER - ボタン長方形の垂直方向中央にテキストを揃えます。
  $BS_ICON - ボタンにアイコンを表示するように指定します。
  $BS_BITMAP - ボタンにビットマップを表示するように指定します。
  $BS_NOTIFY - ボタンがBN_KILLFOCUSとBN_SETFOCUS通知メッセージを親ウィンドウに送信できるようにします。 ボタンはこのスタイルを持っているかどうかに関係なくBN_CLICKED通知メッセージを送信することに注意してください。 BN_DBLCLK通知メッセージを取得するためには、ボタンにBS_RADIOBUTTONスタイルとBS_OWNERDRAWスタイルが設定されている必要があります。
  Vista Sytles:
    $BS_SPLITBUTTON - スプリットボタンを作成します。スプリットボタンはドロップダウン用の矢印を持ちます。
    $BS_DEFSPLITBUTTON - 外見は異なりますが$BS_PUSHBUTTONスタイルのボタンと同じように動作するスプリットボタンを作成します。
    $BS_COMMANDLINK - コマンドリンクボタンを作成します。
    $BS_DEFCOMMANDLINK - $BS_PUSHBUTTONスタイルのボタンと同じように動作するコマンドリンクボタンを作成します。
デフォルト : ( -1) : なし
強制 : $WS_CHILD$WS_TABSTOP$WS_VISIBLE$BS_NOTIFY
$iExStyle [オプション]コントロール拡張スタイル。これらは標準の$WS_EX_定数と対応します。

 

返し値

成功: ボタンコントロールのハンドル
失敗: 0

 

注意

上記の定数はButtonConstants.au3を必要とします。

この関数は上級者、コントロール動作学習用です。

 

関連

_GUICtrlButton_Destroy

 


#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <WindowsConstants.au3>

Opt("MustDeclareVars", 1)

Global $btn, $rdo, $chk, $iMemo

; これらのボタンのIDはGuiCtrlReadでは読み取れないことに注意

_Main()

Func _Main()
    Local $hGUI

    $hGUI = GUICreate("Buttons", 400, 400)
    $iMemo = GUICtrlCreateEdit("", 119, 10, 276, 374, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")

    $btn = _GUICtrlButton_Create($hGUI, "Button1", 10, 10, 90, 50)

    $rdo = _GUICtrlButton_Create($hGUI, "Radio1", 10, 60, 90, 50, $BS_AUTORADIOBUTTON)

    $chk = _GUICtrlButton_Create($hGUI, "Check1", 10, 120, 90, 50, $BS_AUTO3STATE)

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
   
    GUISetState()

    MemoWrite("$btn handle: " & $btn)
    MemoWrite("$rdo handle: " & $rdo)
    MemoWrite("$chk handle: " & $chk & @CRLF)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd

    Exit

EndFunc   ;==>_Main


; メモコントロールに1行書き込み
Func MemoWrite($sMessage)
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite

Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
    #forceref $hWnd, $Msg, $wParam
    Local Const $BCN_HOTITEMCHANGE = -1249
    Local $tNMBHOTITEM = DllStructCreate("hwnd hWndFrom;int IDFrom;int Code;dword dwFlags", $lParam)
    Local $nNotifyCode = DllStructGetData($tNMBHOTITEM, "Code")
    Local $nID = DllStructGetData($tNMBHOTITEM, "IDFrom")
    Local $hCtrl = DllStructGetData($tNMBHOTITEM, "hWndFrom")
    Local $dwFlags = DllStructGetData($tNMBHOTITEM, "dwFlags")
    Local $sText = ""
   
    Switch $nNotifyCode
        Case $BCN_HOTITEMCHANGE ; WinXP以上
            If BitAND($dwFlags, 0x10) = 0x10 Then
                $sText = "$BCN_HOTITEMCHANGE - Entering: " & @CRLF
               
            ElseIf BitAND($dwFlags, 0x20) = 0x20 Then
                $sText = "$BCN_HOTITEMCHANGE - Leaving: " & @CRLF
            EndIf
            MemoWrite($sText & _
                    "-----------------------------" & @CRLF & _
                    "WM_NOTIFY - Infos:" & @CRLF & _
                    "-----------------------------" & @CRLF & _
                    "Code" & @TAB & ":" & $nNotifyCode & @CRLF & _
                    "CtrlID" & @TAB & ":" & $nID & @CRLF & _
                    "CtrlHWnd:" & $hCtrl & @CRLF & _
                    _GUICtrlButton_GetText($hCtrl) & @CRLF)
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

; ボタンクリックに反応
Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    #forceref $hWnd, $Msg
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $nID = BitAND($wParam, 0x0000FFFF)
    Local $hCtrl = $lParam
    Local $sText = ""
   
    Switch $hCtrl
        Case $btn, $rdo, $chk
            Switch $nNotifyCode
                Case $BN_CLICKED
                    $sText = "$BN_CLICKED" & @CRLF
                Case $BN_PAINT
                    $sText = "$BN_PAINT" & @CRLF
                Case $BN_PUSHED, $BN_HILITE
                    $sText = "$BN_PUSHED, $BN_HILITE" & @CRLF
                Case $BN_UNPUSHED, $BN_UNHILITE
                    $sText = "$BN_UNPUSHED" & @CRLF
                Case $BN_DISABLE
                    $sText = "$BN_DISABLE" & @CRLF
                Case $BN_DBLCLK, $BN_DOUBLECLICKED
                    $sText = "$BN_DBLCLK, $BN_DOUBLECLICKED" & @CRLF
                Case $BN_SETFOCUS
                    $sText = "$BN_SETFOCUS" & @CRLF
                Case $BN_KILLFOCUS
                    $sText = "$BN_KILLFOCUS" & @CRLF
            EndSwitch
            MemoWrite($sText & _
                    "-----------------------------" & @CRLF & _
                    "WM_COMMAND - Infos:" & @CRLF & _
                    "-----------------------------" & @CRLF & _
                    "Code" & @TAB & ":" & $nNotifyCode & @CRLF & _
                    "CtrlID" & @TAB & ":" & $nID & @CRLF & _
                    "CtrlHWnd:" & $hCtrl & @CRLF & _
                    _GUICtrlButton_GetText($hCtrl) & @CRLF)
            Return 0 ; ボタンクリック時のみ動作
    EndSwitch
    ; デフォルトのAutoit3内部メッセージコマンドを続行
    ; ラインアウトで完了することもできる
    ; !!!ただし'Return'(値なし)だけは新しいデフォルトのAutoit3メッセージ
    ; を続行できない!!!
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND