Как было указано, при изменении размеров родительского окна в дочернее поступает сообщение WM_PAINT, по которому в переменной R формируются размеры родительского окна и при помощи функции MoveWi ndow( hWndC. R. 1 eft. R. bottom-i Hei ght. R. right. R. bottom- i Hei ght. 1) дочернему окну выделяется нижняя часть родительского окна.

При изменении основного окна параметры этой функции указывают координаты углов окна в системе экрана, а при изменении дочернего позволяют задавать координаты в рабочей области родительского окна. Обычно обработка сообщения WM_PAINT начинается с вызова функции Begi nPai nt(). В данном случае это приведет к ошибке, так как в контекст ps. hdc не попадет информация об изменении функцией MoveWi ndow() размеров и положения дочернего окна.

Создание дочернего окна с дескриптором Chid (глобальная переменная объявлена выше) оформлено отдельной функцией, код которой приведен в листинге 6.9.

Листинг 6.9

B00L CreateChildCHWND hWnd) {static WNDCLASS wc; if(Chid) {
DestroyWindow(Chld);
UnregisterClass("ReadStr".GetModuleHandle(NULD);

//Если класс не удалить, то возникнет ошибка при новой регистрации

//класса с тем же именем.

}

Графические элементы управления

wc.hlnstance - GetModulеНапсПе(NULL); //Задаем только ненулевые поля wc. wc.hbrBackground - (HBRUSH)(C0L0R_BTNFACE+1);

//Поскольку при регистрации оконного класса задается цвет COLOR_BTNFACE.

//отличный от фонового цвета основного окна, то дочернее окно будет

//отображено в виде полосы темного цвета.

wc.lpfnWndProc - ChldWndProc;
wc.lpszClassName - "ReadStr";
if (!RegisterClass(&wc)) return 0;
Chid-CreateWindow("ReadStr". "". WS_CHILD|WS_VISIBLE. 0. 0. 10. 10. hWnd. HMENU(NumC). GetModuleHandle(NULL). NULL):
SetFocus(Chld);. return (int)Chld: }

Фокус ввода переведен на дочернее окно, поэтому сообщения WM_CHAR будут обрабатываться оконной процедурой окна Chid.

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


⇐ Предыдущая| |Следующая ⇒