Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab2.doc
Скачиваний:
2
Добавлен:
12.11.2019
Размер:
964.1 Кб
Скачать

2.1. Определение класса окна

Первые два действия, которые выполняет функция WinMain(), — это определение класса окна и его регистрация. Класс окна определяется путем заполнения полей структуры типа WNDCLASSEX. Эти поля заданы следующим образом:

UINT cbSize; /* размер структуры WNDCLASSEX */.

UINT style; /* тип окна */

WNDPROC IpfnWndProc; /* адрес функции окна */

int cbClsExtra; /* дополнительная информация о классе */

int cbWndExtra; /* дополнительная информация об окне */

HINSTANCE hlnstance; /* дескриптор данного экземпляра программы */

HICON hlcon; /* дескриптор большой пиктограммы */

HICON hlconSm; /* дескриптор малой пиктограммы */

HCURSOR hCursor; /* дескриптор курсора мыши */

HBRUSH hbrBackground; /* цвет фона */

LPCSTR IpszMenuName; /* имя главного меню */

LPCSTR IpszClassName; /* имя класса окна */

Из текста программы видно, что в поле cbSize записывается размер структуры WNDCLASSEX. В поле hlnstance записывается дескриптор текущего экземпляра приложения, содержащийся в параметре hThisInst. Поле lpszClassName содержит Указатель на имя класса окна, которым в данном случае является строка"MyWin". Адрес функции окна записывается в поле lpfnWndProc.

Все приложения Windows должны определять стандартный вид курсора мыши, также пиктограммы приложения. В программе могут использоваться собственна ресурсы курсоров и пиктограмм, но могут задаваться и встроенные стили, как сделано в данном примере. В любом случае дескрипторы указанных ресурсов должны быть записаны в соответствующие поля структуры WNDCIASSEX. Эти действия стоит рассмотреть подробнее.

В Windows 95 с приложением связаны две пиктограммы: малая и большая. Малая пиктограмма отображается в системном меню, а также когда окно приложи минимизировано. Большая пиктограмма отображается при перемещении или копировании приложения (точнее ссылки на него) на рабочий стол. Обычно большие пиктограммы имеют размер 32x32 пикселя, а малые пиктограммы — 16x16 пикселей. Каждая пиктограмма загружается с помощью API-функции Loadlcon(), которая имеет такой прототип:

HICON LoadIcon(HINSTANCE hlnst, LPCSTR IpszName);

Эта функция возвращает дескриптор пиктограммы. Здесь параметр hInst является дескриптором модуля, который содержит пиктограмму, а ее имя задается параметром lpszName. При использовании встроенных пиктограмм первый параметр должен равняться NULL, а второй параметр должен содержать одну из следующих констант.

Таблица 2.1. Пиктограммы

Константа

Вид пиктограммы

IDI_APPLICATION

Стандартная системная пиктограмма

IDI_ASTERISK

Информационная пиктограмма c буквой "I"

IDI_EXCLAMATION

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

IDI_HAND

Пиктограмма с надписью "Stop"

IDI_QUESTION

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

IDI_WINLOGO

Программа с логотипом Windows 95

В данном примере в качестве большой пиктограммы используется пиктограмма IDI_APPLICATION, а в качестве малой пиктограммы — пиктограмма IDI_WINLOGO. Можно также определять собственные пиктограммы.

Для загрузки курсора мыши используется API-функция LoadCursor(), имеющая такой прототип:

HCURSOR LoadCursor(HINSTANCE hlnst, LPCSTR IpszName);

Эта функция возвращает дескриптор курсора. Здесь параметр hlnst является дескриптором модуля, который содержит данный курсор, а имя курсора параметром lpszName. При использовании встроенных курсоров первый параметр должен равняться NULL, а второй параметр должен содержать одну из констант встроенных курсоров. Ниже приведены некоторые из наиболее часто используемых констант:

Таблица 2.2. Некоторые из встроенных курсоров Windows 95

Константа

Форма курсора

IDC_ARROW

Стандартный указатель типа стрелка

IDC_CROSS

Перекрестие

IDC_IBEAM

Текстовый курсор

IDC_WAIT

Песочные часы

Цвет фона окна, создаваемого в программе, определяется белым, а дескриптор кисти фона получается с помощью API-функции GetStockObject(). Кистью называ­ется ресурс, предназначенный для рисования на экране различных графических объектов с использованием готовой маски определенного размера, цвета и имеющей некоторый шаблон заполнения. Функция GetStockObject() используется для получе­ния дескрипторов различных стандартных графических объектов, включая кисти, перья (предназначенные для рисования линий) и шрифты. Она имеет следующий прототип:

HGDIOBJ GetStockObject(int object);

Эта функция возвращает дескриптор объекта, задаваемого параметром object. (Тип HGDIOBJ задает дескриптор GDI-объекта.) Вот названия некоторых стандартных кистей (табл. 2.З):

Таблица 2.3. Стандартные кисти

Константа

Тип фона

BLACK_BRUSH

Черный

DKGRAY_BRUSH

Темно-серый

HOLLOW_BRUSH

"Прозрачный"

LTGRAY_BRUSH

Светло-серый

WHITE_BRUSH

Белый

Эти константы можно использовать в качестве параметров функции GetStockObject().

Когда класс окна полностью определен, его необходимо зарегистрировать в Windows 95 с помощью API-функции RegisterClassEx(), имеющей такой прототип:

ATOM RegisterClassEx (CONST WNDCLASSEX *lptfClass);

Эта функция возвращает значение, идентифицирующее класс окна. Тип АТОМ определен с помощью typedef-декларации и соответствует типу WORD. Каждому Классу окна соответствует уникальное числовое значение. Параметр lptfClass должен содержать адрес структуры типа WNDCIASSEX.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]