Что нового

Сворачивание по событию GUI_EVENT_MINIMIZE и разворачивание по клику в трее

GegeMON

Новичок
Сообщения
4
Репутация
0
Доброго времени суток.

Пытаюсь свести воедино эти два куска кода (сворачивание осилил, а вот с разворачиванием возникли проблемы)

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>

Opt('GUIOnEventMode', 1)
Opt('TrayOnEventMode', 1)
Opt('TrayMenuMode', 1)

    $hMainGUI = GUICreate("Test", 320, 185)
    Local $list = GUICtrlCreateEdit("", 10, 5, 300, 150)
    Local $btn = GUICtrlCreateButton("Test", 10, 160, 300, 20)

    TraySetClick(0)
    TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, '_ShowGUI')
    HotKeySet('{HOME}','_ShowGUI')
    GUISetState(@SW_SHOW, $hMainGUI)

Func _ShowGUI()
    Switch BitAND(WinGetState($hMainGUI), 2)
        Case  2
            GUISetState(@SW_HIDE, $hMainGUI)
        case 0
            GUISetState(@SW_SHOW, $hMainGUI)
    EndSwitch
EndFunc

While 1
    Sleep(10)
WEnd

Код:
Test()

Func Test()
    $hMainGUI = GUICreate("Test", 320, 185)
    Local $list = GUICtrlCreateEdit("", 10, 5, 300, 150)
    Local $btn = GUICtrlCreateButton("Test", 10, 160, 300, 20)

    GUISetState(@SW_SHOW)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_MINIMIZE
                GUISetState(@SW_HIDE)
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $btn
                    MsgBox(0, Default, "123456", 0, $hMainGUI)
                ExitLoop
        EndSwitch
    WEnd

EndFunc

но каменный цветок увы не выходит. Если я убираю блоки

Код:
GUISetState(@SW_SHOW, $hMainGUI)

Код:
$hMainGUI = GUICreate("Test", 320, 185)
Local $list = GUICtrlCreateEdit("", 10, 5, 300, 150)
Local $btn = GUICtrlCreateButton("Test", 10, 160, 300, 20)

Код:
While 1
    Sleep(10)
WEnd

и вставляю функцию Test(), с while без таймаутов, то получаю вечный loop и перегруз CPU. Если вставляю таймаут - функция перестаёт работать. по отдельности всё работает. Вместе - нет :(
 
Последнее редактирование:
Верх