Содержит идентификатор пиктограммы, в которую сворачивается окно. Для загрузки пиктограммы вызвается функция программного интерфейса Windows

Класс Окна

Совокупность окон, использующих одну и ту-же функцию окна, представляет собой Класс Окно. Экземпляры окон одного класса используют общие методы обработки сообщений, но имеют различные значения полей данных. При создании окна, необходимо указать к какому классу оно будет принадлежать. Соответсвенно, какую функцию окна будет использовать для обработки сообщений. Приложения могут создавать собственные класы окна, определяя сови функции окна, либо используя стандарты, определенные Windows -Класс Окно. Любое создаваемое окно может наследовать свойства уже созданных ранее окон, добавляя свои или переопределяя уже имеющиеся в базовом классе методы. В этом заключается механизм наследования Windows. Использования механизма наследования упрощает процесс создания приложения, посокольку для стандартных органов управленияе уже определены классы окна.

Описания класса окна

Для описания класса окна используется структура, определенная в файле windows.h.

typedef struct tagWndClass{

uint style; //(1)

WNDPROC lpfnWndProc; //(2)

int cbcesExtra; //(3)

int cbWindExtra; //(4)

HINSTANCE hInstance; //(5)

HICON hIcon; //(6)

HCURSOR hCursor; //(7)

HBRUSH hbrBackground; //(8)

LPCSTR lpszMenuName; //(9)

LPCSTR lpszClassName; //(10)

} WNDCLASS;

(1) — определяет стиль класса, и задается в виде констант с префиксом CS_

(например CS_HRERAW, CS_VREDRAW). Это означает, что окно будет перерисовывать свое содержимое при изменении горизонтального размера\ при изменении вертикального размера

(2) - содержит адрес функции окна, которая будет выполнять обработку сообщений, поступающих во все окна, собранных на базе данного класса. Имя функции окна может быть любым. При присваивании адреса функции необходимо использовать явное приведение к типу WNDPROC.

(3) - используется для резервирования дополнительной памяти, общей и доступной для всех окон, создаваемых на базе данного класса. Оно определяет размер дополнительной памяти в байтах.

(4) - позволяет увеличить размер области памяти для хранения информации, имеющей отношение к создаваемому окну.

(5) - содержит идентификатор приложения, создающего класс окна.

HICON WINAPI LoadIcon(HINSTANCE hinst, LPCSTR icon);

hinst — идентификатор приложения

icon — идентификатор ресурса пиктограммы.

(7) - задает вид курсора мыши, при прохождении его над окном

HCURSOR WINAPI LoadCursor(HINSTANCE hinst, LPCSTR curs);

hinst — идентификатор приложения

curs — идентификатор курсора.

(8) - определяет кисть, для закрашивания фона окна. В качестве кисти можно использовать либо цвет, либо пиктограмму.

(ПРИМЕР) использование системного цвета.

(HBRUSH)(COLOR_Window+1)

(9) - задает индентификатор меню. Если меню нету, должен указываться NULL.

(10) — указатель на строку, с именем регистрируемого класса.

Регистрация класса Окна

Прежде чем создавать окна на основе разработанного класса, необходимо класс зарегестрировать. Регистрация производится с помощью функции

ATOM WINAPI RegisterClass(const WNDCLASS FAR* f)

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

Создание главного окна приложения.

HWND CreateWindow(LPCSTR className, LPCSTR WindowName, DWORD style, int x, int y, int w, int h, HWND Parent, HMENU hmenu, HINSTANCE hinst, void FAR* Param)

(1) указатель на строку, содержащее имя класса.

(2) — указатель на строку, содержащее заголовок окна.

(3) - стиль окна

(4), (5) — координаты левого верхнего угла.

(6), (7) — ширина и высота

(8) — идентификатор родительского окна

(9) - идентификатор меню.

(10) - идентификатор приложения

(11) - укзатель на область данных, определяемых приложением.

Лекция №3 (22.09.10)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: