Стили класса, стили окна

Функция WinMain

LRESULT CALLBACK WindowProc(HWND hwnd,// handle to window UINT uMsg,// message identifier WPARAM wParam,// first message parameter LPARAM lParam // second message parameter );

Параметр hwnd содержит дескриптор окна, uMsg – тип сообщения, остальные два – содержат дополнительную информация, прилагающуюся к сообщению.

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

Функция окна может выбрать отвечать или нет на данное сообщения. В случае игнорирования надо всё-таки дать возможность системе получить ответ с помощью

LRESULT DefWindowProc(HWND hWnd,// handle to window UINT Msg,// message identifier WPARAM wParam,// first message parameter LPARAM lParam // second message parameter );

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

Оконный класс

typedef struct _WNDCLASSEX { UINT cbSize; //размер структуры WNDCLASSEX в байтах UINT style; //стиль окна (примеры стилей см.таблицу №1 Приложения 1) WNDPROC lpfnWndProc; //указатель на оконную функцию int cbClsExtra; /*число дополнительных байтов, которые должны быть распределены в конце структуры класса для хранения информации*/ int cbWndExtra; /*число дополнительных байтов, которые должны быть распределены вслед за экземпляром окна*/ HINSTANCE hInstance; /*дескриптор экземпляра, в котором находится оконная процедура для этого класса*/ HICON hIcon; //дескриптор большой пиктограммы HCURSOR hCursor; //дескриптор курсора HBRUSH hbrBackground;//дескриптор кисти LPCTSTR lpszMenuName; //указатель на строку, содержащую имя меню LPCTSTR lpszClassName;//указатель на строку, содержащую имя класса HICON hIconSm; //дескриптор малой пиктограммы} WNDCLASSEX, *PWNDCLASSEX;

После формирования класса окна, его необходимо зарегистрировать в системе. Для этого применяется функция API RegisterClassEx().

ATOM RegisterClassEx (CONST WNDCLASSEX * lpWndClass);

Единственный параметр должен содержать адрес структуры класса окна. В случае удачной регистрации возвращается уникальный идентификатор зарегистрированного класса. Анрегистрация классов происходит при закрытии приложения.

Стили класса, стили окна

Стиль создаваемого окна определяется параметром UINT style при описании оконного класса. Стиль создаваемого окна определяется параметром dwStyle у функции HWND CreateWindow(…)

Стиль Описание
CS_BYTEALIGNCLIENT Выравнивать клиентскую область окна в горизонтальном направлении по границе байта для повышения производительности вывода. Влияет на ширину окна и его горизонтальную позицию на дисплее.
CS_BYTEALIGNWINDOW Выравнивать окно в горизонтальном направлении по границе байта.
CS_CLASSDC Распределить один контекст устройства для совместного использования всеми классами окна. Если несколько нитей в приложении будут пытаться использовать DC одновременно, система Windows разрешит успешно выполнить работу только одной нити.
CS_DBLCLKS Извещает окно, когда происходит двойной щелчок.
CS_GLOBALCLASS Создать класс, доступный всем приложениям (во время работы данного приложения, создавшего этот класс).
CS_HREDRAW Перерисовывать все окно, если изменен размер по горизонтали.
CS_NOCLOSE Запретить команду Close в системном меню.
CS_OWNDC Распределить уникальный контекст устройства для каждого окна, которое создано с помощью этого класса.
CS_PARENTDC Каждое окно, созданное с использованием этого класса, будет использовать контекст устройства родительского окна.
CS_SAVEBITS Сохранить в виде растрового рисунка часть экранного изображения, затененного окном. Этот растровый рисунок используется для воссоздания изображения на экране после удаления окна.
CS_VREDRAW Перерисовывать все окно, если изменен размер по вертикали.

Таблица №1 Стили класса окна

Стиль Описание
WS_BORDER Создание окна с рамкой в виде тонкой линии
WS_CAPTION Создание окна с заголовком (невозможно использовать одновременно со стилем WS_DLGFRAME). Включает стиль WS_BORDER
WS_CHILD WS_CHILDWINDOW Создание дочернего окна (невозможно использовать одновременно со стилем WS_POPUP).
WS_CLIPCHILDREN Исключает область, занятую дочерним окном, при выводе в родительское окно.
WS_CLIPSIBLINGS Используется совместно со стилем WS_CHILD для отрисовки в дочернем окне областей клипа, перекрываемых другими окнами.
WS_DISABLED Создает окно, которое недоступно.
WS_DLGFRAME Создает окно с двойной рамкой, без заголовка.
WS_GROUP Позволяет объединять элементы управления в группы.
WS_HSCROLL Создает окно с горизонтальной полосой прокрутки.
WS_MAXIMIZE Создает окно максимального размера.
WS_MAXIMIZEBOX Создает окно с кнопкой развертывания окна.
WS_MINIMIZE WS_ICONIC Создает первоначально свернутое окно (используется только со стилем WS_OWERLAPPED).
WS_MINIMIZEBOX Создает окно с кнопкой свертывания.
WS_OVERLAPPED Создает перекрывающееся окно (которое, как правило, имеет заголовок и WS_TILED рамку).
WS_OVERLAPPED WINDOW Создает перекрывающееся окно, имеющее стили WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, WS_MAXIMIZEBOX.
WS_POPUP Создает popup-окно (невозможно использовать совместно со стилем WS_CHILD).
WS_POPUPWINDOW Создает popup-окно, имеющее стили WS_BORDER, WS_POPUP, WS_SYSMENU.
WS_SYSMENU Создает окно с кнопкой системного меню (можно использовать только с окнами имеющими строку заголовка).
WS_TABSTOP Определяет элементы управления, переход к которым может быть выполнен по клавише TAB.
WS_THICKFRAME WS_SIZEBOX Создает окно с рамкой, используемой для изменения размера окна.
WS_VISIBLE Создает первоначально отображаемое окно.
WS_VSCROLL Создает окно с вертикальной полосой прокрутки.

Таблица №2 Стили окна


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



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