GetParent(Chld)

GetDlgItem(hWnd, 9).

HInstance,

X0, y0, DX, DY,

Пример кода, создающего дочернее окно.

При создании дочернего окна, девятый параметр функции CreateWindow(), в котором окну передается дескриптор меню, должен определять константу, в которой хранится номер дочернего окна и которая позволяет основному окну различать дочерние окна.

Дочерние окна. Основные положения

FlashWindow(OwnedHwnd,TRUE)

Если окно было активно до вызова FlashWindow, то возвращается ненулевое значение. Если окно не было активно, возвращается ноль.

BOOL FlashWindow(

HWND hwnd, // дескриптор подсвечиваемого окна

BOOL bInvert); // параметр подсветки

Если параметр bInvert=TRUE, окно меняет подсветку. Если же bInvert=FALSE, окно возвращается в исходное состояние.

При подсветке неактивное окно может принять внешний вид активного окна, но не получить фокус ввода.

Пример 1: После нажатия левой клавиши мыши над окном hwnd 9 раз изменить подсветку неактивного окна OwnedHwnd:

case WM_LBUTTONDOWN:

{ FlashWindow(OwnedHwnd,TRUE);

for (int i=0;i<9;i++)

{ for (long j=0; j<(1Е+7); j++);

}

return 0;

}


1) Дочернее окно создается при помощи функции CreateWindow().

2) В качестве восьмого параметра функции CreateWindow() необходимо указать дескриптор родительского окна;

3) При определении стиля дочернего окна в третьем параметре функции CreateWindow() необходимо указать дополнительный флаг WS_CHILD. Этот флаг можно объединять с другими флагами (кроме WS_PОPUP);

HWND Chid = CreateWindow(

ClassName, "Дочернее окно",

WSVISIBLE | WS_CHILD | WS_OVERLAPPEDWINDOW,

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

HMENU(9), // Идентификатор создаваемого дочернего окна

NULL);

Данному окну присвоен идентификатор 9, который переопределен в HMENU(9), чтобы программа прошла синтаксический контроль.

5) Дескриптор дочернего окна можно получить по его идентификатору и дескриптору родительского окна. Для текущего примера это можно сделать с помощью функции:

6) Дочернее окно может по своему дескриптору Chld получить дескриптор родительского окна при помощи функции:


7) Если в родительское окно поступает сообщение WM_PAINT и недействительная область пересекается с дочерним окном, это сообщение будет передано также и дочернему окну. Это приводит к тому, что выполнение функции InvalidateRect(hWnd, NULL, TRUE) вызовет поступление сообщения WM_PAINT во все дочерние окна.

Функция InvalidateRect добавляет прямоугольник к обновляемому региону заданного окна. Обновляемый регион представляет часть рабочей области окна, которая должна быть перерисована.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: