Win api module_1.2
-
Upload
andriy-gladkiy -
Category
Technology
-
view
119 -
download
0
Transcript of Win api module_1.2
WinAPIМодуль 1.2
2
В даному модулі: Типи даних в WinAPI Події Повідомлення Черга повідомлень Вікна
Andriy Gladkyy [email protected]
3
Типи даних в WinAPI Основні типи даних
Andrey Gladky [email protected]
Тип Опис
BOOLцей тип даних аналогічний bool. Він також має два значення - 0 або 1. Тільки при використанні WINAPI прийнято використовувати замість 0 специфікатор NULL.
BYTE байт, ну або восьмібітне беззнакове ціле число. Аналог - unsigned char.
DWORD 32-бітове беззнакове ціле. Аналоги: unsigned long int, UINT.
INT 32-бітове ціле. Аналог - long int
LONG 32-бітове ціле - аналог все також long int.
NULL нульовий покажчик.
UINT 32-бітове беззнакове ціле. Аналоги: unsigned long int, DWORD.
4
Типи даних в WinAPI Дескрипторні типи даних. Дескриптор - це ідентифікатор будь-
якого об'єкта.
Andrey Gladky [email protected]
Тип ОписHANDLE дескриптор об'єкта.
HBITMAP дескриптор растрового зображення.
HBRUSH дескриптор кисті.
HCURSOR дескриптор курсора.
HDC дескриптор контексту пристрою. Від фрази handle device context.
HFONT дескриптор шрифту.
HICONS дескриптор криптограми.
HINSTANCE дескриптор екземпляра додатка.
HMENU дескриптор меню.
HPEN дескриптор пера.
HWND дескриптор вікна. Від фрази handle window.
5
Типи даних в WinAPI Строкові типи даних Є два види кодувань символів: ANSI і UNICODE. Однобайтні
символи відносяться до ANSI, двухбайтові - до кодування UNICODE.
Допоміжні типи
Andrey Gladky [email protected]
Тип Опис
wchar_t Двобайтовий чар - Unicode
char Однобайтовий чар - ANSI
Тип ОписLPARAM тип для опису lParam (long parameter).
Використовуються разом з wparam в деяких функціях.LRESULT значення, що повертається віконної процедурою має
тип long.WPARAM тип для опису wParam (word parameter).
Використовуються разом з lParam в деяких функціях.
6
Події Подія - це повідомлення, яке виникає в різних точках
виконуваного коду при виконанні певних умов.
Події призначені для того, щоб мати можливість передбачити реакцію програмного забезпечення.
Для вирішення поставленого завдання створюються обробники подій: як тільки програма потрапляє в заданий стан, відбувається подія, надсилається повідомлення, а обробник перехоплює це повідомлення.
Подія - це перехід об'єкта з одного стану в інший. Взаємодія об'єктів також здійснюється за допомогою подій: зміна стану одного об'єкта призводить до зміни стану іншого об'єкта, а подія виявляється засобом зв'язку між об'єктами.
Andrey Gladky [email protected]
7
ПодіїПодія Опис
WM_KEYDOWN Ця подія генерується кожен раз, коли натискається клавіша на клавіатурі.
WM_KEYUP Ця подія генерується коли натиснута клавіша буде відпущена.
WM_LBUTTONDOWN Ця подія генерується коли користувач натискає ліву кнопку миші, якщо покажчик миші знаходиться в межах вікна.
WM_LBUTTONUP Ця подія генерується коли користувач відпускає ліву кнопку миші, якщо покажчик миші знаходиться в межах вікна.
WM_SETFOCUS Ця подія генерується коли додаток отримує фокус клавіатури. Наприклад, подія WM_SETFOCUS генерується, коли ви клацаєте мишею по неактивному вікні.
WM_SIZE Ця подія повідомляє вікно, що його розміри був змінений.
Andrey Gladky [email protected]
9
Повідомлення Зміни в стані апаратних засобів, самій операційній системі, інших
додатках, які можуть вплинути на хід виконання завдання, називаються подіями.
Додатки сповіщаються про події через повідомлення, які їм посилає Windows.
Вся система Windows побудована на передачі, приймані та обробки повідомлень. Замість безпосереднього контролю за станом пристроїв введення-виведення додаток повинен очікувати надходження відповідного повідомлення від операційної системи.
Windows створює спеціальні черги повідомлень, в які направляються повідомлення для додатків. Додатки, в свою чергу, повинні вибирати повідомлення з цієї черги і обробляти їх відповідним чином.
Крім того, вони самі можуть при необхідності посилати повідомлення операційній системі та іншим додатків.
Andrey Gladky [email protected]
10
Система повідомлень в Windows Апаратні повідомлення
Andrey Gladky [email protected]
Повідомлення ОписWM_LBUTTONDBLCLK Подвійне натискання лівої кнопки мишіWM_LBUTTONDOWN Натискання лівої кнопкиWM_LBUTTONUP Відпускання лівої кнопкиWM_MBUTTONDBLCLK Подвійне натискання середньої кнопкиWM_MBUTTONDOWN Натискання середньої кнопкиWM_MBUTTONUP Відпускання середньої кнопкиWM_MOUSEMOVE Переміщення мишіWM_RBUTTONDBLCLK Подвійне натискання правої кнопки мишіWM_RBUTTONDOWN Натискання правої кнопкиWM_RBUTTONUP Відпускання правої кнопки
11
Система повідомлень в Windows Повідомлення від клавіатури
Andrey Gladky [email protected]
Повідомлення Опис
WM_CHAR введення символуWM_DEADCHAR Діакритичний знак (наголос і т. Д.)WM_KEYDOWN Була натиснута клавішаWM_KEYUP Була відпущена клавішаWM_SYSCHAR Введення спеціальних символівWM_SYSDEADCHAR Спеціальний діакритичний знакWM_SYSKEYDOWN Була натиснута спеціальна клавішаWM_SYSKEYUP Була відпущена спеціальна клавіша
12
Система повідомлень в WindowsВіконні повідомлення:
http://www.realcoding.net/articles/prilozhenie-2-osnovnye-tipy-soobshchenii-windows.htmlAndrey Gladky
Повідомлення ОписWM_ACTIVATE Вікно активноWM_ACTIVATEAPP додаток активноWM_СREATE Вікно було створеноWM_DESTROY Вікно було знищеноWM_ENABLE Був дозволено введення у вікноWM_KILLFOCUS Вікно втратило фокус вводу від клавіатуриWM_MOUSEACTIVATE Вікно стане активним після натискання
кнопки мишіWM_MOVE Переміщення вікнаWM_SETFOCUS Вікно було переміщеноWM_S1ZE Вікно змінило розмір
13
Черга повідомлень Насамперед повідомлення потрапляють в системну чергу
повідомлень Windows. Далі з неї повідомлення розподіляються в черзі повідомлень додатків. Для кожного додатка створюється своя черга повідомлень.
Черга повідомленнь додатків може поповнюватися не тільки із системної черги. Будь-який додаток може послати повідомлення будь-якому іншому додатку, в тому числі і сам собі.
Обробка повідомлень
Andrey Gladky [email protected]
MSG msg; while(GetMessage(&msg, 0, 0, 0)) { DispatchMessage(&msg); }
14
Вікна Вікно - це прямокутна ділянка екрану, в якому додаток
відображає інформацію і отримує реакцію від користувача.
Andrey Gladky [email protected]
15
Вікна. Дескриптор вікна Одним з найважливіших понять в Windows-програмуванні є
поняття об'єктного дескриптора (handle). У Windows всі об'єкти - кисті, растри, покажчики миші, контексти пристроїв, вікна, екземпляри программ- ідентифікуються 32-розрядним (в Winl6 - 16-розрядним) цілим числом, яке називається дескриптором.
Дескриптор вікна.
Після створення вікна, функція, що його створює повертає дескриптор вікна (window handle), який унікально ідентифікує вікно. Дескриптор вікна має тип даних HWND; прикладна програма повинна використовувати цей тип при оголошенні змінної, яка містить в собі дескриптор вікна. Прикладна програма використовує цей дескриптор в інших функціях, щоб направити їх дії на це вікно.
Andrey Gladky [email protected]
16
Вікна. Стилі вікнаСтиль Опис
WS_BORDER Створення вікна з рамкою.WS_CAPTION Створення вікна з заголовкомWS_CHILDWINDOW Створення дочірнього вікнаWS_CLIPCHILDREN Виключає область, зайняту дочірнім вікном, при
виведенні в батьківське вікно.WS_CLIPSIBLINGS Використовується спільно зі стилем WS_CHILD для
відтворення в дочірньому вікні областей кліпу, що перекриваються іншими вікнами.
WS_DISABLED Створює вікно, яке недоступно.WS_DLGFRAME Створює вікно з подвійною рамкою, без заголовка.WS_GROUP Дозволяє об'єднувати елементи управління в групи.WS_HSCROLL Створює вікно з горизонтальною смугою прокрутки.WS_MAXIMIZE Створює вікно максимального розміру.
Andrey Gladky [email protected]
17
Вікна. Стилі вікнаСтиль Опис
WS_MAXIMIZEBOX Створює вікно з кнопкою розгортання вікна.WS_MINIMIZE Створює вікно мінімального розміру.WS_ICONIC Створює спочатку згорнуте вікноWS_MINIMIZEBOX Створює вікно з кнопкою згортання.WS_OVERLAPPED Створює перекриваюче вікноWS_SYSMENU Створює вікно з кнопкою системного менюWS_TABSTOP Визначає елементи управління, перехід до яких
може бути виконаний по клавіші TAB.WS_VISIBLE Створює спочатку невідображене вікно.WS_VSCROLL Створює вікно з горизонтальною смугою прокрутки.WS_THICKFRAME Створює вікно з рамкою, використовуваної для
зміни
Andrey Gladky [email protected]
18
Вікна. Віконний клас
Andrey Gladky [email protected]
Віконний клас (window class), або клас вікна - це структура, що визначає основні характеристики вікна. До них відносяться стиль вікна і пов'язані з вікном ресурси, такі як піктограма, курсор, меню і кисть для зафарбовування фону. Крім того, одне з полів структури містить адресу віконної процедури, призначеної для обробки повідомлень, одержуваних будь-яким вікном даного класу.
Посилання на віконний клас передається функції CreateWindow, призначеної для створення вікна.
Використання класу вікна дозволяє створювати безліч вікон на основі одного і того ж віконного класу і, отже, використовувати одну й ту ж віконну процедуру. Наприклад, всі кнопки в програмах Windows створені на основі віконного класу BUTTON.
19
Вікна. Віконна процедура
Andrey Gladky [email protected]
Віконна процедура класу, розташована в динамічно завантажувальній бібліотеці, управляє обробкою повідомлень для всіх кнопок всіх вікон.
Аналогічні системні класи є і для інших елементів управління, таких як, наприклад, списки і поля редагування. У сукупності ці класи називаються стандартними віконними класами.
Windows містить стандартний віконний клас також і для діалогових вікон, що грають важливу роль в графічному інтерфейсі користувача.