running-frag
why me?
- Сообщения
- 441
- Репутация
- 60
В общем всё пашет, но как всегда есть но. Что то меня не радует реализация главного цикла, а именно начиная с
Идея такая, я хочу что бы обьявляя переменные (под типом Global в _GUI_SettingsWindowCreate ()) у меня не кричало в главном цикле на те переменные которы не обьявлены. Как лучше это реализовать? Так же подправьте кто увидел косяки.
Можно ли это как то реализовать более красиво, (ну хотя бы без WinGetTitle()), т.е. может какое то самоопределение какое окно сейчас используется .... В общем буду рад любым подсказкам на счёт кода выше.
Код:
Case $hAction[1] = $hGUI_settings
Select
Case WinGetTitle ($hGUI_settings) == "some2"
Идея такая, я хочу что бы обьявляя переменные (под типом Global в _GUI_SettingsWindowCreate ()) у меня не кричало в главном цикле на те переменные которы не обьявлены. Как лучше это реализовать? Так же подправьте кто увидел косяки.
Код:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
script.GUI
#ce ----------------------------------------------------------------------------
#include <WindowsConstants.au3> ; $WS_POPUPWINDOW | $WS_EX_TOOLWINDOW
#include <GUIConstantsEx.au3> ; $GUI_EVENT_CLOSE
#include <StaticConstants.au3> ; $SS_CENTER | $SS_CENTERIMAGE
#include <Array.au3>
Global $hAction
Global $hGUI = GUICreate ("jaguar", 50, 75, 10, 10, $WS_POPUPWINDOW, $WS_EX_TOOLWINDOW)
Global $hGUI_settings
Local $hMainMenu = GUICtrlCreateLabel ("Main", 4, 5, 40, 15, BitOR ($SS_CENTER, $SS_CENTERIMAGE), $GUI_WS_EX_PARENTDRAG)
GUICtrlSetBkColor (-1, 0xffffff)
Local $hM1Menu = GUICtrlCreateButton ("m1", 4, 30, 40, 15)
Local $hM2Menu = GUICtrlCreateButton ("m2", 4, 55, 40, 15)
GUISetState (@SW_SHOW, $hGui)
Func _GUI_SettingsWindowCreate ($_winName)
$hGUI_settings = GUICreate ($_winName, 100, 100, 60, 0, $WS_POPUPWINDOW, BitOR ($WS_EX_TOOLWINDOW, $WS_EX_MDICHILD), $hGUI)
Select
Case $_winName == "some1"
GUICtrlCreateLabel ("text", 10, 10, 30, 10)
Global $hGUI_settingsApply = GUICtrlCreateButton ("edit char", 10,30,50,30)
Case $_winName == "some2"
GUICtrlCreateLabel ("some2", 10, 10, 30, 10)
Global $hGUI_settingsApply = GUICtrlCreateButton ("apply", 10,30,50,30)
EndSelect
GUISetState (@SW_SHOW, $hGUI_settings)
EndFunc
Func _GUI_SettingsWindowClear ()
If $hGUI_settings Then
GUIDelete ($hGUI_settings)
Else
ConsoleWrite ("gui is False"&@CR)
EndIf
EndFunc
While True
$hAction = GUIGetMsg (1)
If Not $hAction[0] Then ContinueLoop
Select
Case $hAction[1] = $hGUI And $hAction[0] = $GUI_EVENT_CLOSE
ExitLoop
Case $hAction[1] = $hGUI And $hAction[0] = $hM1Menu
_GUI_SettingsWindowClear ()
_GUI_SettingsWindowCreate ("some1")
Case $hAction[1] = $hGUI And $hAction[0] = $hM2Menu
_GUI_SettingsWindowClear ()
_GUI_SettingsWindowCreate ("some2")
Case $hAction[1] = $hGUI_settings
Select
Case WinGetTitle ($hGUI_settings) == "some2"
If $hAction[0] = $hGUI_settingsApply Then MsgBox (0,0, "some text")
Case WinGetTitle ($hGUI_settings) == "some1"
If $hAction[0] = $hGUI_settingsApply Then MsgBox (0,0, "editing character")
EndSelect
EndSelect
WEnd
Можно ли это как то реализовать более красиво, (ну хотя бы без WinGetTitle()), т.е. может какое то самоопределение какое окно сейчас используется .... В общем буду рад любым подсказкам на счёт кода выше.