Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WinAPI-ekz_shpory.docx
Скачиваний:
11
Добавлен:
25.09.2019
Размер:
185.19 Кб
Скачать
  1. Регистрация класса окна, основные элементы класса.

Для создания окна необходимо зарегистрировать класс окна. Есть классы окон, зарегистрированные при инициализации Windows. Приложение может создавать окна либо на базе собственных классов (созданных и зарегистрированных приложением), либо на базе готовых классов, созданных и зарегистрированных самой операционной системой Windows.

Для регистрации класса окна в приложении необходимо предварительно произвести описание класса окна. Это достигается путем заполнения полей специальной структуры WNDCLASS, определенной в файле windows.h.

typedef struct tagWNDCLASS

{

UINT style; // 1. Стиль класса, задается в виде констант с префиксом CS_

// wc.style=0 – стиль по умолчанию

// определяет реакцию окна на изменение его размера, на двойной щелчок мыши и др.

WNDPROC lpfnWndProc; // 2. Адрес функции окна, выполняющей обработку всех сообщений

// поступающих во все окна, созданные на базе данного класса

Int cbClsExtra; // 3. Доп. Память для окон, созд-мых на базе данного класса

Int cbWndExtra; // 4. Доп. Память для создания окна (3, 4 – в байтах)

HINSTANCE hInstance; // 5. Идентификатор приложения

// Следует использовать значение, получаемое функцией WinMain

// wc.hInstance=hInstance;

HICON hIcon; // 6. Идентификатор пиктограммы

HCURSOR hCursor; // 7. Вид курсора мыши

HBRUSH hbrBackground;// 8. Заливка (прост.случай- цифры от 0 до 7)

LPCSTR lpszMenuName; // 9. Имя меню, если оно есть

LPCSTR lpszClassName;// 10. Указатель на строку, содержащую имя класса окна

} WNDCLASS;

Для загрузки пиктограммы используется функция HICON WINAPI LoadIcon(HINSTANCE hinst, LPCSTR pszicon); второй параметр – имя загружаемой пиктограммы. Для курсора – LoadCursor.

Перед регистрацией необходимо заполнить все поля в этой структуре, после чего вызывается функция регистрации класса окна RegisterClass – возвращает ненулевое значение, если регитсрация произошла успешно.

if (!RegisterClass(&wndclass)) exit(FALSE);

______________________________________________________________________________________

Создание главного окна приложения осуществляется посредством вызова функции CreateWindow:

hwnd = CreateWindow(

szClassName, // имя класса окна

szWindowTitle, // заголовок окна

WS_OVERLAPPEDWINDOW, // стиль окна: перекрывающееся окно – главное окно приложения

CW_USEDEFAULT, // задаем размеры и расположение

CW_USEDEFAULT, // окна, принятые по умолчанию

CW_USEDEFAULT,

CW_USEDEFAULT,

0, // идентификатор родительского окна

0, // идентификатор меню или дочернего окна

hInstance, // идентификатор приложения

NULL);//указатель на дополнительные параметры - передается в функцию окна вместе с сообщением WM_CREATE при создании окна

// Если создать окно не удалось, завершаем приложение

if (!hwnd) exit(FALSE);

_______________________________________________________________________________

Для отображения окна используем ShowWindow(hwnd, nCmdShow), отображающей окно с идентификатором hwnd в виде (нормальном, пиктограммой и др.), зависящем от второго параметра (он здесь имеет БОЛЬШИЙ приоритет, чем при регистрации).

Далее вызывается функция UpdateWindow(hwnd), посылающая функции окна с идентификатором hwnd сообщение WM_PAINT. Получив это сообщение, функция окна должна перерисовать все окно или его часть.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]