Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций Часть II.doc
Скачиваний:
14
Добавлен:
20.11.2018
Размер:
1.48 Mб
Скачать

1.8.2. Регистрация класса окон

Регистрирует класс в операционной системе функция RegisterClass. Ее аргументом является адрес подготовленной структуры. При ус­пешной регистрации класса она возвращает ненулевое значение, иначе -нуль.

Регистрация класса окна не означает, что окно начинает существовать. Чтобы создать окно, нужно выполнить дополнительные шаги.

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

Для создания окна вызывают функцию CreateWindow. Она создает перекрывающееся, временное или дочернее окно и устанавливает на­чальные значения некоторых его параметров. Эта функция объявлена следующим образом:

HWND CreateWindow(

LPCTSTR IpClassName, //Указатель на имя класса

LPCTSTR IpWindowName, //Указатель на имя окна

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

int x, //Координата левого края окна

int у, //Координата верхнего края окна

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

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

HWND hWndParent, //Дескриптор окна-родителя или окна-владельца

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

// создаваемого дочернего окна

HANDLE hinstance, //Дескриптор приложения

LPVOID IpParam //Указатель на данные окна

);

Назначение аргументов вызова этой функции:

1. LpClassName указывает на имя зарегистрированного функцией RegisterClass или определенного операционной системой класса

2. dwStyle задает стиль окна. Стиль окон будет отдельно рассмотрен ниже

3. х - координата левого края окна в пикселях. Для перекрывающихся или временных окон х отсчитывают от левого края экрана, дочерних окон - от левого края рабочей области родительского окна. Если для перекрывающегося окна со стилем WS_VISIBLE в качестве х задать константу CW_USEDEFAULT, Windows устанавливает не обязатель­но нулевую позицию по умолчанию для левого верхнего угла окна и игнорирует координату у верхнего края окна. Для временного и дочернего окна такая позиция по умолчанию равна (О, О).

4. у - координата верхнего края окна в пикселях. Для перекрывающихся и временных окон ее отсчитывают от верхнего края экрана, дочерних окон - от верхнего края рабочей области родительского окна.

5. nWidth -ширина окна в пикселях. Для перекрывающихся окон мож­но задать равной CW_USEDEFAULT. В этом случае система уста­навливает ненулевые значения ширины и высоты по умолчанию и игнорирует заданную высоту nHeight окна. Ширина и высота вре­менного и дочернего окна по умолчанию равны нулю.

6. hWndParent может указывать только на инициированное окно. Де­скриптор окна-родителя обязательно указывают при создании до­чернего окна. Дескриптор окна-владельца для временного окна ука­зывать необязательно.

7. hMenu - дескриптор меню или идентификатор создаваемого дочер­него окна.

Меню перекрывающегося или временного окна можно задать тремя способами:

1) в классе окон указывают имя меню, и все окна этого класса мо­гут пользоваться этим меню;

2) имя меню указывают как аргумент функции CreateWindow, и создаваемое окно будет пользоваться этим меню, игнорируя ме­ню класса;

3) меню создают в процессе или после создания окна.

В первом и третьем случаях аргумент hMenu равен NULL. Если создается дочернее окно, то аргументом hMenu задают иденти­фикатор этого окна (целочисленную константу).

Перед созданием окна функция CreateWindow посылает код сообщения wm_create функции создаваемого окна. Она затем обрабатывает возвра­щаемое функцией окна значение и создает окно, если это значение равно 0, или не создает окна, если значение равно -1. Соответственно функция Create Window возвращает дескриптор созданного окна или NULL.