Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WinAPI-ekz_shpory.docx
Скачиваний:
13
Добавлен:
25.09.2019
Размер:
185 Кб
Скачать
☆
  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. Получив это сообщение, функция окна должна перерисовать все окно или его часть.

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