-TRM-, твой скомпилированный работает.
Выложи au3 свой, пожалуйста.
[решено] Объединение нескольких GUI в один файл au3
-
-TRM-
Re: [решено] Объединение нескольких GUI в один файл au3
sLiDeR-X,
Цитата sLiDeR-X:
-TRM-, твой скомпилированный работает.
Выложи au3 свой, пожалуйста.
Цитата sLiDeR-X:
-TRM-, твой скомпилированный работает.
Выложи au3 свой, пожалуйста.
[решено] Объединение нескольких GUI в один файл au3
- Вложения
-
- Dispatcher_au3.rar
- (3.87 КБ) 0 скачиваний
- Dispatcher_au3.rar
- (3.87 КБ) 0 скачиваний
-
sLiDeR-X
Re: [решено] Объединение нескольких GUI в один файл au3
-TRM-, ты сделал на первых выложенных файлах. В шапке сейчас другие уже. Там GUI окна работают по ключу Opt("GUIOnEventMode", 1).
Сделал по аналогии, как сделал ты - у меня ошибки появляются, программа работает не корректно. Я так понял загвоздка именно из-за GUIOnEventMode=1.
Вот как сделал я:
Сделал по аналогии, как сделал ты - у меня ошибки появляются, программа работает не корректно. Я так понял загвоздка именно из-за GUIOnEventMode=1.
Вот как сделал я:
- Вложения
- Вложения
-
- Dispatcher.zip
- (4.31 КБ) 0 скачиваний
- Dispatcher.zip
- (4.31 КБ) 0 скачиваний
-
sLiDeR-X
Re: [решено] Объединение нескольких GUI в один файл au3
Если отбросить работу самой программы, то как сделать вот это (хочу понять сам принцип):
Поправьте код
Код:
Поправьте код
Код:
Код: Выделить всё
#include ;Стиль окон GUI
#include ;Раширенный стили GUI
TraySetToolTip('Название')
Opt("TrayMenuMode", 1 + 2)
Opt("TrayOnEventMode", 1)
TraySetState(1)
$iRegistration = TrayCreateItem('Регистрация программы')
TrayItemSetOnEvent(-1, "_Registration")
$iExit = TrayCreateItem('Выход')
TrayItemSetOnEvent(-1, '_Quit')
;Программа запущена в трее и выполняет _SomeFunc() раз в 3 секунды
While 1
_SomeFunc()
Sleep(3000)
WEnd
Func _SomeFunc()
;Основная работа программы
ConsoleWrite('Основной цикл' & @LF)
EndFunc
;Функция вызова GUI окна. После отработки должно исчезнуть, а программа должна продолжить работать по основному циклу.
Func _Registration()
Opt("GUIOnEventMode", 1)
$hGui = GUICreate('Регистрация программы', 370, 225)
GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSEClicked")
$BtnOk = GUICtrlCreateButton("ОК", 250, 190, 100, 25)
GUICtrlSetOnEvent($BtnOk, "_OKButton")
GUISetState()
While 1
Sleep(1000)
WEnd
EndFunc
Func _CLOSEClicked()
If @GUI_WinHandle = $hGui Then
;Закрыть окно и продолжить основной цикл
EndIf
EndFunc
Func _OKButton()
MsgBox(4096 + 64, '', 'Регистрация произведена!')
;Выполнить некоторые операции, закрыть окно и продолжить основной цикл
EndFunc
Func _Quit()
Exit
EndFunc-
madmasles
Re: [решено] Объединение нескольких GUI в один файл au3
sLiDeR-X,
ИМХО, нет смысла дублировать темы на разных форумах. Я начинаю путаться, где Вам отвечать.
ИМХО, нет смысла дублировать темы на разных форумах. Я начинаю путаться, где Вам отвечать.

-
sLiDeR-X
Re: [решено] Объединение нескольких GUI в один файл au3
madmasles, благодарю за помощь!
Хотя я уже сделал немного по другому - обошелся без GUIOnEventMode=1 и сделал через While и GUIGetMsg
Вот ответ на мой вопрос:
Код:
Хотя я уже сделал немного по другому - обошелся без GUIOnEventMode=1 и сделал через While и GUIGetMsg
Вот ответ на мой вопрос:
Код:
Код: Выделить всё
#NoTrayIcon
#include ;Стиль окон GUI
#include ;Раширенный стили GUI
Opt("TrayMenuMode", 1 + 2)
Opt("TrayOnEventMode", 1)
Opt("GUIOnEventMode", 1)
TrayCreateItem('Регистрация программы')
TrayItemSetOnEvent(-1, "_Registration")
TrayCreateItem('Выход')
TrayItemSetOnEvent(-1, '_Quit')
TraySetToolTip('Название')
TraySetState(1)
;Программа запущена в трее и выполняет _SomeFunc() раз в 3 секунды
While 1
_SomeFunc()
Sleep(3000)
WEnd
Func _SomeFunc()
;Основная работа программы
Sleep(500)
ConsoleWrite('Основной цикл' & @LF)
EndFunc ;==>_SomeFunc
;Функция вызова GUI окна. После отработки должно исчезнуть, а программа должна продолжить работать по основному циклу.
Func _Registration()
GUICreate('Регистрация программы', 370, 225)
GUISetOnEvent($GUI_EVENT_CLOSE, "_CLOSEClicked")
GUICtrlCreateButton("ОК", 250, 190, 100, 25)
GUICtrlSetOnEvent(-1, "_OKButton")
GUISetState()
EndFunc ;==>_Registration
Func _CLOSEClicked()
GUIDelete(@GUI_WinHandle)
EndFunc ;==>_CLOSEClicked
Func _OKButton()
MsgBox(4096 + 64, '', 'Регистрация произведена!', 0, @GUI_WinHandle)
;Выполнить некоторые операции, закрыть окно и продолжить основной цикл
EndFunc ;==>_OKButton
Func _Quit()
Exit
EndFunc ;==>_Quit