Россия |
Начало работы с Juce. Создание приложений. Главное окно
Заметим, что число кнопок заголовка окна (а также их положение) можно изменить вызовом метода void DocumentWindow::setTitleBarButtonsRequired (int requiredButtons, bool positionTitleBarButtonsOnLeft). Если последний аргумент функции принимает значение true, кнопки будут располагаться не у правого края заголовка окна, а у левого ( пример 2.9, рис. 2.2).
#include "TMainForm.h" //--------------------------------------------------------------------- TMainForm::TMainForm() : DocumentWindow( JUCEApplication::getInstance()->getApplicationName(), Colours::azure, DocumentWindow::allButtons) { centreWithSize(400, 200); // Запрещаем изменение размеров окна посредством растягивания мышью setResizable(false, false); setTitleBarButtonsRequired(minimiseButton | DocumentWindow::closeButton, true); setVisible(true); } //---------------------------------------------------------------------Листинг 2.9. Конструктор класса TMainForm (окно с неизменяемыми размерами, кнопки расположены у левого края заголовка)
В качестве последнего параметра конструктор класса принимает булеву переменную bool addToDesktop. В случае, если переменная принимает значение true, окно автоматически добавляется на рабочий стол, в противном случае вы можете использовать окно в качестве дочернего. По умолчанию переменная принимает значение true.
Класс DocumentWindow наследует классы компонента (Component, см. "Компонентная модель Juce. Общие свойства компонентов" ) и окна с изменяемыми размерами (ResizableWindow). В конструкторе класса TMainForm ( пример 2.6) мы вызываем следующие методы, унаследованные от этих классов:
- void Component::centreWithSize(int width, int height) — задаёт линейные размеры компонента (ширина и длина) и помещает его в центре родительского компонента. В том случае, когда родительского компонента нет (наш случай), окно помещается в центр рабочего стола.
-
void ResizableWindow::setResizable(bool shouldBeResizable, bool useBottomRightCornerResizer) — в зависимости от принимаемых параметров показывает, может ли пользователь изменять размеры окна потягиванием мыши (да, если shouldBeResizable принимаент значение true) и следует ли отображать виджет-ресайзер в правом нижнем углу окна (если виджет отображается, то пользователь может изменять размеры окна посредством потягивания мышью за него, но не за границу окна).
Вид окна, в котором все параметры принимают значения true, показан на рисунке 2.3 .
- virtual void Component::setVisible(bool shouldBeVisible) — в случае, если аргумент принимает значение true, метод делает окно видимым и доступным для манипуляций пользователя.
В заключение отметим, что по умолчанию текст заголовка окна ориентирован по центру. В том случае, если мы хотим, чтобы он был выровнен по левому краю, необходимо в конструкторе класса окна вызвать метод void DocumentWindow::setTitleBarTextCentred(bool textShouldBeCentred) присвоив параметру функции значение false ( рис. 2.4)