Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
каркас.doc
Скачиваний:
58
Добавлен:
03.06.2015
Размер:
1.6 Mб
Скачать

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

В первую очередь в WinMain() определяется и регистрируется класс окна. Класс окна определяется путем заполнения полей структуры WNDCLASS. Вот эти поля:

UINT style; // Тип окна

WNDPROC lpfnWndProc; // Адрес оконной функции

int cbClsExtra; // Дополнительные данные для класса

int cbWndExtra; // Дополнительные данные для окна

HINSTANCE hInstance; // Дескриптор данного экз. приложения

HICON hIcon; // Дескриптор иконки для данного окна

HCURSOR hCursor; // Дескриптор курсора для данного окна

HBRUSH hbrBackground;// Цвет заполнения окна

LPCSTR lpszMenuName; // Имя главного меню

LPCSTR lpszClassName; // Имя класса окна

Как видно из программы, поле hInstance принимает значение параметра hThisInst, имя класса окна lpszClassName получает адрес строки "МоеОкно", а адрес оконной функции присваивается переменной lpfnWndProc. Тип окна по умолчанию равен 0, и дополнительные данные для класса и окна не требуются.

Все Windows-приложения должны задавать форму курсора мыши и иконку для определяемого класса окна. Для этих целей приложение может использовать как собственные ресурсы, так и встроенные ресурсы Windows, как это делает наша программа. Иконка определяется при помощи функции API LoadIcon(), прототип которой приведен ниже:

HICON LoadIcon (HINSTANCE hInst, LPCSTR lpszName).

Эта функция возвращает дескриптор иконки. Параметр hInst специфицирует дескриптор данного экземпляра приложения, содержащего иконку, а имя иконки задается параметром lpszName. Для того чтобы использовать встроенные типы иконок Windows, первый параметр должен быть равен NULL, а в качестве второго параметра должен использоваться один из макросов таблицы 2.1.

Таблица 2.1

Значения параметра lpszName

Макрос

Форма иконки

1

IDI_APPLICATION

Стандартная иконка приложения

2

IDI_ASTERISK

Иконка "информация"

3

IDI_EXCLAMATION

Иконка "восклицательный знак"

4

IDI_HAND

Иконка "знак Стоп"

5

IDI_QUESTION

Иконка "вопросительный знак"

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

HCURSOR LoadCursor(HINSTANCE hlnst, LPCSTR IpszName).

Эта функция возвращает дескриптор курсора. Параметр hInst задает дескриптор экземпляра приложения, содержащего курсор, a lpszName – имя необходимого ресурса. Для того чтобы использовать встроенный тип курсора Windows, следует задать NULL в первом параметре и макрос, определяющий курсор, – во втором. Некоторые наиболее употребляемые макросы для встроенных курсоров приведены ниже.

Таблица 2.2

Наиболее употребляемые макросы для встроенных курсоров

Макрос

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

1

IDC_ARROW

Стандартный курсор – стрелка

2

IDC_CROSS

Перекрестье

3

IDC_IBEAM

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

4

IDC_WAIT

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

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

HGDIOBJ GetStockObject(int object) .

Функция возвращает дескриптор объекта, задаваемого аргументом. (Тип HGDIOBJ является дескриптором GDI-объекта.) Следующая таблица представляет несколько типов системных кистей, которые Вы можете использовать.

Таблица 2.3