- •Хмельницький національний університет проектування інтерфейсів користувача
- •Хмельницький 2009
- •Лабораторна робота №1
- •І. Теоретичні відомості
- •Для розробника вікно є сукупністю великої кількості елементів, які функціонують під управлінням додатку та операційної системи.
- •Створення вікон
- •Головна функція додатку
- •Структура тексту додатку
- •Допоміжні функції створення вікон
- •Приклади створення вікон
- •IV. Контрольні питання
- •Лабораторна робота №2
- •І. Теоретичні відомості
- •Статичний орган управління
- •Смуги прокрутки
- •IV. Контрольні питання
- •Лабораторна робота №3
- •І. Теоретичні відомості
- •Списки рядків
- •Комбінований список
- •IV. Контрольні питання
- •Лабораторна робота №4
- •І. Теоретичні відомості
- •Повідомлення wm_paint
- •Види контексту відображення
- •Встановлення атрибутів контексту відображення
- •Вивід тексту
- •Малювання геометричних фігур
- •IV. Контрольні питання
- •Лабораторна робота №5
- •І. Теоретичні відомості
- •Інструменти малювання
- •Відображення графічних об'єктів
- •IV. Контрольні питання
- •Лабораторна робота №6
- •І. Теоретичні відомості
- •Створення меню
- •Повідомлення від меню
- •Плаваюче меню
- •Акселератори
- •IV. Контрольні питання
- •Література
Створення вікон
Для створення вікна викликають функцію CreateWindow. Вона створює тимчасове, дочірнє вікно або вікно, що перекривається, і встановлює початкові значення деяких його параметрів. Ця функція оголошена так:
HWND CreateWindow(
LPCTSTR lpClassName, //ім’я зареєстрованого класу
LPCTSTR lpWindowName, //ім’я вікна
DWORD dwStyle, //стиль вікна
int x, //координата лівого краю вікна
int y, //координата верхнього краю вікна
int nWidth, //ширина вікна
int nHeight, //висота вікна
HWND hWndParrent, //дескриптор вікна-батька або вікна-власника
HMENU hMenu, //дескриптор меню або ідентифікатор
//створюваного дочірнього вікна
HANDLE hInstance, //дескриптор додатку
LPVOID lpParam //вказівник на дані вікна);
Перед створенням вікна функція CreateWindow надсилає код повідомлення WM_CREATE функції створюваного вікна. Вона потім обробляє значення, що повертається функцією вікна, або не створює вікна, якщо воно дорівнює –1. Відповідно функціяCreateWindowповертає дескриптор вікна абоNULL.
Стиль вікна задає зовнішню поведінку вікна. Для опису стиля вікна використовують символічні константи з префіксом WS_ (табл.1.2).
Таблиця 1.2. Список значень стилів вікон
Значення |
Пояснення |
1 |
2 |
WS_BORDER |
Вікно з тонкою рамкою |
WS_CAPTION |
Вікно із заголовком (включає стиль WS_BORDER) |
WS_CHILD або WS_CHILDWINDOW |
Дочірнє вікно. Воно не може мати меню. Несумісний з WS_POPUP |
WS_CLIPCHILDREN |
Вікно не перемальовує ті області, які затінені власними дочірніми вікнами |
WS_CLIPSIBLINGS |
Дочірнє вікно не перемальовує ті області, які затінені іншими дочірніми вікнами того ж батька |
WS_DISABLED |
Створити заблоковане вікно |
WS_DLGFRAME |
Вікно з подвійною рамкою без заголовка |
WS_HSCROLL |
Вікно з горизонтальною смугою перегляду |
WS_ICONIC або WS_MINIMIZE |
Початково згорнуте в піктограму вікно |
WS_GROUP |
Визначає перший елемент групи органів управління, яка складається з цього елемента та слідуючих за ним елементів до елемента зі стилем WS_GROUP. Перші елементи груп мають стиль WS_TABSTOP, щоб користувач міг пересуватись між групами натисканням клавіш Tab. Всередині групи від елемента до елемента переходять за допомогою стрілок |
WS_MAXIMIZE |
Вікно максимально можливого розміру |
WS_MAXIMIZEBOX |
Вікно з кнопкою відновлення/максимізації розміру. Використовують з WS_OVERLAPPED і WS_CAPTION
|
WS_POPUP |
Тимчасове вікно |
1 |
2 |
WS_MINIMIZEBOX |
Вікно з кнопкою згортання вікна в піктограму. Використовують зі стилями WS_OVERLAPPEDіWS_CAPTION |
WS_OVERLAPPED або WS_TILED |
Вікно з заголовком і рамкою, що перекривається |
WS_OVERLAPPEDWINDOW або WS_TILEDWINDOW |
Вікно стилів WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, WS_MAXIMIZEBOX |
WS_POPUPWINDOW |
Вікно стиля WS_POPUP, WS_BORDER, WS_SYSMENU. Для відображення системного меню додають WS_CAPTION |
WS_SIZEBOX або WS_THICKFRAME |
Вікно з товстою рамкою для зміни розмірів вікна |
WS_SYSMENU |
Вікно з системним меню. Об’єднують з WS_CAPTION |
WS_TABSTOP |
Елемент управління, який одержує фокус введення при натисканні клавіші Tab |
WS_VISIBLE |
Вікно стає видимим одразу після створення |
WS_VSCROLL |
Вікно з вертикальною смугою перегляду |
За сукупністю властивостей розрізняють вікна, що перекриваються (оverlapped), тимчасові(pop-up) та дочірні (сhild) вікна.
Вікна, що перекриваються, найчастіше використовують в якості вікна додатки. Вони завжди мають заголовок (titlebar), рамку і робочу область вікна (clientregion), можуть мати системне меню, кнопки відновлення розмірів, закриття і згортання вікна в пікторгамму, горизонтальну та вертикальну смуги перегляду (scrollbar), меню, панель інстурментів (toolbar) і рядок стану (statusbar).Базовий стиль таких вікон описаний константоюWS_OVERLAPPED. Частіше використовуваний стиль віконWS_OVERLAPPEDWINDOWна додаток до базового вказує, що вікно має системне меню, кнопки відновлення розмірів, закриття і згортання вікна. Вікно, що перекривається, може належати вікну-власнику. Якщо вікно-власник згортається, то підлеглі йому вікна стають невидимими. При знищенні вікна автоматично знищуються підлеглі йому вікна. Підлеглі вікна завжди розташовуються над поверхнею вікна-власника, відгорожуючи його.
Тимчасові вікназвичайно використовують для виведення повідомлень користувачу і залишаються на екрані нетривалий час. Базовий стиль тимчасового вікна описаний константоюWS_POPUP. Таке вікно за замовчуванням не має заголовка. Частіше тимчасове вікно описують константоюWS_POPUPWINDOW. Для додавання до тимчасового вікна системного меню і заголовка стильWS_POPUPWINDOWкомбінують зі стилемWS_CAPTION. В усьому останньому тимчасові вікна – це спеціальний вид вікон, що перекриваються.
Дочірні вікнавикористовують для створення органів управління. Визначені системою класи органів управління (кнопки, смуги перегляду і т.п.) представляють собою дочірні вікна. Базовий стиль дочірніх вікон описаний константоюWS_CHILD. Цей стиль повністю співпадає зі стилемWS_CHILDWINDOW. Дочірні вікна не мають кнопок зміни розміру, але завжди мають вікно-батько. Вони прилипають до поверхні бітька, пересуваються з ним і не виходять за його межі.