Регистрация классов дочернего и рамочного окна
Типичное 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; } |