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

82. Простое приложение Windows. Функция окна. Сообщение wm_paint. Сообщение wm_destroy. Функция DefWindowProc(). Написание файла определения модуля.

в каждом приложении должна быть функция WinMain() и функция окна (window function). приложение Windows никогда не обращается к функциям окна непосредственно. Вместо этого программа посылает Windows запрос на выполнение данной операции.

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

Используя описатель окна, WindowProc() определяет, какому из них направлено сообщение.

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

За исключением самого первого сообщения WM_PAINT, посылаемого окну при вызове UpdateWindow() из WmMain(), эти сообщения будут посланы в следующих случаях:

  • при изменении размеров окна

  • если часть рабочей области была скрыта меню или окном диалога, которое в данный момент закрывается

  • при использовании функции ScrollWindow()

  • при принудительной генерации сообщения WM_PAINT вызовом функций InvalidateRect() или InvaUdateRgn()

Обработка сообщения WM_PAINT завершается вызовом функции EndPaint().

Можно завершить приложение, выбрав Close из оконного меню. При этом окну будет послано сообщение WM_DESTROY. Обрабатывая WM_DESTROY, функция окна вызывает PostQuitMessage(), которая помещает в очередь сообщение WM_QUIT. После получения этого сообщения приложение заканчивает работу.

Для создания программы Simple Windows Application необходимы два файла: файл с исходным текстом на С и файл определения модуля для Windows 3.1. Файл определения модуля (module definition file) содержит определения и описательную информацию, по которой компоновщик организует исполняемый файл для Windows 3.1. Эта информация становится частью заголовка, входящего в новый формат исполняемых файлов. В Windows 95 и Windows NT файлы определения модуля не используются и не должны включаться в проект.

83. Простое приложение и шаблон. Рисование эллипса. Рисование сегмента. Рисование сектора. Рисование прямоугольника.

Для рисования эллипса или окружности применяется функция Ellipse(). Центром эллипса является центр воображаемого прямоугольника, заданного точками (х1, у1) и (х2, у2).

Поскольку эллипс — замкнутая фигура, его можно закрасить.

Вызов функции выглядит так:

Ellipse (hdc,x1,y1,x2,y2)

Параметр hdc задает контекст устройства, остальные параметры имеют тип int. Функция возвращает значение типа BOOL.

Для рисования сектора эллипса используется функция Pie(). Центр дуги эллипса совпадает с центром прямоугольника, задаваемого точками (х1, у1) и (х2, у2). Дуга проводится между точками (хЗ, уЗ) и (х4, у4) в положительном направлении (против часовой стрелки). Концы дуги соединены отрезками с центром эллипса. Сектор также является замкнутой фигурой и закрашивается текущей кистью. Функция вызывается так:

Pie(hdc,x1,y1,x2,y2,x3,y3,x4,y4}

Функция Rectangle() рисует прямоугольник, заданный точками (х1, у1) и (х2, у2). Как и другие замкнутые фигуры, прямоугольник закрашивается текущей кистью. Вызов функции выглядит так:

Rectangle (hdc, х1,у1,х2,у2)

Параметр hdc задает контекст устройства, остальные параметры имеют тип int. Их значения не должны превосходить 32 767 (7FFFH).