Что нового

Написание GUI, нужна альтернатива "вкладкам"

AlexNewman

Новичок
Сообщения
15
Репутация
0
Снова здравствуйте! Бьюсь над созданием удобного и красивого интерфейса, написал на "вкладках" все супер, но мне не нравится, остановился на следующем варианте
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>

#NoTrayIcon ; не показывать иконку в трее

Local $Button_1, $Button_2, $Button_3, $Button_4, $Button_5, $msg, $hGUI
Local $Button_11, $Button_12, $Button_13
Local $CheckBox_11, $CheckBox_12, $CheckBox_13, $CheckBox_21, $CheckBox_22, $CheckBox_23, $CheckBox_24, $CheckBox_25

Local $iFileMenu, $iFileItem, $sFilePath, $iStatusBar
Local $iHelpMenu, $iInfoItem, $iExit, $iRecentFilesMenu, $hGui
Local $iViewMenu, $iViewStatusItem, $iStyleitem
Local $iRadioitem1, $iRadioitem2, $iRadioitem3, $iRadioitem4


$hGUI = GUICreate("INTERFACE", 640, 480) ; Создаёт окно в центре экрана

$Button_1 = GUICtrlCreateButton("1", 10, 10, 50, 50)
GUICtrlSetTip ($Button_1, 'Подсказка1')
$Button_2 = GUICtrlCreateButton("2", 60, 10, 50, 50)
GUICtrlSetTip ($Button_2, 'Подсказка2')
$Button_3 = GUICtrlCreateButton("3", 110, 10, 50, 50)
GUICtrlSetTip ($Button_3, 'Подсказка3')
$Button_4 = GUICtrlCreateButton("4", 160, 10, 50, 50)
GUICtrlSetTip ($Button_4, 'Подсказка4')
$Button_5 = GUICtrlCreateButton("5", 210, 10, 50, 50)
GUICtrlSetTip ($Button_5, 'Подсказка5')
$Button_6 = GUICtrlCreateButton("6", 260, 10, 50, 50)
GUICtrlSetTip ($Button_6, 'Подсказка6')
$Button_7 = GUICtrlCreateButton("7", 310, 10, 50, 50)
GUICtrlSetTip ($Button_7, 'Подсказка7')
$Button_99 = GUICtrlCreateButton("EXIT", 510, 10, 50, 50)
GUICtrlSetTip ($Button_99, 'ВЫХОД')

$iFileMenu = GUICtrlCreateMenu("&Файл")
$iFileItem = GUICtrlCreateMenuItem("Открыть", $iFileMenu)
GUICtrlSetState(-1, $GUI_DEFBUTTON)
$iHelpMenu = GUICtrlCreateMenu("?")
GUICtrlCreateMenuItem("Сохранить", $iFileMenu)
GUICtrlSetState(-1, $GUI_DISABLE)
$iInfoItem = GUICtrlCreateMenuItem("Информация", $iHelpMenu)
$iExit = GUICtrlCreateMenuItem("Выход", $iFileMenu)
$iRecentFilesMenu = GUICtrlCreateMenu("Последние файлы", $iFileMenu, 1)

GUICtrlCreateMenuItem("", $iFileMenu, 2) ; создаёт разделительную линию

$iViewMenu = GUICtrlCreateMenu("Вид", -1, 1) ; Создан до элемента меню "?"
$iViewStatusItem = GUICtrlCreateMenuItem("Строка состояния", $iViewMenu)
GUICtrlSetState(-1, $GUI_CHECKED)
$iStyleitem = GUICtrlCreateMenuItem("Стиль GUI POPUP", $iViewMenu)
GUICtrlCreateMenuItem("", $iViewMenu)
$iRadioitem1 = GUICtrlCreateMenuItem("Радио1", $iViewMenu, -1, 1)
$iRadioitem2 = GUICtrlCreateMenuItem("Радио2", $iViewMenu, -1, 1)
$iRadioitem3 = GUICtrlCreateMenuItem("Радио3", $iViewMenu, -1, 1)
GUICtrlSetState(-1, $GUI_CHECKED)
$iRadioitem4 = GUICtrlCreateMenuItem("Радио4", $iViewMenu, -1, 1)


GUICtrlSetState(-1, $GUI_FOCUS)

$iStatusBar = GUICtrlCreateLabel('Строка состояния', 5, 442, 300, 16);, BitOR($SS_SIMPLE, $SS_SUNKEN))

