Створити з вікна MDI дитини, застосунок виклику функції CreateMDIWindow або надіслати повідомлення WM_MDICREATE до клієнта вікна MDI. (Додаток можна використовувати функцію CreateWindowEx з WS_EX_MDICHILD стилю створити вікна MDI дитини.) Сингл різьбові MDI додатків можна використовувати будь-якого методу для створення дочірнього вікна. Потік у багатопоточних додатків MDI необхідно використовувати функцію CreateMDIWindow або CreateWindowEx для створення дочірнього вікна в іншому потоку.
LParam параметр WM_MDICREATE повідомлення є далеко вказівник на структуру MDICREATESTRUCT . До складу входять чотири члени вимір: x та y, що вказують горизонтальні та вертикальні позиції вікна і cx і cy, що вказують горизонтальні та вертикальні небачених вікна. Будь-який з цих члени можуть бути віднесені явно застосування, або вони можуть бути встановлені для CW_USEDEFAULT, в якому випадку система вибирає позиції, розміру або обидва, за даними таблиці каскадних алгоритм. У будь-якому випадку, слід ініціалізувати усіх чотирьох членів. Multipad використовує CW_USEDEFAULT для всіх розмірів.
Останній член MDICREATESTRUCT структура є член стиль , який може містити стилі біти для вікна. Для створення дочірнього вікна MDI, який може мати будь-яке поєднання стилів вікно, вкажіть стиль вікна MDIS_ALLCHILDSTYLES. Коли цей стиль не вказано, з вікна MDI дитини, має WS_MINIMIZE, WS_MAXIMIZE, WS_HSCROLL і WS_VSCROLL стилів за замовчуванням.
Multipad створює його MDI дитини windows за допомогою її локально визначені функції AddFile (розташований у вихідному файлі MPFILE.C). The AddFile функція встановлює назву дочірнього вікна шляхом призначення у вікні MDICREATESTRUCT структури, член szTitle або ім'я файлу, який редагується або «Без імені». Член szClass встановлений на ім'я MDI дитини клас вікна зареєстровано в Multipad в InitializeApplication функції. Член hOwner встановлено дескриптор екземпляра програми.
Наступний приклад показує функції AddFile в Multipad.
HWND &APIENTRY AddFile(pName) ЧАР * pName;
{HWND hwnd;
ЧАР sz [160];
MDICREATESTRUCT mcs;
Якщо (! pName) {/ / Якщо параметр pName є NULL, завантажити «Без імені» / / рядок з ресурсу STRINGTABLE і встановити на szTitle / / член MDICREATESTRUCT.
LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz));
MCS.szTitle = sz (LPCTSTR);
} інше / / назва вікна з повний шлях та ім'я файлу, / / отримана шляхом виклику функції OpenFile з з / / OF_PARSE прапор, який називається перед AddFile().
MCS.szTitle = of.szPathName;
MCS.szClass = szChild;
MCS.hOwner = hInst;
/ / Використовувати розмір за промовчанням для дочірнього вікна.
MCS.x = mcs.cx = CW_USEDEFAULT;
MCS.y = mcs.cy = CW_USEDEFAULT;
/ / Дати дитини вікні стиль за промовчанням. StyleDefault / / змінні визначені в MULTIPAD.C. mcs.style = styleDefault;
/ / Розповісти вікна MDI клієнт для створення дочірнього вікна.
hwnd = SendMessage (HWND) (hwndMDIClient, WM_MDICREATE, 0, (довгий LONG) (LPMDICREATESTRUCT) amp mcs);
/ / Якщо знайти файл, читати її вміст до дитини / / клієнтської області вікна.
Якщо (pName) {Якщо (!LoadFile (hwnd, pName)) {/ / не вдається завантажити файл; закрити вікно.
SendMessage (hwndMDIClient, WM_MDIDESTROY, hwnd (DWORD), 0-L);
}} повернення hwnd;
}
Вказівник у lParam параметр WM_MDICREATE повідомлення передається CreateWindow функцією і з'являється як перший член в CREATESTRUCT структурі, що пройшов у WM_CREATE повідомленні. У Multipad дочірнього вікна ініціалізує себе під час WM_CREATE повідомлення обробки ініціалізації змінних в його додаткових даних і створення елемента керування edit дочірнього вікна.