Что нового

[Баг] Элементы перестают реагировать после скрытия и отображения GUI

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,484
Немного изменённый пример из справки.

Тут я всего лишь скрыл и отобразил окно, это кстати всплыло когда я пытался сделать сворачивание в трей и восстановление оттуда - в моём случае горячие клавиши перестали работать, поэтому я и полез копаться в GUISetAccelerators, хотя дело не в ней.
Заметьте, спрятал я окно через GUISetState, а отобразил через WinSetState. Если использовать что-то то одно, то проблемы не возникает, но всё же мне кажется что это неправильное поведение, элементы не должны так переставать реагировать.

Код:
; A simple custom messagebox that uses the MessageLoop mode

#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Custom Msgbox", 210, 80)

GUICtrlCreateLabel("Please click a button!", 10, 10)
$YesID = GUICtrlCreateButton("Yes", 10, 50, 50, 20)
$NoID = GUICtrlCreateButton("No", 80, 50, 50, 20)
$ExitID = GUICtrlCreateButton("Exit", 150, 50, 50, 20)

; Set accelerators for Ctrl+y and Ctrl+n
Dim $AccelKeys[2][2]=[["^y", $YesID], ["^n", $NoID]]
GUISetAccelerators($AccelKeys)

GUISetState(@SW_SHOW)  ; display the GUI

;========================= Imitation of hiding and restoring the GUI =========================
GUISetState(@SW_HIDE)
WinSetState($hGUI, "", @SW_SHOW)
;========================= Imitation of hiding and restoring the GUI =========================

Do
	$msg = GUIGetMsg()

	Select
		Case $msg = $YesID
			MsgBox(0, "You clicked on", "Yes")
		Case $msg = $NoID
			MsgBox(0, "You clicked on", "No")
		Case $msg = $ExitID
			MsgBox(0, "You clicked on", "Exit")
		Case $msg = $GUI_EVENT_CLOSE
			MsgBox(0, "You clicked on", "Close")
	EndSelect
Until $msg = $GUI_EVENT_CLOSE Or $msg = $ExitID
 
Верх