GUISetState() ; показывает созданное окно

; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1


Switch GUIGetMsg()

;~    #comments-start
        Case $iFileItem
            $sFilePath = FileOpenDialog("Выберите файл...", @TempDir, "Все (*.*)", 3, '', $hGui)
            If Not @error Then GUICtrlCreateMenuItem($sFilePath, $iRecentFilesMenu)
        Case $iViewStatusItem ; Событие при клике на пункте меню "Строка состояния"
            If BitAND(GUICtrlRead($iViewStatusItem), $GUI_CHECKED) = $GUI_CHECKED Then ; Если галочка в наличии, тогда
                GUICtrlSetState($iViewStatusItem, $GUI_UNCHECKED) ; Убирает галочку
                GUICtrlSetState($iStatusBar, $GUI_HIDE) ; Скрывает строку состояния
            Else ; Иначе
                GUICtrlSetState($iViewStatusItem, $GUI_CHECKED) ; Ставит галочку
                GUICtrlSetState($iStatusBar, $GUI_SHOW) ; Показывает строку состояния
            EndIf
        Case $iStyleitem
            If BitAND(GUICtrlRead($iStyleitem), $GUI_CHECKED) = $GUI_CHECKED Then
                GUICtrlSetState($iStyleitem, $GUI_UNCHECKED)
                GUISetStyle($GUI_SS_DEFAULT_GUI)
            Else
                GUICtrlSetState($iStyleitem, $GUI_CHECKED)
                GUISetStyle(BitOR($WS_BORDER, $WS_POPUP, $WS_SYSMENU))
            EndIf
        Case $iInfoItem
            MsgBox(64, "Информация", "Изменение цвета меню смотрите в примере GUICtrlGetHandle", 0, $hGui)
		 Case $iExit
			$GUI_EVENT_CLOSE
            Exit

            ExitLoop

    EndSwitch

    $Msg = GUIGetMsg()
    Switch $Msg
		 Case $Button_99
			$GUI_EVENT_CLOSE
            Exit

		 Case $Button_1
			GUICtrlDelete($CheckBox_21)
			GUICtrlDelete($CheckBox_22)
			GUICtrlDelete($CheckBox_23)
			GUICtrlDelete($CheckBox_24)
			GUICtrlDelete($CheckBox_25)
;~ 			$CheckBox_25 = GUICtrlDelete
;~ 			ControlHide("CheckBox_25", "INTERFACE", $CheckBox_25)
			$CheckBox_11 = GUICtrlCreateCheckbox("CheckBox_11", 20, 110, 100)
			$CheckBox_12 = GUICtrlCreateCheckbox("CheckBox_12", 20, 130, 100)
			$CheckBox_13 = GUICtrlCreateCheckbox("CheckBox_13", 20, 150, 100)

		Case $Button_2
			GUICtrlDelete($CheckBox_11)
			GUICtrlDelete($CheckBox_12)
			GUICtrlDelete($CheckBox_13)
			$CheckBox_21 = GUICtrlCreateCheckbox("CheckBox_21", 20, 140, 100)
			$CheckBox_22 = GUICtrlCreateCheckbox("CheckBox_22", 20, 160, 100)
			$CheckBox_23 = GUICtrlCreateCheckbox("CheckBox_23", 20, 180, 100)
			$CheckBox_24 = GUICtrlCreateCheckbox("CheckBox_24", 20, 200, 100)
			$CheckBox_25 = GUICtrlCreateCheckbox("CheckBox_25", 20, 220, 100)

	    Case $Button_3
		   _GUICtrlListView_DeleteAllItems
EndSwitch

WEnd


Есть ошибки:
1) при переключении с 2 на 1, некорректно отображается содержимое, остаётся старое и тд
2) кнопки срабатывают не с первого раза
3) не закрывает окно по крестику, только кнопки (так же из меню)

Помогите пожалуйста с решением

Цель: написание интуитивно понятного интерфейса, вместо цифр на кнопках иконки, область под кнопками должна перерисовываться каждый раз, элементы самые разные.

Тема возможно обсуждалось, где то видел, но вновь найти не получается
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
AlexNewman
зачем два опроса окна?
Код:
GUIGetMsg()

нужно только одно
и скрипт вообще не рабочий
это что?
Код:
Case $iExit
			$GUI_EVENT_CLOSE
			Exit

а это?
Код:
Case $Button_3
           _GUICtrlListView_DeleteAllItems

