В процессе инициализации MDI-приложения вам надо зарегистрировать как минимум два класса окна - класс окна Frame Window (главного окна приложения) и класс окна Document Window.
Регистрация окна Frame Window может выполняться, например, следующим образом:
ATOM aWndClass; // атом для кода возврата WNDCLASS wc; // структура для регистрации класса окна memset(&wc, 0, sizeof(wc)); wc.lpszMenuName = "APP_MENU"; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)FrameWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, "APP_ICON"); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1); wc.lpszClassName = (LPSTR)szFrameClassName; aWndClass = RegisterClass(&wc);
В классе окна Frame Window, как правило, указывается меню приложения, хотя это меню может быть создано динамически. В поле lpfnWndProc следует записать адрес функции окна Frame Window. Эта функция имеет особенности, о которых мы расскажем позже.
Остальные поля структуры WNDCLASS заполняются обычным образом. Отметим только, что для цвета фона окна имеет смысл использовать константу COLOR_APPWORKSPACE. В этом случае для управления фоном окна можно будет использовать приложение Control Panel, что даст пользователю возможность настраивать цвета по своему вкусу.
Регистрация класса для окна Document Window выполняется, например, так:
memset(&wc, 0, sizeof(wc)); wc.lpszMenuName = 0; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)ChildWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = sizeof(WORD); wc.hInstance = hInstance; wc.hIcon = LoadIcon(hInstance, "APPCLIENT_ICON"); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wc.lpszClassName = (LPSTR)szChildClassName; aWndClass = RegisterClass(&wc);
В поле lpfnWndProc вы должны указать адрес функции окна Document Window, которая, как и функция окна Frame Window, имеет свои особенности.