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

Типы системных кистей

Макрос

Цвет заполнения

1

BLACK_BRUSH

Черный

2

DKGRAY_BRUSH

Темно-серый

3

HOLLOW_BRUSH

Прозрачный

4

LTGRAY_BRUSH

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

5

WHITE_BRUS

Белый

Приведенные в таблице макросы можно использовать в качестве параметра GetStockObject() для получения соответствующей кисти.

Когда класс окна полностью определен, он должен быть зарегистрирован в системе. Для этого используется функция API RegisterClass(), прототип которой имеет следующий вид:

ATOM RegisterClass(CONST WNDCLASS *IpWClass) .

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

2.8. Создание окна

Когда класс окна определен и зарегистрирован, Ваше приложение может созда­вать окна этого класса, используя функцию API CreateWindow():

HWND CreateWindow(

LPCSTR IpClassName, // Имя класса окна

LPCSTR IpWinName, // Заголовок окна

DWORD dwStyle, // Стиль окна

int x, // Координаты x и y

int y, // левого верхнего угла

int Width, // Ширина окна

int Height, // Высота окна

HWND hParent, // Дескриптор родительского окна

HMENU hMenu, // Дескриптор главного меню

HINSTAHCE hThisInst, // Дескриптор приложения

LPVOID IpszAdditional // Указ. на дополн.информацию

);

Как видно из программы, многие параметры функции CreateWindow() могут принимать значения по умолчанию или равны NULL. Фактически для параметров х, у, Width и Height используется значение – макрос CW_USEDEFAULT, которое позволяет системе самостоятельно выбирать координаты и размеры окна. Если окно не имеет родительского окна, как в случае нашей программы, то параметр hParent должен быть равен HWND_DESKTOP (или NULL, – это тоже допускается). Если окно не должно содержать главного меню, параметр hMenu должен равняться NULL. И в случае, когда не требуется дополнительная информация, как это чаще всего и бывает, параметр lpszAdditional должен быть NULL. (Тип LPVOID определен как void* при помощи typedef. Название LPVOID сложилось исторически и означает "длинный (far) указатель на тип void".)

Значение остальных четырех параметров необходимо установить в программе. Прежде всего, параметр lpszClassName должен представлять указатель на строку, содер­жащую имя класса окна (то самое, которое мы давали при регистрации класса), а параметр lpszWinName – указатель на строку-заголовок окна. Указатель может быть равен NULL, или эта строка может быть пустой, однако обычно окно имеет какой-нибудь заголовок.

Стиль (или тип) создаваемого окна определяется параметром dwStyle. В нашей программе используется макрос

WS_OVERLAPPEDWINDOW ,

который опре­деляет стандартное окно, имеющее системное меню, заголовок, рамку для изменения размеров, а также кнопки минимизации, развертки и закрытия. Используемый стиль окна является наиболее общим. Вы можете создавать окна, имеющие другие стили. Для этого следует прибегнуть к комбинации стилевых макросов, которые Вам нужны. Такая комбинация строится при помощи оператора логического сложения. Некоторые широко используемые стили приведены в таблице 2.4.

Таблица 2.4