Что нового

Не понятные сложности при создании графических элементов

kyi

Новичок
Сообщения
43
Репутация
0
Добрый день!
Объясните пожалуйста зачем писать такие сложности
Код:
$Button1 = GUICtrlCreateButton("Кнопка", 54, 88, 133, 33)

Когда тоже самое можно получить и без создания переменной, вот так
Код:
GUICtrlCreateButton("Кнопка", 54, 88, 133, 33)

Я не понимаю, зачем процесс создания графического элемента описывать как переменная.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
kyi [?]
зачем процесс создания графического элемента описывать как переменная
Чтобы при обработке события знать от какого элемента оно пришло.
Разберите пример в справке по этой функции и всё поймёте.
 
Автор
K

kyi

Новичок
Сообщения
43
Репутация
0
Так в том то и дело, что нету примеров которые бы подробно описывали что и зачем, поэтому и обратился сюда.
Если у вас есть пример (для тех кто с программированием знаком 3 недели на уровне чтения справки) с самым подробным разбором всего, буду очень признателен
 

Prog

Продвинутый
Сообщения
537
Репутация
65
kyi [?]
Так в том то и дело, что нету примеров которые бы подробно описывали что и зачем
Посмотрите пример в справке https://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateButton.htm
Код:
#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>
#include <WindowsConstants.au3>

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

Local $Button_1, $Button_2, $Button_3, $Button_4, $Button_5, $msg, $hGUI
$hGUI = GUICreate("GUI с кнопкой") ; Создаёт окно в центре экрана

Opt("GUICoordMode", 2)
$Button_1 = GUICtrlCreateButton("Запуск блокнота", 10, 20, 120)
$Button_2 = GUICtrlCreateButton("Тестовая кнопка", -1, 0) ; относительные координаты
GUICtrlSetBkColor(-1, 0x0) ; Назначение цвета кнопке приводит к потере события WM_NOTIFY и не обрабатывает быстрые многократные нажатия
GUICtrlSetColor(-1, 0xFFFFFF)

$Button_3 = GUICtrlCreateButton("-", -1, 10, 22, 22, $BS_ICON)
GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 42, 0)

$Button_4 = GUICtrlCreateButton("-", -1, 10, 40, 40, $BS_ICON + $BS_FLAT)
GUICtrlSetImage(-1, "shell32.dll", 46, 1)

$Button_5 = GUICtrlCreateButton("кнопка с рисунком bmp", -1, 10, 160, 160, $BS_PUSHLIKE + $BS_BITMAP)
GUICtrlSetImage(-1, "oemlogo.bmp")

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

; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1
     Switch GUIGetMsg()
         Case $GUI_EVENT_CLOSE
             ExitLoop
         Case $Button_1
             Run('notepad.exe') ; будет запущен или открыт блокнот
         Case $Button_2
             GUICtrlSetData($Button_2, 'Новый текст')
         Case $Button_3
             GUICtrlSetImage($Button_3, @SystemDir & '\shell32.dll', 22, 0)
         Case $Button_4
             MsgBox(4096, 'Тест', 'Нажата кнопка со стилем плоской кнопки', 0, $hGUI); Демонстрация действия при нажатии Button 4
         Case $Button_5
             MsgBox(4096, 'Тест', 'Нажата кнопка с BMP рисунком', 0, $hGUI)
     EndSwitch
WEnd

А теперь представьте что при создании кнопок их идентификаторы не сохранены в переменных.
Код:
$Button_1 = GUICtrlCreateButton("Запуск блокнота", 10, 20, 120)
GUICtrlCreateButton("Тестовая кнопка", -1, 0) ; относительные координаты
GUICtrlCreateButton("-", -1, 10, 22, 22, $BS_ICON)
GUICtrlCreateButton("-", -1, 10, 40, 40, $BS_ICON + $BS_FLAT)
GUICtrlCreateButton("кнопка с рисунком bmp", -1, 10, 160, 160, $BS_PUSHLIKE + $BS_BITMAP)
Как узнать какую кнопку нажали?
 
Автор
K

kyi

Новичок
Сообщения
43
Репутация
0
Даааасс...
Конечно немного прояснилось, но пока привыкну и буду понимать на все 100%....
Кстати, а вот это обязательно?
Код:
Local $Button_1, $Button_2, $Button_3, $Button_4, $Button_5, $msg, $hGUI

В некоторых скриптах заранее не описывают переменные... ээээ... элементов что ли.
 
Верх