Всем привет
Код (ниже) в принципе работает, но если сделать форму не активной, а потом произвести клик по Label срабатывает двойной клик, хотя не должен. Как это можно исправить?
Код (ниже) в принципе работает, но если сделать форму не активной, а потом произвести клик по Label срабатывает двойной клик, хотя не должен. Как это можно исправить?
Код:
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <WinApi.au3>
Global $hGUI = GUICreate("Double Click", 144, 144)
WinSetOnTop($hGUI,'',1)
Global $lblLabel = GUICtrlCreateLabel("Double click this!", 10, 10)
Global $hWnd_wndproc = DllCallbackRegister("NewWndProc", "ptr", "hwnd;uint;wparam;lparam")
Global $ptr_new_wndproc = DllCallbackGetPtr($hWnd_wndproc)
Global $ptr_old_wndproc = _WinAPI_SetWindowLong(GUICtrlGetHandle($lblLabel), $GWL_WNDPROC, $ptr_new_wndproc)
GUISetState(@SW_SHOW, $hGUI)
While (True)
Switch (GUIGetMsg())
Case $GUI_EVENT_CLOSE
GUIDelete($hGUI)
DllCallbackFree($hWnd_wndproc)
Exit 0
;~ Case $lblLabel
;~ ConsoleWrite("Label clicked" & @LF)
EndSwitch
WEnd
Func NewWndProc($hWndFrom, $iMsg, $wParam, $lParam)
Switch $hWndFrom
Case GUICtrlGetHandle($lblLabel)
Switch $iMsg
Case $WM_LBUTTONDBLCLK
ConsoleWrite("ButtonDBlclk" & @LF)
MsgBox("", "Double Click!", "You double clicked my label!")
Case $WM_LBUTTONDOWN
ConsoleWrite("ButtonDown" & @LF)
EndSwitch
EndSwitch
Return _WinAPI_CallWindowProc($ptr_old_wndproc, $hWndFrom, $iMsg, $wParam, $lParam)
EndFunc ;==>NewWndProc