Итак, я написал это для имитации программы, которая будет иметь функцию запуска и остановки и имеет tab design
.Прямо сейчас есть вкладка с объектом RichEdit
, предназначенным для запуска журнала.
Как вы можете видеть, после того, как мы "запустили" программу, я положил всего несколько миллисекунд sleep
для имитации запускаинструкции.Я создал функцию для проверки запросов, которые будут вызываться в большем масштабе случайным образом по всему коду, чтобы пропинговать GUI
за слово.
#include <GUIConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <WindowsConstants.au3>
Global Const $h_numOfTabs = 2
Global Enum $H_TAB_1, $H_TAB_2, $H_TAB_END
Global $hGui, $h_logRichEdit, $iMsg, $h_tabs, $h_startButton, $h_stopButton
Example()
Func Example()
$hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, StringLen(".exe")) & ")", 400, 550, -1, -1)
; ADD START AND STOP BUTTONS
$h_startButton = GUICtrlCreateButton( "Start", 50, 450 )
$h_stopButton = GUICtrlCreateButton( "Stop", 150, 450 )
$h_tabs = GUICtrlCreateTab( 5, 5, 390,375 )
; LOG TAB
GUICtrlCreateTabItem( "Log" )
$h_logRichEdit = _GUICtrlRichEdit_Create ( $hGui, "", 8, 30, 384, 347, BitOR( $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL, $ES_READONLY ) )
; STATS TAB
GUICtrlCreateTabItem( "Stats" )
; Close TABS
GUICtrlCreateTabItem( "" )
GUISetState( @SW_SHOW ) ; initialize the gui
While True
CheckRequests()
WEnd
EndFunc ;==>Example
Func Start()
while true
Sleep(100)
CheckRequests()
WEnd
EndFunc
Func Stop()
EndFunc
Func CheckRequests()
$iMsg = GUIGetMsg()
while $iMsg <> 0
Select
Case $iMsg = $GUI_EVENT_CLOSE
_GUICtrlRichEdit_Destroy($h_logRichEdit) ; needed unless script crashes
; GUIDelete() ; is OK too
Exit
Case $iMsg = $h_tabs
Switch GUICtrlRead( $h_tabs )
Case $H_TAB_1
ControlShow( $hGui, "", $h_logRichEdit )
Case Else
ControlHide( $hGui, "", $h_logRichEdit )
EndSwitch
Case $iMsg = $h_startButton
Start()
Case $iMsg = $h_stopButton
Stop()
EndSelect
$iMsg = GUIGetMsg()
WEnd
EndFunc
При сне около 500 мс задержка при переключении вкладокявляется видимым.
Мой вопрос: В более широком масштабе это то, как мы будем обрабатывать / обновлять элементы, относящиеся к вкладке, при запуске более крупной программы?Если нет, то что было бы более эффективным способом обновления специфических свойств вкладок при запуске более крупной общей программы.
Недавно я также видел дизайн, в котором все вкладки и связанные компоненты были их GUI's
, но я не уверен, что все, что является его собственным GUI
, относится к этому вопросу.
Любая помощь или разъяснения очень важны, я новичок в AutoIT и пытаюсь выяснить некоторые преимущества и недостатки, а также эффективность.