сделай рабочий скрипт
и кстати, твои вопросы о правильном построении окна освещены в справке. там есть доходчивые примеры
 
Автор
A

AlexNewman

Новичок
Сообщения
15
Репутация
0
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>

#NoTrayIcon ; не показывать иконку в трее

Local $Button_1, $Button_2, $Button_3, $Button_4, $Button_5, $msg, $hGUI
Local $Button_11, $Button_12, $Button_13
Local $CheckBox_11, $CheckBox_12, $CheckBox_13, $CheckBox_21, $CheckBox_22, $CheckBox_23, $CheckBox_24, $CheckBox_25

Local $iFileMenu, $iFileItem, $sFilePath, $iStatusBar
Local $iHelpMenu, $iInfoItem, $iExit, $iRecentFilesMenu, $hGui
Local $iViewMenu, $iViewStatusItem, $iStyleitem
Local $iRadioitem1, $iRadioitem2, $iRadioitem3, $iRadioitem4


$hGUI = GUICreate("INTERFACE", 640, 480) ; Создаёт окно в центре экрана

$Button_1 = GUICtrlCreateButton("1", 10, 10, 50, 50)
GUICtrlSetTip ($Button_1, 'Подсказка1')
$Button_2 = GUICtrlCreateButton("2", 60, 10, 50, 50)
GUICtrlSetTip ($Button_2, 'Подсказка2')
$Button_3 = GUICtrlCreateButton("3", 110, 10, 50, 50)
GUICtrlSetTip ($Button_3, 'Подсказка3')
$Button_4 = GUICtrlCreateButton("4", 160, 10, 50, 50)
GUICtrlSetTip ($Button_4, 'Подсказка4')
$Button_5 = GUICtrlCreateButton("5", 210, 10, 50, 50)
GUICtrlSetTip ($Button_5, 'Подсказка5')
$Button_6 = GUICtrlCreateButton("6", 260, 10, 50, 50)
GUICtrlSetTip ($Button_6, 'Подсказка6')
$Button_7 = GUICtrlCreateButton("7", 310, 10, 50, 50)
GUICtrlSetTip ($Button_7, 'Подсказка7')
$Button_99 = GUICtrlCreateButton("EXIT", 510, 10, 50, 50)
GUICtrlSetTip ($Button_99, 'ВЫХОД')

$iFileMenu = GUICtrlCreateMenu("&Файл")
$iFileItem = GUICtrlCreateMenuItem("Открыть", $iFileMenu)
GUICtrlSetState(-1, $GUI_DEFBUTTON)
$iHelpMenu = GUICtrlCreateMenu("?")
GUICtrlCreateMenuItem("Сохранить", $iFileMenu)
GUICtrlSetState(-1, $GUI_DISABLE)
$iInfoItem = GUICtrlCreateMenuItem("Информация", $iHelpMenu)
$iExit = GUICtrlCreateMenuItem("Выход", $iFileMenu)
$iRecentFilesMenu = GUICtrlCreateMenu("Последние файлы", $iFileMenu, 1)

GUICtrlCreateMenuItem("", $iFileMenu, 2) ; создаёт разделительную линию

$iViewMenu = GUICtrlCreateMenu("Вид", -1, 1) ; Создан до элемента меню "?"
$iViewStatusItem = GUICtrlCreateMenuItem("Строка состояния", $iViewMenu)
GUICtrlSetState(-1, $GUI_CHECKED)
$iStyleitem = GUICtrlCreateMenuItem("Стиль GUI POPUP", $iViewMenu)
GUICtrlCreateMenuItem("", $iViewMenu)
$iRadioitem1 = GUICtrlCreateMenuItem("Радио1", $iViewMenu, -1, 1)
$iRadioitem2 = GUICtrlCreateMenuItem("Радио2", $iViewMenu, -1, 1)
$iRadioitem3 = GUICtrlCreateMenuItem("Радио3", $iViewMenu, -1, 1)
GUICtrlSetState(-1, $GUI_CHECKED)
$iRadioitem4 = GUICtrlCreateMenuItem("Радио4", $iViewMenu, -1, 1)


GUICtrlSetState(-1, $GUI_FOCUS)

$iStatusBar = GUICtrlCreateLabel('Строка состояния', 5, 442, 300, 16);, BitOR($SS_SIMPLE, $SS_SUNKEN))

GUISetState() ; показывает созданное окно

; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1


