Як створити вікно Windows

Як створити вікно Windows

В основі принципів функціонування інтерфейсу операційних систем сімейства Windows лежить концепція вікна. Робочий стіл, панель завдань, списки, діалоги, кнопки, меню — все це вікна. Тому, фактично, для того щоб відобразити будь-який елемент інтерфейсу, треба створити вікно windows.

Вам знадобиться

- Компілятор;
- Windows Platform SDK.

Інструкція

  1. Зареєструйте клас вікна, яке має бути створено, якщо це необхідно. Проведіть виклик API-функцій RegisterClass, RegisterClassEx або використовуйте відповідний функціонал застосовуваного фреймворка.

    Опції RegisterClass і RegisterClassEx приймають як єдиного параметра покажчики на структури типу WNDCLASS і WNDCLASSEX відповідно. Значення, що повертається типу ATOM може використовуватися замість імені класу при створенні вікна. Якщо виклик функції завершиться невдачею, буде повернуто значення 0.

    Створіть екземпляр структури типу WNDCLASS або WNDCLASSEX. Заповніть всі необхідні поля. Зокрема, коректні значення повинні бути поміщені в:

    - CbSize — розмір структури в байтах;

    - Style — набір стилів класу вікна;

    - LpfnWndProc — покажчик на віконну процедуру;

    - HInstance дескриптор модуля, в якому проводиться реєстрація класу вікна;

    - LpszClassName — символічне ім’я класу.

    В інші поля можуть бути записані значення NULL. Проведіть виклик функції для реєстрації класу вікна. Перевірте повернутий результат.
  2. Виберіть існуючий клас вікна, якщо це необхідно. Вам має бути відомо символічне ім’я класу (те, яке передається через вказівник lpszClassName при його реєстрації) або відповідне значення типу ATOM. Клас може бути локальним на рівні програми, глобальним на рівні додатку (реєстрація виконана з прапором CS_GLOBALCLASS) або системним. До останнього типу відносяться класи вікон з іменами: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. Такі класи, як RichEdit20W або SysListView32, реєструються при завантаженні відповідних бібліотек.
  3. Створіть вікно Windows. Скористайтеся API-функціями CreateWindow, CreateWindowEx або відповідними методами-обгортками об’єктів класів використовуваного фреймворку або бібліотеки. Прототип функції CreateWindowEx виглядає наступним чином:

    HWND CreateWindowEx (

    DWORD dwExStyle,

    LPCTSTR lpClassName,

    LPCTSTR lpWindowName,

    DWORD dwStyle,

    int x,

    int y,

    int nWidth,

    int nHeight,

    HWND hWndParent,

    HMENU hMenu,

    HINSTANCE hInstance,

    LPVOID lpParam

    );

    Функція CreateWindow відрізняється від CreateWindowEx лише відсутністю параметра dwExStyle.

    Здійсніть виклик CreateWindow або CreateWindowEx. Передайте як параметр lpClassName ім’я або значення типу ATOM класу вікна, визначене на першому або другому кроці. Параметрами x, y, nWidth, nHeight можуть бути координати і розміри створюваного вікна. Дескриптор вікна-батька (якщо таке є) передається через hWndParent.

    Збережіть і проаналізуйте значення, повернене функціями CreateWindow або CreateWindowEx. При успіху вони повернуть дескриптор нового вікна, при невдачі — NULL.