Регистрация классов дочернего и рамочного окна
Типичное MDI приложение должно регистрировать два класса окна: один для своего рамочного окна и другой для своих дочерних окон. Если приложение поддерживает больше чем один тип документа (например, электронную таблицу и диаграммы), оно должно зарегистрировать класс окна для каждого типа.
Структура класса для рамочного окна аналогична структуре класса для главного окна не-MDI приложения. Структура класса для дочерних окон MDI немного отличается от структуры для дочерних окон не-MDI приложения как указано ниже:
Пример ниже показывает, как программа Multipad регистрирует классы своего рамочного и дочернего окна.
Демонстрационный пример
BOOL WINAPI InitializeApplication()
{
WNDCLASS wc;
// Регистрация класса рамочного окна.
wc.style = 0;
wc.lpfnWndProc = (WNDPROC) MPFrameWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hIcon = LoadIcon(hInst, IDMULTIPAD);
wc.hCursor = LoadCursor((HANDLE) NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) (COLOR_APPWORKSPACE + 1);
wc.lpszMenuName = IDMULTIPAD;
wc.lpszClassName = szFrame;
if (!RegisterClass (&wc) )
return FALSE;
// Регистрация класса дочернего окна MDI.
wc.lpfnWndProc = (WNDPROC) MPMDIChildWndProc;
wc.hIcon = LoadIcon(hInst, IDNOTE);
wc.lpszMenuName = (LPCTSTR) NULL;
wc.cbWndExtra = CBWNDEXTRA;
wc.lpszClassName = szChild;
if (!RegisterClass(&wc))
return FALSE;
return TRUE;
}
|