Switch GUIGetMsg()

        Case $iFileItem
            $sFilePath = FileOpenDialog("Выберите файл...", @TempDir, "Все (*.*)", 3, '', $hGui)
            If Not @error Then GUICtrlCreateMenuItem($sFilePath, $iRecentFilesMenu)
        Case $iViewStatusItem ; Событие при клике на пункте меню "Строка состояния"
            If BitAND(GUICtrlRead($iViewStatusItem), $GUI_CHECKED) = $GUI_CHECKED Then ; Если галочка в наличии, тогда
                GUICtrlSetState($iViewStatusItem, $GUI_UNCHECKED) ; Убирает галочку
                GUICtrlSetState($iStatusBar, $GUI_HIDE) ; Скрывает строку состояния
            Else ; Иначе
                GUICtrlSetState($iViewStatusItem, $GUI_CHECKED) ; Ставит галочку
                GUICtrlSetState($iStatusBar, $GUI_SHOW) ; Показывает строку состояния
            EndIf
        Case $iStyleitem
            If BitAND(GUICtrlRead($iStyleitem), $GUI_CHECKED) = $GUI_CHECKED Then
                GUICtrlSetState($iStyleitem, $GUI_UNCHECKED)
                GUISetStyle($GUI_SS_DEFAULT_GUI)
            Else
                GUICtrlSetState($iStyleitem, $GUI_CHECKED)
                GUISetStyle(BitOR($WS_BORDER, $WS_POPUP, $WS_SYSMENU))
            EndIf
        Case $iInfoItem
            MsgBox(64, "Информация", "Изменение цвета меню смотрите в примере GUICtrlGetHandle", 0, $hGui)
		 Case $iExit
			$GUI_EVENT_CLOSE
            Exit

            ExitLoop
Case $Button_99
			$GUI_EVENT_CLOSE
            Exit

		 Case $Button_1
			GUICtrlDelete($CheckBox_21)
			GUICtrlDelete($CheckBox_22)
			GUICtrlDelete($CheckBox_23)
			GUICtrlDelete($CheckBox_24)
			GUICtrlDelete($CheckBox_25)
			$CheckBox_11 = GUICtrlCreateCheckbox("CheckBox_11", 20, 110, 100)
			$CheckBox_12 = GUICtrlCreateCheckbox("CheckBox_12", 20, 130, 100)
			$CheckBox_13 = GUICtrlCreateCheckbox("CheckBox_13", 20, 150, 100)

		Case $Button_2
			GUICtrlDelete($CheckBox_11)
			GUICtrlDelete($CheckBox_12)
			GUICtrlDelete($CheckBox_13)
			$CheckBox_21 = GUICtrlCreateCheckbox("CheckBox_21", 20, 140, 100)
			$CheckBox_22 = GUICtrlCreateCheckbox("CheckBox_22", 20, 160, 100)
			$CheckBox_23 = GUICtrlCreateCheckbox("CheckBox_23", 20, 180, 100)
			$CheckBox_24 = GUICtrlCreateCheckbox("CheckBox_24", 20, 200, 100)
			$CheckBox_25 = GUICtrlCreateCheckbox("CheckBox_25", 20, 220, 100)

    EndSwitch

WEnd


Сделал так, многие вопросы отпали) пытаюсь прикрутить память к чекбоксам, чтобы при переключении таких вкладок состояние чекбокса оставалось, но функция его не выполнялась

+не закрывается по крестику, похоже нубский вопрос, но всё же? как починить?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
AlexNewman
ты видимо в стандартном блокноте пишешь?
я ж написал - твой скрипт не рабочий.
это ошибка
Код:
Case $iExit
            $GUI_EVENT_CLOSE
            Exit

правильно будет
Код:
Case  $GUI_EVENT_CLOSE
                Exit

ты хоть бы в справку заглянул как создается окно.
зачем сочинять табы если уже есть это
Код:
GUICtrlCreateTab

в справке примеры даже красивее.
можно сделать еще красивше, но у тебя знаний пока нет таких. ты уже не обижайся
если уж это стол заказов, то проще попросить за тебя сочинить код.
опиши задачу, может кому и станет интересно
 
Автор
A

AlexNewman

Новичок
Сообщения
15
Репутация
0
Табы не нашёл как делать больше, чтобы в имени было не слово например, а картинка, квадратная, большая (а может быть картинка + подпись, под картинкой, принципиально), чтобы пользователь не тупил, а выбирал то что нужно, может в вертикаль эти табы расположить, наподобие современных виндовых интерфейсов, главное наглядность для пользователя, вкладки выглядят тесно и заморочено ИМХО.

