- Основні поняття і терміни, використовувані при розробці Windows додатків
- Нотація Windows ( "угорська нотація Чарльза Сімоні")
- Деякі префікси угорської нотації:
- Часто використовувані типи даних Windows:
- Створення найпростішого Windows-додатки з використанням Win API
- Найпростіша програма. Створення і висновок Windows-вікна на екран
- Коментарі до програми
- Параметри функції WinMain:
Наша взаимовыгодная связь https://banwar.org/
Анотація: У даній лекції вводяться основні терміни і поняття, що використовуються при розробці Windows-додатків. Розглядаються найпростіші приклади створення Windows-додатки з використанням Win-API.
Основні поняття і терміни, використовувані при розробці Windows додатків
Приклади програм для лекції.
Ядро Windows:
- USER (16, 32) .dll - функції введення з клавіатури миші, введення через інтерфейс і т.д. (Взаємодія додатків з користувачами і середовищем Windows).
- KERNEL (16, 32) .dll - функції операційної системи (пам'ять, розподіл системних ресурсів, завантаження).
- GDI (16, 32) .dll - графічний інтерфейс (функції створення та для демонстрації зображень).
GUI (Graphics User Interface) - стандартний графічний інтерфейс користувача. Це та частина Windows, яка забезпечує підтримку апаратно-незалежної графіки.
API (Application Program Interface) - інтерфейс прикладних програм (набір функцій, зосереджених в ядрі Windows і додаткових бібліотеках).
DLL (Dynamic Link Libraries) - бібліотека динамічного компонування. Функції API містяться в бібліотеках динамічного завантаження.
DDE - динамічний обмін даними.
Нотація Windows ( "угорська нотація Чарльза Сімоні")
При програмуванні під Windows прийнято використовувати префікси перед іменами змінних, що вказують на приналежність до типу даних. Рекомендується давати імена власним змінним і ідентифікаторів, дотримуючись таких принципів:
- мнемонічне значення - ідентифікатор повинен легко запам'ятовуватися;
- смислове значення - роль ідентифікатора повинна бути ясна з його назви;
- спадкоємність - схожі об'єкти повинні мати схожі ідентифікатори;
- швидкість прийняття рішення - придумування, введення і редагування ідентифікатора не повинні займати багато часу.
Деякі префікси угорської нотації:
Префікс Значення A масив B логічний тип (int) By беззнаковий символьний тип (byte) C символьний тип (1 байт) Cb лічильник байтів Cr колір cx, cy короткий тип (short) Dbl double (з плаваючою точкою) Dw беззнаковое довге ціле число ( dword) Flt float (речова з плаваючою точкою) Fn функція g_ префікс для глобальної змінної (глобальна змінна) H handle (беззнаковое ціле число) hDC handle (покажчик на контекст пристрою) I ціле (integer) Id інтегральне значення ідентифікатора L довгий тип (long ) Lp довгий покажчик Lpsz дальній покажчик на рядок, що закінчується нульовим байтом m_ змінна класу N short або int Np ближній покажчик P покажчик Pfn покажчик на функцію Pst покажчик на структуру Psz покажчик на рядок, що закінчується нульовим байтом Pv покажчик на тип void S рядок Sz рядок, що закінчує нуль-символом U беззнаковий символ Tm текстова метрика V тип void W беззнаковое ціле (word, 16-біт) x, y коротке ціле число (координата x або y)
Часто використовувані типи даних Windows:
Тип даних Опис HANDLE визначає ідентифікатор; 32-розрядний ціле, яке використовується в якості дескриптора - числа, що визначає деякий ресурс HWND визначає ідентифікатор вікна HDC визначає ідентифікатор контексту пристрою LONG 32-бітове ціле зі знаком LPSTR визначає лінійний покажчик NULL 0 UINT тип даних Win32 (32 біта для Win32) WCHAR 16- бітовий символ UNICODE. Використовується для представлення символів мов світу
Створення найпростішого Windows-додатки з використанням Win API
Елементи Windows-додатки
Побудова додатки Windows включає виконання наступних етапів:
- Створення WinMain (...) і пов'язаних з нею функцій на мові C або C ++.
- Створення описів меню і всіх додаткових ресурсів, приміщення описів в файл опису ресурсів.
- Створення унікальних курсорів, піктограм і бітових образів.
- Створення діалогових вікон.
- Створення файлу проекту.
- Компіляція і компоновка всього коду.
Найпростіша програма. Створення і висновок Windows-вікна на екран
Створимо порожній проект Windows- додатка за допомогою майстра:
- File
New
Project.
- Project types: Win32 Templates: Win32 Project.
- Ok.
- Встановити галочку Empty project.
- Додати в проект файл * .cpp.
- Project
Properties. Вкладка Configuration Properties
General.
- Значення поля Character Set встановлюємо Use Multi-Byte Character Set.
Додамо наступний код:
#include <windows.h> LONG WINAPI WndProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {HWND hwnd; MSG msg; WNDCLASS w; memset (& w, 0, sizeof (WNDCLASS)); w.style = CS_HREDRAW | CS_VREDRAW; w.lpfnWndProc = WndProc; w.hInstance = hInstance; w.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); w.lpszClassName = "My Class"; RegisterClass (& w); hwnd = CreateWindow ( "My Class", "Вікно користувача", WS_OVERLAPPEDWINDOW, 500, 300, 500, 380, NULL, NULL, hInstance, NULL); ShowWindow (hwnd, nCmdShow); UpdateWindow (hwnd); while (GetMessage (& msg, NULL, 0,0)) {TranslateMessage (& msg); DispatchMessage (& msg); } Return msg.wParam; } LONG WINAPI WndProc (HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam) {switch (Message) {case WM_DESTROY: PostQuitMessage (0); break; default: return DefWindowProc (hwnd, Message, wparam, lparam); } Return 0; }
Скомпілюємо і запустимо програму. На екрані з'явиться Windows-вікно.
Коментарі до програми
Всі додатки Windows повинні містити два основних елементи: функцію WinMain (...) і функцію вікна WndProc.
Функція WinMain (...) служить точкою входу в додаток. Ця функція відповідає за наступні дії:
- реєстрацію типу класу вікон програми;
- виконання всіх дій, що ініціалізували;
- створення і ініціалізацію циклу повідомлень додатка;
- завершення програми (зазвичай при отриманні повідомлення WM_QUIT).
Функція WndProc відповідає за обробку повідомлень Windows. Ця частина програми є найбільш змістовною з точки зору виконання поставлених перед програмою завдань. Якщо ми хочемо, щоб програма звертала на наші дії увагу, то необхідно додати гілки case для оператора switch в віконну процедуру WndProc. Наприклад, якщо ми хочемо, щоб наш додаток звертало увагу на клацання лівою кнопкою миші - додаємо гілку case WM_LBUTTONDOWN. На даний момент у віконній процедурі відбувається тільки обробка повідомлення WM_DESTROY. Більше Windows-вікно поки нічого робити не вміє.
Заголовки windows.h потрібен для будь-якої традиційної Windows програми на C. Саме в ньому містяться різні визначення констант (WM_DESTROY і т. Д.).
Параметри функції WinMain:
- hInstance (тип HINSTANCE) - є ідентифікатором поточного екземпляра додатка. Дане число однозначно визначає програму, що працює під управлінням Windows.
- hPrevInstance (тип HINSTANCE) - вказував раніше (Windows 3.1) на попередній запущений екземпляр програми. У сучасних версіях Windows він дорівнює NULL.
- lpCmdLine - це покажчик на рядок, що закінчується нульовим байтом. У цьому рядку містяться аргументи командного рядка додатка (як правило, містить NULL).
- nCmdShow - цей параметр приймає значення однієї із системних констант, що визначають спосіб зображення вікна (наприклад, SW_SHOWNORMAL, SW_SHOWMAXIMIZED або SW_SHOWMINIMIZED).