Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры печатать.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
379.36 Кб
Скачать

80. Простое приложение Windows. Style. LpfnWndProc. CbClsExtra. CbWndExtra. Hinstance. HIсоn. HCursor. HbrBackground. IpszMenuName. IpszClassName.

Поле style задает стиль класса окна.

Константа

Значение

CS_BYTEALIGNCLIENT

Выравнивать рабочую область по границе байта

CS_BYTEALINWINDOW

Выравнивать окно по границе байта

CS_CLASSDC

Создать контекст устройства для данного класса

CS_DBLCLKS

Послать окну сообщения о двойном щелчке

CS_GLOBALCLASS

Класс является глобальным

CS_HREDRAW

Полностью перерисовывать окно при изменении горизонтального размера

CS_NOCLOSE

Убрать команду "Закрыть" из оконного меню

CS_OWNDC

Каждое окно должно получить свой контекст устройства

CS_PARENTDC

Передать окну контекст устройства окна-родителя

CS_SAVEBITS

Сохранять в памяти область экрана, покрываемую окном

CS_VREDRAW

Полностью перерисовывать окно при изменении вертикального размера

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

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

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

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

Поле hIсоn определяет значок, который должен использоваться для представления окна в свернутом состоянии. Это поле может иметь нулевое значение.

Поле hCursor определяет курсор, который должен использоваться при нахождении мыши в рабочей области окна. Это поле также может иметь нулевое значение.

Поле hbrBackground задает кисть для фона окна.

В поле IpszMenuName находится указатель на строку, заканчивающуюся нулем. В строке должно содержаться имя ресурса меню.

Поле IpszClassName содержит указатель на строку, заканчивающуюся нулем. Строка задает имя класса окна.

81. Простое приложение Windows. Создание окна. Отображение и перерисовка окна. Цикл обработки сообщений. Функция GetMessage(). Функция TranslateMessage(). Функция DispatchMessage().

Независимо от того, первый это экземпляр приложения или нет, необходимо создать окно. Окно создается путем обращения к функции CreateWindow().параметры функции CreateWindow() задают более подробную информацию, относящуюся только к данному окну. Эта дополнительная информация подразделяется на следующие категории: класс, заголовок, стиль, положение на экране, описатель окна-родителя, описатель меню, описатель экземпляра и 32 разряда дополнительной информации.

hWnd=CreateWindow(szProgName, "Simple Windows Application",

WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,

CW_USEDEFAULT, CW_USEDEFAULT,

CW_USEDEFAULT, (HWND)NULL, (HMENU)NULL,

(HANDLE)hInst,(LPSTR)NULL);

Первый параметр, szProgName, определяет класс окна. За ним следует строка, которая будет использоваться в качестве заголовка — "Simple Windows Application" (простое приложение Windows). Стиль окна задается третьим параметром (WS_OVERLAPPEDWINDOW). Этот стандартный стиль определяет обычное перекрывающееся окно, имеющее заголовок, кнопку оконного меню, кнопки свертывания и развертывания и широкую рамку.

Следующие шесть параметров (имеющие значения CW_USEDEFAULT или NULL) задают начальные координаты верхнего левого угла и размеры окна, а также описатель окна-родителя и описатель меню. Параметр hInst содержит описатель экземпляра программы, а затем следует дополнительный параметр (NULL).

всего этого необходимо еще обратиться к функции ShowWindowO:

ShowWindow(hWnd,nCmdShow);

Второй параметр, nCmdShow, определяет способ отображения окна. Значение nCmdShow может указать, что окно должно отображаться в обычном виде (SW_SHOWNORMAL), SW_SHOWMAXIMIZED, что приводит к активизации окна и развертыванию на весь экран, и противоположность этому, SW_SHOWMINIMIZED

Последним шагом в изображении окна должен быть вызов функции UpdateWmdow():

UpdateWindow(hWnd);

заставляет перерисовать рабочую область, посылая сообщение WM_PAINT.

Когда окно приложения создано и отображено на экране, программа готова приступить к своей главной задаче — обработке сообщений. Windows помещает сообщения в очередь приложения. Как только функция WinMain() создала окно и вывела его на экран, необходимо создать цикл обработки сообщений (message loop). Этот цикл обычно организуется при помощи ключевого слова while:

while (GetMessage(&msg,0,0,0)) {

TranslateMessage(&msg) ;

DispatchMessage(&msg);

}

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

Функция TranslateMessage() необходима только в тех программах, которые обрабатывают ввод с клавиатуры.

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