В целом на табах написать получилось, всё отлично работает, успевай новый функционал придумывать
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
https://autoit-script.ru/index.php?topic=3405.0
подгоняй под свои нужды как хочешь. принцип показан.
только, читать много придется


Добавлено:
Сообщение автоматически объединено:

приведу тут этот пример
только картинки подставь свои
пример рабочий. я проверил
Код:
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <GUITab.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPIEx.au3>

Dim $Pic[5]

GUICreate('MyGUI', 705, 369)
GUISetBkColor(0xFFFFFF)
GUICtrlCreatePic('img_bg.bmp', 0, 0, 705, 369)
GUICtrlSetState(-1, $GUI_DISABLE)

For $i = 0 To 4
	$Pic[$i] = GUICtrlCreatePic(@ScriptDir & '\img_black.bmp', 10, 24 + 50 * $i, 162, 49)
	GUICtrlCreateLabel('Tabsheet' & $i, 21, 40 + 50 * $i, 140, 18, $SS_CENTER)
	GUICtrlSetFont(-1, 11, 400, 0, 'Tahoma')
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	GUICtrlSetColor(-1, 0xFFFFFF)
Next

$Tab = GUICtrlCreateTab(172 + 4, 10 + 4, 523 - 8, 349 - 8, $TCS_FOCUSNEVER)
GUICtrlCreateTabItem('Tabsheet0')
GUICtrlCreateEdit('', 190, 28, 487, 313)
GUICtrlCreateTabItem('Tabsheet1')
GUICtrlCreateButton('OK', 398, 319, 70, 23)
GUICtrlCreateTabItem('Tabsheet2')
GUICtrlCreateTabItem('Tabsheet3')
GUICtrlCreateTabItem('Tabsheet4')
GUICtrlCreateTabItem('')

; Эта функция нужна только для того, чтобы убрать фокус с Tab (функция универсальная)
_SetStyle($Tab, $WS_TABSTOP, 0)

GUISetState()

$Item = -1

While 1
	$Msg = GUIGetMsg()
	If $Item = -1 Then
		$Msg = $Pic[0]
		$Item = 1
	EndIf
	Switch $Msg
		Case 0
			ContinueLoop
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Pic[0] To $Pic[UBound($Pic) - 1]
			If $Msg <> $Pic[$Item] Then
				GUICtrlSetImage($Pic[$Item], @ScriptDir & '\img_black.bmp')
				GUICtrlSetColor($Pic[$Item] + 1, 0xFFFFFF)
				GUICtrlSetImage($Msg, @ScriptDir & '\img_white.bmp')
				GUICtrlSetColor($Msg + 1, 0x313A42)
				For $i = 0 To UBound($Pic) - 1
					If ($Msg = $Pic[$i]) Or ($Msg = $Pic[$i] + 1) Then
						$Item = $i
						ExitLoop
					EndIf
				Next
				_GUICtrlTab_SetCurFocus($Tab, $Item)
			EndIf
	EndSwitch
WEnd

Func _SetStyle($hWnd, $iStyle, $fSet, $fExStyle = 0, $fUpdate = 0)

	If Not IsHWnd($hWnd) Then
		$hWnd = GUICtrlGetHandle($hWnd)
		If Not $hWnd Then
			Return
		EndIf
	EndIf

	Local $Flag, $Style

	If $fExStyle Then
		$Flag = $GWL_EXSTYLE
	Else
		$Flag = $GWL_STYLE
	EndIf
	$Style = _WinAPI_GetWindowLong($hWnd, $Flag)
	If $fSet Then
		If BitAND($Style, $iStyle) <> $iStyle Then
			_WinAPI_SetWindowLongEx($hWnd, $Flag, BitOR($Style, $iStyle))
		EndIf
	Else
		If BitAND($Style, $iStyle) Then
			_WinAPI_SetWindowLongEx($hWnd, $Flag, BitAND($Style, BitNOT($iStyle)))
		EndIf
	EndIf
	If $fUpdate Then
		_WinAPI_InvalidateRect($hWnd)
	EndIf
EndFunc   ;==>_SetStyle

