หลังจากที่ลงทะเบียนเรียนของหน้าต่าง แอปพลิเคชัน MDI สามารถสร้างของ windows ครั้งแรก สร้างหน้าต่างของเฟรม โดยใช้ฟังก์ชันCreateWindowหรือCreateWindowEx หลังจากสร้างหน้าต่างของเฟรม โปรแกรมประยุกต์สร้างหน้าต่างของไคลเอ็นต์ อีกครั้ง โดยใช้CreateWindowหรือCreateWindowEx แอพลิเคชันควรระบุการตั้งค่า MDICLIENT เป็นชื่อของหน้าต่างไคลเอ็นต์ของคลา MDICLIENT คือ หน้าต่าง preregistered คลาสที่กำหนด โดยระบบ พารามิเตอร์lpvParam CreateWindowหรือCreateWindowExจะชี้ไปยังโครงสร้างแบบCLIENTCREATESTRUCT โครงสร้างนี้ประกอบด้วยสมาชิกอธิบายไว้ในตารางต่อไปนี้:
| สมาชิก | คำอธิบาย |
|---|---|
| hWindowMenu | จัดการเมนูหน้าต่างที่ใช้สำหรับการควบคุม windows ลูก MDI ในขณะที่มีสร้างเด็ก windows แอพลิเคชันเพิ่มชื่อเรื่องลงในเมนูหน้าต่างเป็นรายการเมนู ผู้ใช้สามารถแล้วเปิดใช้งานหน้าต่างลูก โดยการคลิกที่ชื่อเรื่องบนเมนูหน้าต่าง. |
| 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
/ / สร้างหน้าต่าง MDI ไคลเอ็นต์
hwndMDIClient = CreateWindow ("MDICLIENT", (LPCTSTR) NULL, WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL, 0, 0, 0, 0, hwnd, (HMENU) 0xCAC, hInst แอมป์ (LPSTR) ccs);
ShowWindow (hwndMDIClient, SW_SHOW);
} แบ่ง
ชื่อเรื่องของเด็ก windows จะถูกเพิ่มไปด้านล่างของเมนูหน้าต่าง ถ้าโปรแกรมประยุกต์เพิ่มสายอักขระในเมนูหน้าต่างโดยใช้ฟังก์ชันAppendMenuสายเหล่านี้สามารถถูกเขียนทับ โดยชื่อเรื่องของหน้าต่างลูกเมื่อเมนูหน้าต่างเป็น repainted (ทุกครั้งที่หน้าต่างลูกถูกสร้าง หรือทำลาย) แอปพลิเคชัน MDI ที่เพิ่มสายอักขระของเมนูหน้าต่างควรใช้ฟังก์ชันInsertMenuและตรวจสอบว่า ชื่อเรื่องของหน้าต่างลูกได้ไม่เขียนทับสายใหม่เหล่านี้.
ใช้ลักษณะที่ WS_CLIPCHILDREN สร้างหน้าต่าง MDI ไคลเอ็นต์เพื่อป้องกันไม่ให้หน้าต่างระบายสีบน windows ของเด็ก.