
2.2.3. Hello World - gui-програма
Продемонструємо, як вивести на екран повідомлення “Hello World”, використовуючи графічний інтерфейс системи Windows. Інакше кажучи, застосуємо технологію візуального програмування, реалізовану у C++Builder.
Процедура створення програми з графічним інтерфейсом користувача навіть простіша, ніж у випадку консольної програми, оскільки C++Builder призначений якраз для цього. Виконайте наступні дії:
Створіть новий проект, вибравши в меню команди File / New Application (це еквівалентно вибору значка Application в діалозі New Items). При цьому буде відкрито конструктор форм з новою формою (рис. 5). Інспектор об’єктів буде показувати її властивості.
Виберіть в лівій колонці листа Properties властивість Caption. Замініть його значення (в правій колонці) на “Hello World”. Зверніть увагу, що цей текст з‘являється зразу ж в стрічці заголовка форми. Після цього розмістіть на формі необхідні компоненти – дві командні кнопки і мітку, в якій буде відображатись наш текст.
Відкрийте в палітрі компонентів головного вікна C++Builder сторінку Standard (вона відкрита по замовчуванню) і виберіть в ній компоненту Button (значок, який зображує командну кнопку). Після цього клацніть кнопкою мишки в тому місці форми, де повинен знаходитись верхній лівий кут компоненти. Кнопка буде перенесена на форму, навколо неї буде видно чорні маркери, які дозволяють змінити розмір кнопки за допомогою мишки і, крім того, є ознакою активної (вибраної) компоненти форми. Переміщати компоненту по формі можна, якщо помістити курсор всередину компоненти.
При цьому помітно, що при переміщенні компоненти чи зміні розміру її положення фіксується вузлами сітки, показаній на формі маленькими точками. При цьому крок сітки можна змінити або взагалі відмінити прив’язку до сітки.
В інспекторі об’єктів змініть властивість Caption кнопки на “Message”, аналогічно тому, як це було зроблено для самої форми. Введений текст задає напис на кнопці (по замовчуванню, це Buttonl). Розмістіть на формі другу кнопку з написом “Exit”, керуючись рис. 11.
Рис. 11. Форма програми в процесі проектування.
Виберіть в палітрі компонент значок Label (буква А) і помістіть компоненту мітки на форму нижче командних кнопок. Виберіть в інспекторі об’єктів властивість Font. Якщо натиснути маленьку кнопку з трьома крапками в правій колонці інспектора, то з’явиться звичайний діалог вибору шрифта, в якому можна задати бажану гарнітуру і розмір тексту (рис. 12). Кнопка з багатьма крапками в колонці значень – це звичайна ознака того, що для властивості передбачено спеціалізований редактор. Вилучіть із властивості Caption весь текст (“Label 1”).
На цьому практично завершено те, що іменується етапом візуального проектування програми. Тепер потрібно написати програмний код, який буде реалізувати вивід (по команді) на екран стрічки тексту “Hello World”.
Виберіть на формі першу з кнопок і перейдіть в інспекторі об’єктів на сторінку подій (Events). Двічі натисніть кнопку мишки на події OnClick; C++Builder створить заготовку процедури обробки ButtonlClick() і встановить курсор редактора коду в її полі. Введіть стрічки коду так, щоб функція мала наступний вигляд:
void _fastcall TFormI::ButtonlClick(TObject *Sender)
{
Labell->Caption = "Hello World from GUI!";
}
Аналогічно створіть процедуру обробки події для другоє командної кнопки.
void _fastcall TFormI::Button2Click(TObject *Sender)
{
Forml->Close () ;
}
При бажанні змініть розмір форми (як це робиться із звичайним вікном) і збережіть файли проекту, надавши початковому модулю імя, наприклад, HWGuiU, а початковому файлу проекту - HWGui. Залишається тільки зкомпілювати і запустити програму. Натисніть на інструментальній панелі C++Builder кнопку з зеленою стрілкою (Run). Якщо при компіляції виникають помилки, виправіть їх і запустіть програму знову.
Натисніть кнопку Message. Буде виведена стрічка повідомлення. Кнопка Exit завершує роботу програми, закриваючи її головне вікно (її можна також закрити і системою кнопок у правому верхньому куті вікна). Нижче показано вікно запущеної програми.
Рис. 12. Працююча програма.
Звідси видно, що процес візуального проектування інтерфейсу користувача ідейно доволі простий. Із палітри вибирається чергова компонента, розміщується на формі, встановлюється її розмір і положення та різноманітні властивості з допомогою інспектора об’єктів. Після розміщення всіх необхідних компонент слідує безпосередньо етап програмування, тобто написання коду C++ для різних подій. Зверніть увагу – у візуально спроектованій програмі C++Builder довільний написаний код в той чи інший спосіб викликається із деякої процедури обробки події.
Ті стрічки коду, що введені в функції OnClick () для обох командних кнопок, є достатньо зрозумілими. Перша з них присвоює властивості Caption, розміщеній на формі мітки, задану символьну стрічку. Друга просто викликає функцію закриття форми Close (). Деталі і синтаксис цього коду будуть ставати більш зрозумілими в процесі вивчення мови C.
Зауваження
Тут реалізована програма з графічним інтерфейсом користувача при використанні візуальних можливостей C++Builder, але можна побудувати стандартну віконну програму так би мовити і на пустому місці, орієнтовану на інтерфейс прикладного програмування (API) Windows. Для цього потрібно скористатися тим же майстром Console Wizard, з допомогою якого створювалась заготовка консольної програми. Для цього потрібно вибрати File / New...і запустити Console Wizard. У C++Builder 4 вибирається кнопка Window (GUI) і натискається кнопка Finish (рис. 13, зверху). При роботі з 5-ою версією необхідно скинути всі прапорці у правій частині панелі консольного майстра, показаній на рис. 13 внизу.
Рис. 13. Console Wizard 4-ї версії з установками для віконної програми і 5-ї версії для консольної програми на С.
У вікні редактора коду необхідно ввести єдиний оператор (він розміщений у двох стрічках), програма буде мати наступний вигляд:
#include <windows.h>
#pragma hdrstop
#include <condefs.h>
//--------------------------------
#pragma argsused
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
MessageBox(NULL, "Hello World from Windows!",
"Simple Greeting", MB_OK | MB_ICONEXCLAMATION);
return 0;
}
Збережіть проект, надавши йому нове імя, після цьго можна компілювати і запускати програму, натиснувши кнопку Run інструментальної панелі. На екрані зявиться стандартна панель повідомлення (рис. 14).
Рис. 14. Панель повідомлення, виведена функцією MessageBox
Зауваження
Ця панель відображається функцією API MessageBox (), аргументи якої задають текст повідомлення, заголовок панелі і її вигляд (тип кнопок і значок). Головною функцією програми Windows є, як видно, є не main (), а WinMain ().
Наведені приклади показують, яким чином C++Builder дає можливість експериментувати з різними мовними конструкціями, які будуть вивчатись. Можна написати “справжню” консольну програму C/C++, користуючись як інтерактивними засобами, функціями вводу з клавіатури і символьного виводу у вікно MS-DOS. Або так само (і навіть з більшим успіхом) можна скористатись методикою візуального програмування і працювати з текстовою програмою в рамках GUI Windows. Правда, отримані таким способом програми не є в строгому розумінні програмами C++, оскільки мова візуально-компонентної моделі містить деякі розширення, однак в плані вивчення стандартних елементів мови це не суттєво. Суттєвим є те, що стандарт ANSI C++ підтримується в повному обсязі.