Func _WinAPI_SetWindowLongEx($hWnd, $iIndex, $iNewLong)

	Local $Ret

	If StringInStr(@OSArch, '64') Then
		$Ret = DllCall('user32.dll', 'long_ptr', 'SetWindowLongPtrW', 'hwnd', $hWnd, 'int', $iIndex, 'long_ptr', $iNewLong)
	Else
		$Ret = DllCall('user32.dll', 'long', 'SetWindowLongW', 'hwnd', $hWnd, 'int', $iIndex, 'long', $iNewLong)
	EndIf
	If (@error) Or (Not $Ret[0]) Then
		Return SetError(1, 0, 0)
	EndIf
	Return $Ret[0]
EndFunc   ;==>_WinAPI_SetWindowLongEx
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
AlexNewman
В чём смысл вкладок? В том, что они работают с группой элементов. Если вы хотите сделать собственные "вкладки", так и сделайте их. Создайте дочерние окна $WS_CHILD, расположите на них элементы и, по нажатию кнопки, скрывайте открытое дочернее окно и отображайте выбранное. Таким образом и состояния элементов сохранятся.

Вот пример концепции (замените в своём скрипте всё, начиная с GUISetState, на этот фрагмент)
Код:
; ...

GUISetState() ; показывает созданное окно

Global $CurrentGroup = 0

$hGroup1 = GUICreate("", 640, 350, 0, 70, $WS_CHILD, -1, $hGUI) ; группа элементов кнопки 1
$CheckBox_11 = GUICtrlCreateCheckbox("CheckBox_11", 20, 110, 100)
$CheckBox_12 = GUICtrlCreateCheckbox("CheckBox_12", 20, 130, 100)
$CheckBox_13 = GUICtrlCreateCheckbox("CheckBox_13", 20, 150, 100)

$hGroup2 = GUICreate("", 640, 350, 0, 70, $WS_CHILD, -1, $hGUI) ; группа элементов кнопки 2
$CheckBox_21 = GUICtrlCreateCheckbox("CheckBox_21", 20, 140, 100)
$CheckBox_22 = GUICtrlCreateCheckbox("CheckBox_22", 20, 160, 100)
$CheckBox_23 = GUICtrlCreateCheckbox("CheckBox_23", 20, 180, 100)
$CheckBox_24 = GUICtrlCreateCheckbox("CheckBox_24", 20, 200, 100)
$CheckBox_25 = GUICtrlCreateCheckbox("CheckBox_25", 20, 220, 100)

; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1
    Switch GUIGetMsg()
        Case $iFileItem
            $sFilePath = FileOpenDialog("Выберите файл...", @TempDir, "Все (*.*)", 3, '', $hGui)
            If Not @error Then GUICtrlCreateMenuItem($sFilePath, $iRecentFilesMenu)
        Case $iViewStatusItem ; Событие при клике на пункте меню "Строка состояния"
            If BitAND(GUICtrlRead($iViewStatusItem), $GUI_CHECKED) = $GUI_CHECKED Then ; Если галочка в наличии, тогда
                GUICtrlSetState($iViewStatusItem, $GUI_UNCHECKED) ; Убирает галочку
                GUICtrlSetState($iStatusBar, $GUI_HIDE) ; Скрывает строку состояния
            Else ; Иначе
                GUICtrlSetState($iViewStatusItem, $GUI_CHECKED) ; Ставит галочку
                GUICtrlSetState($iStatusBar, $GUI_SHOW) ; Показывает строку состояния
            EndIf
        Case $iStyleitem
            If BitAND(GUICtrlRead($iStyleitem), $GUI_CHECKED) = $GUI_CHECKED Then
                GUICtrlSetState($iStyleitem, $GUI_UNCHECKED)
                GUISetStyle($GUI_SS_DEFAULT_GUI)
            Else
                GUICtrlSetState($iStyleitem, $GUI_CHECKED)
                GUISetStyle(BitOR($WS_BORDER, $WS_POPUP, $WS_SYSMENU))
            EndIf
        Case $iInfoItem
            MsgBox(64, "Информация", "Изменение цвета меню смотрите в примере GUICtrlGetHandle", 0, $hGui)

        Case $Button_1
            GUISetState(@SW_HIDE, $CurrentGroup)
            GUISetState(@SW_SHOW, $hGroup1)
            $CurrentGroup = $hGroup1
        Case $Button_2
            GUISetState(@SW_HIDE, $CurrentGroup)
            GUISetState(@SW_SHOW, $hGroup2)
            $CurrentGroup = $hGroup2
        Case $iExit, $Button_99, $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
 
Верх