Создание кадров и дочерние окна

После регистрации его окно классов, MDI-приложении можно создать его окна. Во-первых он создает фрейм окна, используя функцию CreateWindow или CreateWindowEx . После создания его фрейм окна, приложение создает окно его клиента, снова, используя CreateWindow или CreateWindowEx. Приложение должно указать MDICLIENT в качестве имени класса окна клиента; MDICLIENT — предрегистрируемой окна класс, определенный системой. LpvParam параметр CreateWindow или CreateWindowEx должны указывать на CLIENTCREATESTRUCT структуру. Эта структура содержит элементы, описанные в следующей таблице:

Член Описание
hWindowMenu Дескриптор меню окна , используемые для управления дочерних окон интерфейса MDI. Как создаются дочерние окна, приложение добавляет свои названия меню окна как пункты меню. Пользователь может затем активировать дочернее окно, щелкнув его название в меню окно.
idFirstChild Указывает идентификатор первого дочернего окна MDI. Первый дочернего окна MDI создал назначен этот идентификатор. Дополнительные окна создаются с увеличенной окно идентификаторов. Когда уничтожается дочернего окна, система сразу же переназначает окно идентификаторов, чтобы держать их диапазон смежных.

При добавлении дочернего окна название в меню " окно ", система присваивает идентификатор дочернего окна. Когда пользователь щелкает заголовок окна ребенок, в фрейме окна получает WM_COMMAND сообщение с идентификатором в параметре wParam . Вам следует указать значение для элемента idFirstChild , который не конфликтует с идентификаторами элемента меню в меню фрейма окна.

Multipad в рамку окна процедура создает окно клиента MDI при обработке сообщений WM_CREATE . В следующем примере показано, как создается окно клиента.

дело WM_CRE&ATE: {CLIENTCREATESTRUCT ccs; 
 
        / / Получить дескриптор окна меню и назначения / / первый ребенок окно идентификатор. 
 
        CCS.hWindowMenu = GetSubMenu(GetMenu(hwnd), WINDOWMENU); 
        CCS.idFirstChild = IDM_WINDOWCHILD; 
 
        / / Create в клиента MDI. 
 
        hwndMDIClient = CreateWindow ("MDICLIENT", (LPCTSTR) NULL, WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL, 0, 0, 0, 0, hwnd, (HMENU) 0xCAC, hInst, amp (LPSTR); ccs); 
 
        ShowWindow (hwndMDIClient, SW_SHOW); 
    } перерыв 
 

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

WS_CLIPCHILDREN стиль используется для создания окна клиента MDI во избежание окна от живописи над его дочерних окон.

Index