Материал: 12562633_1109924Ispol_zo

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Затем мы задаем тип и размер прямоугольной области, размер, стиль и шрифт метки:

box->box(FL_UP_BOX); box->labelsize(36); box->labelfont(FL_BOLD+FL_ITALIC); box->labeltype(FL_SHADOW_LABEL);

Затем мы включаем отображение окна и запускаем цикл событий

FLTK:

window->end(); window->show(argc, argv); return Fl::run();

Запустив откомпилированную программу, увидим окно с текстом, показанное на рис. 2. Выход из программы – по клавише «Escape».

Рис. 2. Окно простого приложения

Создание виджетов

Виджеты (элементы управления) создаются при помощи операторов “new” языка C++. Для большинства виджетов применяются следующие аргументы в конструкторе:

Fl_Widget(x, y, width, height, label)

Параметры x и y определяют положение виджета в окне или окна на экране. В пакете FLTK верхний левый угол окна или экрана является началом координат (т.е. x = 0, y = 0), а единицами измерения являются пиксели.

Параметры width и height определяют размер окна в пикселях.

11

label является указателем на строку символов для пометки виджета. Для не имеющего метки виджета задается пустой указатель NULL.

Методы Get/Set

box->box(FL_UP_BOX) устанавливает тип отображения прямоугольной области Fl_Box, изменяя его от значения по умолчанию FL_NO_BOX, при котором область не рисуется. В примере "Hello, World!" мы использовали FL_UP_BOX, изображающую слегка приподнятую область.

Всегда можно узнать тип области методом box->box(). FLTK использует перегрузку имен методов для get/set. "set" метод имеет вид

"void name(type)", а метод "get" всегда имеет форму "type name() const".

Перерисовка после изменения атрибутов

После установки атрибутов или их изменения необходимо вызвать метод redraw() самостоятельно. Исключение составляет свойство value(), из которого вызываются методы redraw() и label() и в случае необходимости -redraw_label().

Метки

Все виджеты поддерживают метки (надписи). В случае окна метка отображается в заголовке. Наша программа использует методы labelfont, labelsize и labeltype.

Метод labelfont устанавливает тип и стиль используемого шрифта, которые в примере заданы как FL_BOLD и FL_ITALIC.

Метод labelsize задает высоту шрифта в пикселях.

Метод labeltype задает тип метки. FLTK использует нормальный, выпуклый и оттенѐнный типы (normal, embossed и shadowed).

Полный список опций можно найти в справочном материале, включенном в дистрибутивный пакет.

Отображение окна

Метод show() отображает окно. Его можно сопроводить аргументами командной строки для управления положением, размером ваших окон.

Основной цикл событий

Все приложения FLTK основаны на простой модели событий. Действия пользователя, такие как нажатие клавиш, движение мыши, нажатие кнопок, генерируют события, посылаемые приложению. Приложе-

12

ние может игнорировать события или реагировать на них соответствующим образом.

FLTK также использует функции ожидания и таймеры. Функции таймера вызываются после истечения указанного интервала времени. Их можно использовать для реализации прогрессоров и периодических событий.

Приложения FLTK должны периодически вызывать Fl::check() или (Fl::wait()) для событий или же использовать метод Fl::run() для запуска стандартного цикла ожидания событий. Вызов Fl::run() эквивалентен следующему коду:

while (Fl::wait());

Fl::run() не завершается до тех пор, пока не будут закрыты все окна, находящиеся под управлением FLTK программно или пользователем.

Компиляция стандартными компиляторами

В ОС UNIX (и в Microsoft Windows при использовании компилятора GNU) необходимо указать компилятору, где находится заголовочные файлы, для этого используется опция -I:

CC -I/usr/local/include...

gcc -I/usr/local/include...

Скрипт fltk-config поставляемый вместе с пакетом FLTK может быть использован как прототип для вашего приложения.

CC `fltk-config --cxxflags`...

Аналогично для компоновщика необходимо указать место расположения библиотеки FLTK:

CC... -L/usr/local/lib -lfltk -lXext -lX11 -lm gcc... -L/usr/local/lib -lfltk -lXext -lX11 -lm

Кроме собственно библиотеки "fltk" может понадобиться библиотека "fltk_forms" для использования классов XForms, "fltk_gl" – для классов OpenGL и GLUT и "fltk_images" –для классов изображений.

Замечание.

Библиотеки в Windows называются соответственно "fltk.lib", "fltkgl.lib", "fltkforms.lib" и "fltkimages.lib".

Скрипт fltk-config можно использовать и в этом случае:

CC... `fltk-config --ldflags`

13

Библиотеки форм, GL и изображений подключаются при помощи опции "--use-foo":

CC... `fltk-config --use-forms --ldflags`

CC... `fltk-config --use-gl --ldflags`

CC... `fltk-config --use-images --ldflags`

CC... `fltk-config --use-forms --use-gl --use- images --ldflags`

Можно использовать fltk-config для компиляции одиночного исходного файла программы с использованием FLTK:

fltk-config --compile filename.cpp

fltk-config --use-forms --compile filename.cpp fltk-config --use-gl --compile filename.cpp fltk-config --use-images --compile filename.cpp fltk-config --use-forms --use-gl --use-images -- compile filename.cpp

Любой вызов создаст исполняемый файл с именем filename.

Компилирование программ в Microsoft Visual C++

В оболочкеVisual C++ вам необходимо указать компилятору место нахождения заголовочных файлов FLTK. Это делается выбором пункта

"Settings" из меню "Project" и изменением установок "Preprocessor" в

закладке "C/C++". Вам также необходимо добавить библиотеки FLTK и WinSock (WSOCK32.LIB) в установках "Link".

Вы можете создавать ваши приложения как «Console» или «WIN32». Если вы хотите использовать стандартную функцию main()языка Си, FLTK включит функцию WinMain(), вызывающую для Вас функцию main().

Имена

Все символы FLTK начинаются с литер 'F' и 'L':

Функции либо Fl::foo(), либо fl_foo().

Классы и имена типов начинаются с заглавной буквы: Fl_Foo. Константы и перечисления – в верхнем регистре: FL_FOO.

Все заголовочные файлы начинаются с <FL/...>.

Заголовочные файлы

Правильный способ подключения заголовочных файлов FLTK:

#include <FL/Fl_xyz.H>

14

Регистр важен для многих операционных систем так же, как и использование стандартного для Си разделителя каталогов (/). Следующие строки представляют пример неправильного употребления препроцессорных директив:

#include <FL\Fl_xyz.H> #include <fl/fl_xyz.h> #include <Fl/fl_xyz.h>

Программирование с помощью FLUID

Опишем средство визуальной разработки GUI при помощи инстру-

мента «Fast Light User-Interface Designer».

Что такое FLUID?

FLUID – это «Fast Light User Interface Designer», графический ре-

дактор пользовательского интерфейса, использующийся для получения исходного кода на языке описания интерфейса FLTK. FLUID редактирует и сохраняет файлы с суффиксом .fl. Это текстовые файлы, их можно просматривать и редактировать обычным текстовым редактором (с известными предосторожностями).

FLUID может также "компилировать" файлы .fl в .cxx и .h файлы. Файл .cxx определяет все объекты, описанные в файле .fl, а .h файл содержит глобальные декларации. FLUID поддерживает локализацию строк меток, используя файлы строк и интерфейс GNU «gettext» или POSIX интерфейс «catgets».

Процесс создания простого приложения можно проиллюстрировать рис. 3.

Рис. 3. Организация процесса разработки GUI с помощью FLUID

15

Источник: https://studfile.net/preview/16710218/