GUI -приложения: структура сообщения, процесс обработки сообщений. — КиберПедия 

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

GUI -приложения: структура сообщения, процесс обработки сообщений.

2023-01-01 33
GUI -приложения: структура сообщения, процесс обработки сообщений. 0.00 из 5.00 0 оценок
Заказать работу

GUI – Graphical User Interface – графический интерфейс пользователя

Сообщение представляется следующей структурой:

typedef struct {

    HWND hwnd;

    UINT message;

    WPARAM wParam;

    LPARAM lParam;

    DWORD time;

    POINT pt;

} MSG

hwnd – дескриптор окна, куда адресовано сообщение.

message – код сообщения. Приложение может использовать только младшее слово. Старшее слово зарезервировано системой.

wParam – дополнительная информация; зависит от типа сообщения.

lParam – дополнительная информация; зависит от типа сообщения.

time – время, когда сообщение было послано.

pt – координаты указателя мыши в момент, когда сообщение было послано. Младшее слово – Х, старшее – Y.

Процесс обработки сообщений в Windows:

 

Структура GUI -приложения. Регистрация класса окон.

Так как в GUI-приложении должно быть минимум одно окно, в структуре приложения можно выделить следующие блоки:

1) регистрация класса окон

2) создание главного окна

3) процедура главного окна

4) цикл обработки сообщений

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

Прежде чем создавать окно, должен быть зарегистрирован класс окон. Окно затем создается как экземпляр данного класса.

Для регистрации используется API-функция RegisterClass, с одним параметром – адресом структуры, имеющей тип WNDCLASS:

ATOM RegisterClass(

    CONST WNDCLASS * lpWndClass

);

typedef struct _WNDCLASS {

UINT style;

WNDPROC lpfnWndProc;

int cbClsExtra;

int cbWndExtra;

HANDLE hInstance;

HICON hIcon;

HCURSOR hCursor;

HBRUSH hbrBackground;

LPCTSTR lpszMenuName;

LPCTSTR lpszClassName;

} WNDCLASS;

Style – стиль окна:перерисовывать окно при перемещении,деактивировать кнопку «Закрыть»,эффекты Windows XP и др.

lpfnWndProc – адрес процедуры обработки сообщений окна. Для всех окон данного класса объявляется одна процедура окна.Каждое окно при создании имеет собственный дескриптор. Часто для каждого окна создают свой класс.

cbClsExtra – количество дополнительных байт для класса. Должен быть равен нулю.

cbWndExtra – количество дополнительных байт для окна. Должен быть равен нулю.

hInstance – дескриптор приложения, которое содержит процедуру для данного класса.

hIcon – дескриптор пиктограммы окна. Если ноль, то по умолчанию.

hCursor – дескриптор курсора мыши. Если ноль, то по умолчанию.

hbrBackground – цвет окна.

lpszMenuName – имя ресурса, содержащего меню.

lpszClassName – адрес строки, содержащей имя класса.

 

GUI -приложения: создание главного окна, процедура окна.

Для создания окна используется функция CreateWindow:

HWND CreateWindow(

    LPCTSTR lpClassName,

    LPCTSTR lpWindowName,

    DWORD dwStyle,

    int x,

    int y,

    int nWidth,

    int nHeight,

    HWND hWndParent,

    HMENU hMenu,

    HINSTANCE hInstance,(=0)

    LPVOID lpParam

);

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

lpWindowName – адрес строки, где содержится имя создаваемого окна (отображается в заголовке).

dwStyle – стиль окна:

· WS_MAXIMIZE – развернутое окно

· WS_MINIMIZE – свернутое окно

· WS_CAPTION – есть заголовок

· WS_DISABLED – недоступное окно

· WS_SIZEBOX – окно с изменяемыми размерами

· WS_VISIBLE – видимое окно

x, y – координаты левого верхнего угла.

nWidth, nHeight – ширина и высота окна.

hWndParent – дескриптор родительского окна. Для главного окна = 0.

hMenu – дескриптор меню. Обычно равен нулю.

hInstance – дескриптор модуля, который ассоциирован с этим окном. В Windows NT/2000/XP игнорируется.

lpParam – адрес переменной, которая будет передана в окно.

Каждое окно имеет процедуру окна (window procedure) – функцию, которая обрабатывает все сообщения, передаваемые всем окнам данного класса. Процедура окна начинает работать сразу после создания окна.

Процедура окна должна иметь 4 параметра:

LRESULT CALLBACK WindowProc(     HWND hwnd,

    UINT uMsg,

    WPARAM wParam,

    LPARAM lParam

);

Hwnd – дескриптор окна (процедура одна на целый класс окон).

uMsg – число – идентификатор сообщения.

wParam, lParam – дополнительные параметры.

Если процедура окна не обрабатывает какие-то сообщения, их должна обрабатывать системная процедура DefWindowProc с теми же параметрами. Процедура окна возвращает ноль, если сообщение обработано и значение, возвращаемое DefWindowProc, в противном случае.

 


Поделиться с друзьями:

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

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

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.017 с.