Когда создаётся дочернее окно, даже с расширенным стилем $WS_EX_TOPMOST, контролы в родительском окне остаются кликабельны.
Вот простой пример. Основная (родительская) форма с кнопкой. По нажатию кнопки - создаётся дочерняя форма. Она располагается всегда поверх родительской, однако кнопку в родительской форме можно нажать. Я обхожу эту проблему, отключая ($GUI_DISABLE) кнопку при вызове дочерней формы (отмечено комментариями). Но это некрасиво. Как сделать так чтобы кнопка оставалась включенной, но при этом недоступной для нажатия ?
Вот простой пример. Основная (родительская) форма с кнопкой. По нажатию кнопки - создаётся дочерняя форма. Она располагается всегда поверх родительской, однако кнопку в родительской форме можно нажать. Я обхожу эту проблему, отключая ($GUI_DISABLE) кнопку при вызове дочерней формы (отмечено комментариями). Но это некрасиво. Как сделать так чтобы кнопка оставалась включенной, но при этом недоступной для нажатия ?
Код:
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
$main = GuiCreate ("MAIN", 300, 300, 100, 100)
$run = GUICtrlCreateButton ("RUN", 50, 50, 200, 200)
GuiSetState (@SW_SHOW)
Do
$msg = GuiGetMsg (1)
Select
Case ($msg[0] = $run)
GUICtrlSetState ($run, $GUI_DISABLE) ; Отключаю кнопку
$child = GUICreate ("CHILD", 200, 200, 400, 400, -1, $WS_EX_TOPMOST, $main)
GuiSetState (@SW_SHOW)
Do
$msg = GuiGetMsg (1)
Until ($msg[0] = $GUI_EVENT_CLOSE) AND ($msg[1] = $child)
GUISwitch ($child)
GUIDelete ()
GUICtrlSetState ($run, $GUI_ENABLE) ; Включаю кнопку
EndSelect
Until ($msg[0] = $GUI_EVENT_CLOSE) AND ($msg[1] = $main)
GUISwitch ($main)
GUIDelete ()