ОКНА
В PureBasic`е окном называют собственно окно, как оно есть в понимании любого
пользователя современной операционной системы. А гаджет - это любой
элемент графического интерфейса пользователя (GUI), например кнопка, строка текста,
гиперссылка, картинка и т.д.
Все гаджеты должны располагаться в окне, поэтому чтобы написать приложение с
графическим интерфейсом сперва надо создать окно,
В PureBasic`е это делается следующим образом:
EndIf
End
Теперь разберем что все это означает;
OpenWindow(...) - это очевидно команда, открывающая окно и
у нее есть следующие параметры:
- WinID - уникальный идентификатор окна (как любого объекта), любое целое неотрицательное число.
- x и y - координаты верхнего левого угла окна в пикселах, отсчет начинается с верхнего левого угла экрана.
- ширина и высота - ширина и высота окна соответственно, в пикселах.
- флаг - определяет вид окна и может принимать следующие значения или их сочетания
- #PB_Window_SystemMenu
- #PB_Window_MinimizeGadget
- #PB_Window_MaximizeGadget
- #PB_Window_SizeGadget
- #PB_Window_Invisible
- #PB_Window_TitleBar
- #PB_Window_BorderLess
- #PB_Window_ScreenCentered
- #PB_Window_WindowCentered
- #PB_Window_Minimize
- #PB_Window_Maximize
- "Заголовок окна" - собственно тут все понятно, это любая строка текста, которая будет в заголовке окна.
CreateGadgetList(WindowID(WinID)) - команда, создающая в нашем окне список гаджетов, для чего он нужен, начинающему программисту не столь существенно, надо просто запомнить что он создается вместе с окном, а в качестве параметра WinID указывается точно такой же WinID как при создании окна.
Теперь давайте попробуем написать первую программу, которая будет состоять из одного окна с заголовком. Для этого откроем редактор purebasic.exe и напишем следующий код:
EndIf
End
Для запуска программы нажмите F5 или в пункте меню Compiler выберете Compile/Run.
Если все написано верно наше окно появится на экране.
Но разглядеть мы его не успеем,
потому что оно сразу исчезнет.
Программа стартовала и закрылась, она просто выполнила
все инструкции (OpenWindow(...), CreateGadgetList(WindowID(WinID))
и добралась до строки End.
Кстати если Вы забудете написать End в конце
своей программы компилятор это сделает за Вас.
Как же сделать свое окно "устойчивым"?
Для того чтобы оно могло нормально существовать внутри него надо организовать
цикл окна - для этого подойдет обычный цикл типа Repeat ... Until.
На примере, представленном ниже, я покажу Вам окно с циклом, которое исчезает
когда пользователь сам закроет его. А потом объясню как этот пример работает.
Repeat
A= WaitWindowEvent()
If A=#PB_Event_CloseWindow
Q=1
EndIf
Until Q=1
EndIf
End
Цикл
Repeat
--- код ---
Until>Q=1
означает, что --- код --- будет выполняться раз за разом, пока переменная
Q не станет равной 1. Как только условие Q=1 выполнится программа
выйдет из цикла и станет выполнять следующие за ним команды.
Условный оператор:
If условие
--- код ---
EndIf
означает, что --- код --- будет выполнен только если справедливо условие.
Функция WaitWindowEvent() возвращает id, -
универсальный идентификатор последнего нажатого пользователем гаджета, она не имеет параметров.
С ее помощью мы можем узнать на какой гаджет в окне кликнул пользователь.
В нашем примере id этого гаджета записывается в переменную A.
Если нажата кнопка "закрыть окно" в правом верхнем углу, то функция
WaitWindowEvent() вернет значение, равное
константе: #PB_Event_CloseWindow.
Таким образом следующая конструкция
A= WaitWindowEvent()
If A=#PB_Event_CloseWindow
Q=1
EndIf
Until Q=1
становится совершенно понятной. Цикл выполняется до тех пор, пока не выполняется условие Q=1. Но переменная Q получит значение 1, только если Функция WaitWindowEvent() вернет значение равное #PB_Event_CloseWindow, то есть пользователь кликнет по кнопке "закрыть окно".
При выполнении этого примера получится следующий результат:
Теперь мы уже умеем создавать окно, которое можно свернуть, развернуть или закрыть, но пока оно пустое, без кнопок, текста и прочих очень нужных элементов, поэтому в следующей главе рассказ пойдет о создании гаджетов.
Примеры флагов
Как уже говорилось выше:
флаг - определяет вид окна и может принимать следующие значения:
. . . окно при старте без рамки.
. . . окно при старте по центру.
. . . окно при старте спрятано.
#PB_Window_Maximize - окно при старте на весь экран.