คลาCMDIChildWndแสดงการทำงานของ Windows หลายเอกสารติดต่อ (MDI) หน้าต่างลูก พร้อม ด้วยสมาชิกสำหรับการจัดการหน้าต่าง?
หน้าต่างลูก MDI ดูมากเหมือนกับหน้าต่างเฟรมโดยทั่วไป ยกเว้นว่าจะปรากฏหน้าต่างลูก MDI ภาย ในหน้าต่างเฟรม MDI ไม่ใช่ บนเดสก์ท็อป หน้าต่างลูก MDI ไม่มีแถบเมนูของตัวเอง แต่หุ้นแทน เมนูของกรอบหน้าต่าง MDI กรอบการเปลี่ยนเมนูเฟรม MDI เพื่อแสดงหน้าต่างลูก MDI ในปัจจุบันที่ใช้งานอยู่โดยอัตโนมัติ?
เมื่อต้องการสร้างหน้าต่างลูก MDI ประโยชน์สำหรับโปรแกรมประยุกต์ของคุณ ชั้นที่สืบทอดมาจากCMDIChildWnd เพิ่มสมาชิกตัวแปรคลาสได้รับการจัดเก็บข้อมูลเฉพาะสำหรับโปรแกรมประยุกต์ของคุณ ทำข้อความจัดการฟังก์ชันสมาชิกและข้อความที่แมปในชั้นเรียนได้รับการระบุสิ่งที่เกิดขึ้นเมื่อข้อความจะถูกนำไปหน้าต่าง?
มีสามวิธีในการสร้างหน้าต่างลูก MDI:
ก่อนที่คุณเรียกใช้สร้างหรือLoadFrameคุณต้องสร้างเฟรมหน้าต่างวัตถุบนกองใช้ตัวดำเนินการใหม่c ++ ก่อนที่จะสร้างการโทร คุณยังสามารถลงทะเบียนคลาหน้าต่าง ด้วยฟังก์ชันสากลAfxRegisterWndClassเพื่อตั้งค่าลักษณะไอคอนและคลาสสำหรับเฟรม?
ใช้ฟังก์ชันสร้างสมาชิกผ่านของเฟรมสร้างพารามิเตอร์เป็นอาร์กิวเมนต์ทันที?
LoadFrameต้องใช้อาร์กิวเมนต์ที่น้อยลงกว่าสร้างและแทน ดึงส่วนใหญ่ค่าเริ่มต้นมาจากทรัพยากร การรวมถึงเฟรมป้ายคำอธิบาย ไอคอน ตารางการเร่งความเร็ว และเมนู เพื่อที่สามารถเข้าถึงได้โดยLoadFrameทรัพยากรเหล่านี้ทั้งหมดต้องมี ID ทรัพยากรเดียวกัน (ตัวอย่างเช่นIDR_MAINFRAME)?
เมื่อวัตถุของCMDIChildWndประกอบด้วยมุมมองและเอกสาร มีสร้างทางอ้อม ด้วยกรอบแทนโดยตรงโดยโปรแกรมเมอร์ที่ วัตถุCDocTemplate orchestrates การสร้างเฟรม การสร้างมุมมองประกอบด้วย และการเชื่อมต่อของมุมมองไปยังเอกสารที่เหมาะสม พารามิเตอร์ของพารามิเตอร์CDocTemplateที่ระบุในCRuntimeClassของชั้นที่สามเกี่ยวข้อง (เอกสาร กรอบ และมุมมอง) วัตถุCRuntimeClassใช้โดยกรอบงานเพื่อสร้างเฟรมใหม่เมื่อระบุ โดยผู้ใช้ (เช่น โดยการใช้คำสั่งสร้างแฟ้มหรือคำสั่งสร้างหน้าต่าง MDI)?
-กรอบหน้าต่างชั้นมาจากCMDIChildWndต้องถูกประกาศด้วยDECLARE_DYNCREATEเพื่อให้กลไกการRUNTIME_CLASSข้างต้นในการทำงานอย่างถูกต้อง?
คลาCMDIChildWndสืบทอดมากของการเริ่มต้นใช้งานจากCFrameWnd สำหรับรายการโดยละเอียดของคุณลักษณะเหล่านี้ โปรดดูที่คำอธิบายคลาCFrameWnd คลาCMDIChildWndมีคุณลักษณะเพิ่มเติมต่อไป:
ใช้ตัวดำเนินลบc ++ทำลายกรอบหน้าต่าง ใช้CWnd::DestroyWindowแทน การใช้งานCFrameWndของPostNcDestroyจะลบวัตถุ c ++เมื่อหน้าต่างถูกทำลาย เมื่อผู้ใช้ปิดหน้าต่างเฟรม ตัวจัดการOnCloseเริ่มต้นจะเรียกDestroyWindow?
ดูข้อมูลเพิ่มเติมบนCMDIChildWnd, หัวข้อหน้าต่างเฟรมin Visual c ++ Programmer ของรายการแนะนำ?
#รวม lt;afxwin.h>
สมาชิกของคลาส|nbsp คลาสพื้นฐาน| แผนภูมิของลำดับชั้น(&N)
ตัวอย่างnbsp MFC Sample MDI | อย่าง MFC MDIBIND | อย่าง MFC MDIDOCVW | MFC อย่าง SNAPVW(&N)
ดูเพิ่มเติมnbspCWnd, CMDIFrameWnd(&N)