В приложении есть два окна (второе окно - дочернее к первому).
В основном теле скрипта зарегистрировал реакцию для события GUIRegisterMsg($WM_LBUTTONDOWN, "FN_CUSTOM")
При отработке скрипта событие WM_LBUTTONDOWN обрабатывается как для дочернего, так и для родительского окна
Нужно сделать реакцию на событие только для дочернего окна. Как это можно сделать?
Фильтровать по хендлу окон (как в примере ниже) не вариант - в моей программе окна создаются динамически и сравнить хендлы достаточно неудобно и не красиво.
В основном теле скрипта зарегистрировал реакцию для события GUIRegisterMsg($WM_LBUTTONDOWN, "FN_CUSTOM")
При отработке скрипта событие WM_LBUTTONDOWN обрабатывается как для дочернего, так и для родительского окна
Нужно сделать реакцию на событие только для дочернего окна. Как это можно сделать?
Фильтровать по хендлу окон (как в примере ниже) не вариант - в моей программе окна создаются динамически и сравнить хендлы достаточно неудобно и не красиво.
Код:
#include <WindowsConstants.au3>
Global $GUI_NAME = "test"
$hDlg = GUICreate($GUI_NAME, 400, 400, -1, -1, -1)
$hcDlg = GUICreate('Accept', 200, 200, -1, - 1, -1, -1, $hDlg)
GUIRegisterMsg($WM_LBUTTONDOWN, "FN_CUSTOM")
GUISetState(@SW_SHOW, $hDlg)
GUISetState(@SW_SHOW, $hcDlg)
while 1
Sleep(50)
WEnd
Func FN_CUSTOM($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $lParam
$fFuncName = '! '
ConsoleWrite($fFuncName & " $hWnd = " & $hWnd & @CRLF)
Switch $hWnd
case $hDlg
ConsoleWrite($fFuncName & " MAIN" & @CRLF)
Case $hcDlg
ConsoleWrite($fFuncName & " Child" & @CRLF)
EndSwitch
EndFunc