229989799 发表于 2018-10-17 10:28:55

【已解决】如何让button双击才执行程序呢?

本帖最后由 229989799 于 2018-10-17 11:30 编辑

一般都是单击$Button1就执行程序,如何才能双击执行,单击不做任何操作。请问下大家。

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 438, 192, 124)
$Button1 = GUICtrlCreateButton("Button1", 184, 160, 147, 57)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                case $Button1
                        MsgBox(0,"","你双击了button1")
                Case $GUI_EVENT_CLOSE
                        Exit

      EndSwitch
WEnd


多谢大神们解答。多谢三楼木子{:face (293):}

绿色风 发表于 2018-10-17 10:43:07

加个变量记次

水木子 发表于 2018-10-17 11:17:15

本帖最后由 水木子 于 2018-10-17 11:25 编辑

#include <WinAPIex.au3>
#include <WindowsConstants.au3>

GUICreate('', 400, 300)
$Button1 = GUICtrlCreateButton('Button1', 100, 100, 200, 50)

$handle1 = DllCallbackRegister('_Button_Events', 'ptr', 'hwnd;uint;long;ptr')
$handle2 = _WinAPI_SetWindowLong(GUICtrlGetHandle($Button1), $GWL_WNDPROC, DllCallbackGetPtr($handle1))
GUISetState()

While 1
        Switch GUIGetMsg()
                Case $Button1
                        ;MsgBox(0, '测试', '左键点击')
                Case -3
                        GUIDelete()
                        DllCallbackFree($handle1)
                        Exit
        EndSwitch
WEnd

Func _Button_Events($hWnd, $uiMsg, $wParam, $lParam)
        Switch $uiMsg
                Case $WM_LBUTTONDBLCLK ; 左键双击
                        MsgBox(0, '', '你双击了button1')
                Case $WM_RBUTTONDOWN ; 右键按下
                        MsgBox(64, '', '鼠标右键点击')
        EndSwitch
        Return _WinAPI_CallWindowProc($handle2, $hWnd, $uiMsg, $wParam, $lParam)
EndFunc   ;==>_Button_Events

kk_lee69 发表于 2018-10-17 11:32:22

#include <GUIConstants.au3>
Opt("MustDeclareVars", 1)

Global Const $DebugIt = 1
;~ Global Const $WM_COMMAND = 0x0111
Global $Hovered = 0
Global $Button, $status, $Label

_Main()

Func _Main()
    Local $x = 48, $y = 88, $msg, $Form2

    $Form2 = GUICreate("Blash", 716, 561, 155, 134, BitOR($WS_MAXIMIZEBOX, $WS_SIZEBOX, $WS_THICKFRAME, $WS_OVERLAPPEDWINDOW, $WS_TILEDWINDOW, $WS_TABSTOP))

    $Button = GUICtrlCreateButton("Button Test", 10, 10, 89, 41, $BS_NOTIFY)
    $Label = GUICtrlCreateLabel("Label Test", 10, 60, 120, 22, BitOR($SS_NOTIFY, $SS_SUNKEN, $SS_CENTER))
   
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    GUISetState(@SW_SHOW)
    While 1
      $msg = GUIGetMsg()
      Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
      EndSelect
    WEnd
EndFunc   ;==>_Main

Func Button_Click(ByRef $ctrl_id)
;~_DebugPrint("Button_Click")
EndFunc   ;==>Button_Click

Func Button_DblClick(ByRef $ctrl_id)
;~_DebugPrint("Button_DblClick")
    MsgBox(0, "Test", "Button_DblClick")
EndFunc   ;==>Button_DblClick

Func Label_Click(ByRef $ctrl_id)
    _DebugPrint("Label_Click")
EndFunc   ;==>Label_Click

Func Label_DblClick(ByRef $ctrl_id)
;~_DebugPrint("Button_DblClick")
    MsgBox(0, "Test", "Label_DblClick")
EndFunc   ;==>Label_DblClick

Func _LoWord($x)
    Return BitAND($x, 0xFFFF)
EndFunc   ;==>_LoWord

Func _HiWord($x)
    Return BitShift($x, 16)
EndFunc   ;==>_HiWord

Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    Local Const $BN_CLICKED = 0;
    Local Const $BN_PAINT = 1;
    Local Const $BN_HILITE = 2;
    Local Const $BN_PUSHED = $BN_HILITE;
    Local Const $BN_UNHILITE = 3;
    Local Const $BN_UNPUSHED = $BN_UNHILITE;
    Local Const $BN_DISABLE = 4;
    Local Const $BN_DOUBLECLICKED = 5;
    Local Const $BN_DBLCLK = $BN_DOUBLECLICKED;
    Local Const $BN_SETFOCUS = 6;
    Local Const $BN_KILLFOCUS = 7;

    Local Const $STN_CLICKED = 0
    Local Const $STN_DBLCLK = 1
    Local Const $STN_DISABLE = 3
    Local Const $STN_ENABLE = 2

    Local $nNotifyCode = _HiWord($wParam)
    Local $nID = _LoWord($wParam)
    Local $hCtrl = $lParam
   
    If $nID <> 2 Then
      Switch $nID
            Case $Button
                Switch $nNotifyCode
                  Case $BN_CLICKED
                        _DebugPrint("$BN_CLICKED: " & @LF & "GUIHWnd" & @TAB & ":" & $hWnd & @LF & _
                              "MsgID" & @TAB & ":" & $msg & @LF & _
                              "wParam" & @TAB & ":" & $wParam & @LF & _
                              "lParam" & @TAB & ":" & $lParam & @LF & @LF & _
                              "WM_COMMAND - Infos:" & @LF & _
                              "-----------------------------" & @LF & _
                              "Code" & @TAB & ":" & $nNotifyCode & @LF & _
                              "CtrlID" & @TAB & ":" & $nID & @LF & _
                              "CtrlHWnd" & @TAB & ":" & $hCtrl)
                        Button_Click($nID)
                  Case $BN_PAINT
                        _DebugPrint("$BN_PAINT")
                  Case $BN_PUSHED, $BN_HILITE
                        _DebugPrint("$BN_PUSHED, $BN_HILITE")
                  Case $BN_UNPUSHED, $BN_UNHILITE
                        _DebugPrint("$BN_UNPUSHED")
                  Case $BN_DISABLE
                        _DebugPrint("$BN_DISABLE")
                  Case $BN_DBLCLK, $BN_DOUBLECLICKED
;~                     _DebugPrint("$BN_DBLCLK, $BN_DOUBLECLICKED")
                        _DebugPrint("$BN_CLICKED: " & @LF & "GUIHWnd" & @TAB & ":" & $hWnd & @LF & _
                              "MsgID" & @TAB & ":" & $msg & @LF & _
                              "wParam" & @TAB & ":" & $wParam & @LF & _
                              "lParam" & @TAB & ":" & $lParam & @LF & @LF & _
                              "WM_COMMAND - Infos:" & @LF & _
                              "-----------------------------" & @LF & _
                              "Code" & @TAB & ":" & $nNotifyCode & @LF & _
                              "CtrlID" & @TAB & ":" & $nID & @LF & _
                              "CtrlHWnd" & @TAB & ":" & $hCtrl)
                        Button_DblClick($nID)
                  Case $BN_SETFOCUS
                        _DebugPrint("$BN_SETFOCUS")
                  Case $BN_KILLFOCUS
                        _DebugPrint("$BN_KILLFOCUS")
                EndSwitch
            Case $Label
                Switch $nNotifyCode
                  Case $STN_CLICKED
;~                     _DebugPrint("$STN_CLICKED: " & @LF & "GUIHWnd" & @TAB & ":" & $hwnd & @LF & _
;~                                                                  "MsgID" & @TAB & ":" & $Msg & @LF & _
;~                                                                  "wParam" & @TAB & ":" & $wParam & @LF & _
;~                                                                  "lParam" & @TAB & ":" & $lParam & @LF & @LF & _
;~                                                                  "WM_COMMAND - Infos:" & @LF & _
;~                                                                  "-----------------------------" & @LF & _
;~                                                                  "Code" & @TAB & ":" & $nNotifyCode & @LF & _
;~                                                                  "CtrlID" & @TAB & ":" & $nID & @LF & _
;~                                                                  "CtrlHWnd" & @TAB & ":" & $hCtrl)
                        Label_Click($nID)
                  Case $STN_DISABLE
                        _DebugPrint("$STN_DISABLE")
                  Case $STN_ENABLE
                        _DebugPrint("$STN_ENABLE")
                  Case $STN_DBLCLK
;~                     _DebugPrint("$STN_DBLCLK")
                        _DebugPrint("$STN_DBLCLK: " & @LF & "GUIHWnd" & @TAB & ":" & $hWnd & @LF & _
                              "MsgID" & @TAB & ":" & $msg & @LF & _
                              "wParam" & @TAB & ":" & $wParam & @LF & _
                              "lParam" & @TAB & ":" & $lParam & @LF & @LF & _
                              "WM_COMMAND - Infos:" & @LF & _
                              "-----------------------------" & @LF & _
                              "Code" & @TAB & ":" & $nNotifyCode & @LF & _
                              "CtrlID" & @TAB & ":" & $nID & @LF & _
                              "CtrlHWnd" & @TAB & ":" & $hCtrl)
                        Label_DblClick($nID)
                EndSwitch
      EndSwitch
    EndIf
    ; Proceed the default Autoit3 internal message commands.
    ; You also can complete let the line out.
    ; !!! But only 'Return' (without any value) will not proceed
    ; the default Autoit3-message in the future !!!
;~   Return $GUI_RUNDEFMSG
EndFunc   ;==>MY_WM_COMMAND

Func _DebugPrint($s_text)
    $s_text = StringReplace($s_text, @LF, @LF & "-->")
    ConsoleWrite( _
            "!===========================================================" & @LF & _
            "+===========================================================" & @LF & _
            "-->" & $s_text & @LF & _
            "+===========================================================" & @LF)
EndFunc   ;==>_DebugPrint

页: [1]
查看完整版本: 【已解决】如何让button双击才执行程序呢?