หน้าต่างลูก

หน้าต่างลูกมีลักษณะ WS_CHILD และถูกจำกัดพื้นที่ของหน้าต่างหลักของไคลเอ็นต์ โปรแกรมประยุกต์ใช้ windows เด็กเพื่อแบ่งพื้นที่ไคลเอ็นต์ของหน้าต่างหลักลงในพื้นที่ทำงานโดยทั่วไป คุณสร้างหน้าต่างลูก โดยการระบุลักษณะ WS_CHILD ในฟังก์ชันCreateWindowEx.

หน้าต่างลูกต้องมีหน้าต่างหลัก หน้าต่างหลักได้มีหน้าต่างที่คาบเกี่ยวกัน หน้าต่างแบบผุดขึ้น หรือแม้แต่อีกหน้าต่างหนึ่งลูก คุณต้องระบุหน้าต่างหลักเมื่อคุณเรียกใช้CreateWindowEx ถ้าคุณระบุลักษณะ WS_CHILD ในCreateWindowExแต่ไม่ได้ระบุหน้าต่างหลัก ระบบการสร้างหน้าต่าง.

หน้าต่างลูกมีพื้นที่ไคลเอ็นต์แต่ไม่มีคุณลักษณะอื่น ๆ ยกเว้นว่าพวกเขาจะร้องขออย่างชัดเจน แอปพลิเคชันสามารถขอชื่อแถบ เมนูหน้าต่าง ย่อ และขยายปุ่ม ขอบ และแถบเลื่อนสำหรับหน้าต่างลูก แต่หน้าต่างลูกไม่มีเมนู ถ้าโปรแกรมประยุกต์ที่ระบุตัวจัดการเมนู ได้เมื่อมันลงทะเบียนคลาสหน้าต่างของเด็ก หรือสร้างหน้าต่างลูก หมายเลขอ้างอิงของเมนูจะถูกละเว้น.

การวางตำแหน่ง

นอกจากนี้ระบบเสมอตำแหน่งหน้าต่างลูกสัมพันธ์กับมุมบนซ้ายของพื้นที่ของหน้าต่างหลักของไคลเอ็นต์ ไม่มีส่วนของหน้าต่างลูกเคยปรากฏที่ด้านนอกเส้นขอบของหน้าต่างของแม่ ถ้าโปรแกรมประยุกต์สร้างหน้าต่างลูกที่มีขนาดใหญ่กว่าหน้าต่างหลัก หรือตำแหน่งหน้าต่างลูกเพื่อให้บางส่วนหรือทั้งหมดของหน้าต่างลูกเกินเส้นขอบของวัตถุแม่ ระบบคลิปหน้าต่างลูก กล่าวคือ ส่วนอยู่นอกพื้นที่ของไคลเอ็นต์ของหน้าต่างหลักจะไม่ปรากฏขึ้น มีผลการกระทำที่ส่งผลต่อหน้าต่างหลักสามารถต่อหน้าต่างลูก เป็นดังนี้.

หน้าต่างหลัก หน้าต่างลูก
ทำลาย ทำลายก่อนที่หน้าต่างหลักถูกทำลาย.
ที่ซ่อน ซ่อนก่อนที่หน้าต่างหลักถูกซ่อนอยู่ หน้าต่างลูกจะมองเห็นได้เฉพาะเมื่อมีหน้าต่างหลักมองเห็นได้.
ย้าย ย้ายไปกับพื้นที่ของไคลเอ็นต์ของหน้าต่างหลัก รับผิดชอบในการวาดภาพพื้นที่ของไคลเอ็นต์หลังจากการย้ายหน้าต่างลูก.
แสดง แสดงหลังจากที่มีแสดงหน้าต่างหลัก.

รูปวาด

ระบบไม่อัตโนมัติภาพจากพื้นที่ของไคลเอ็นต์ของหน้าต่างหลักหน้าต่างลูก ซึ่งหมายความว่า หน้าต่างแม่วาดบนหน้าต่างลูกถ้าจะดำเนินตามคำใดรูปวาดในตำแหน่งเดียวกับหน้าต่างลูก อย่างไรก็ตาม ระบบภาพหน้าต่างลูกจากพื้นที่ของไคลเอ็นต์ของหน้าต่างหลักถ้าหน้าต่างหลักมีลักษณะ WS_CLIPCHILDREN ถ้ามีหน้าต่างลูก clipped หน้าต่างหลักไม่สามารถวาดเหนือ.

หน้าต่างลูกสามารถเหลื่อมกับ windows เด็กอื่น ๆ ในพื้นที่ไคลเอนต์เดียวกัน หน้าต่างลูกที่หน้าต่างหลักเดียวกันเป็นหน้าต่างลูกหนึ่ง หรือเพิ่มเติมอื่น ๆ ที่ใช้ร่วมกัน จะเรียกว่าน้องหน้าต่าง น้อง windows สามารถวาดในแต่ละคนพื้นที่ไคลเอ็นต์ ยกเว้น windows ลูกหนึ่งมีลักษณะ WS_CLIPSIBLINGS ถ้าหน้าต่างลูกมีลักษณะนี้ ส่วนหนึ่งส่วนใดของหน้าต่างของน้องที่ทำงานอยู่ภายในหน้าต่างลูก clipped.

ถ้าหน้าต่างมีลักษณะเป็น WS_CLIPCHILDREN หรือ WS_CLIPSIBLINGS การสูญเสียเล็กน้อยในประสิทธิภาพการทำงานเกิดขึ้น แต่ละหน้าต่างใช้จัดระบบทรัพยากร เพื่อให้แอปพลิเคชันไม่ควรใช้ windows เด็กดาย สำหรับประสิทธิภาพที่ดีที่สุด แอปพลิเคชันที่ต้องการแบ่งหน้าต่างหลักของตรรกะควรทำในขั้นตอนหน้าต่าง ของหน้าต่างหลักไม่ใช่ โดยใช้ windows เด็ก.

ความสัมพันธ์กับหน้าต่างหลัก

แอปพลิเคชันสามารถเปลี่ยนหน้าต่างหลักของหน้าต่างลูกตัวที่มีอยู่ โดยการเรียกฟังก์ชันSetParent ในกรณีนี้ ระบบเอาหน้าต่างลูกจากไคลเอ็นต์พื้นที่ของหน้าต่างหลักเดิม และย้ายไปยังพื้นที่ของไคลเอ็นต์ของหน้าต่างหลักใหม่ ถ้าSetParentระบุหมายเลขอ้างอิงกับค่า NULL หน้าต่างบนเดสก์ท็อปกลายเป็น หน้าต่างหลักใหม่ ในกรณีนี้ หน้าต่างเด็กวาดบนเดสก์ท็อป นอกเส้นขอบของหน้าต่างอื่น ฟังก์ชันGetParentดึงตัวจัดการหน้าต่างหลักของหน้าต่างลูก.

หน้าต่างหลัก relinquishes ส่วนของพื้นที่ของไคลเอ็นต์ไปยังหน้าต่างของเด็ก และหน้าต่างลูกป้อนข้อมูลทั้งหมดที่ได้รับจากพื้นที่นี้ คลาสหน้าต่างไม่ต้องเหมือนกันสำหรับแต่ละหน้าต่างลูกของหน้าต่างหลัก ซึ่งหมายความ ว่า โปรแกรมประยุกต์สามารถกรอกข้อมูลในหน้าต่างหลักกับ windows ของเด็กที่มีลักษณะแตกต่างกัน และดำเนินงานแตกต่างกัน ตัวอย่างเช่น กล่องโต้ตอบสามารถประกอบด้วยหลายชนิดของตัวควบคุม แต่ละที่หนึ่งหน้าต่างลูกที่ยอมรับชนิดข้อมูลต่าง ๆ จากผู้ใช้.

หน้าต่างลูกมีหน้าต่างหลักเดียวเท่านั้น แต่แม่สามารถมีจำนวนใด ๆ ของเด็ก windows หน้าต่างแต่ละลูก สามารถมีลูก windows ในห่วงโซ่นี้ของ windows หน้าต่างแต่ละลูกจะเรียกว่าหน้าต่าง descendant ของหน้าต่างหลักเดิม โปรแกรมประยุกต์ใช้ฟังก์ชันIsChildเพื่อค้นหาว่าหน้าต่างกำหนดให้หน้าต่างลูกหรือหน้าต่าง descendant ของหน้าต่างกำหนดหลัก.

ฟังก์ชันEnumChildWindowsระบุหน้าต่างลูกของหน้าต่างหลัก แล้วEnumChildWindowsผ่านหมายเลขอ้างอิงหน้าต่างแต่ละลูกไปฟังก์ชันการเรียกกลับที่โปรแกรมประยุกต์ที่กำหนดเอง ยังสามารถระบุการ windows descendant ของหน้าต่างกำหนดหลัก.

ข้อความ

ระบบส่งเด็กของหน้าต่างข้อความการป้อนข้อมูลโดยตรงไปยังหน้าต่างของเด็ก ข้อความจะถูกส่งผ่านไม่ผ่านหน้าต่างหลัก ข้อยกเว้นเท่านั้นคือถ้ามีหน้าต่างลูกถูกปิดใช้งาน โดยฟังก์ชันEnableWindow ในกรณีนี้ ระบบการส่งข้อความใด ๆ สำหรับการป้อนค่าที่จะได้ไปในหน้าต่างลูกไปยังหน้าต่างหลักแทน นี้อนุญาตให้หน้าต่างหลักเพื่อตรวจสอบข้อความการป้อนข้อมูล และการเปิดใช้งานหน้าต่างลูก ถ้าจำเป็น.

หน้าต่างลูกสามารถกำหนดตัวบ่งชี้จำนวนเต็มที่ไม่ซ้ำกันได้ ตัวระบุหน้าต่างลูกมีความสำคัญเมื่อคุณทำงานกับตัวควบคุม windows โปรแกรมประยุกต์นำกิจกรรมของตัวควบคุม โดยการส่งข้อความ โปรแกรมประยุกต์จะใช้ตัวระบุหน้าต่างของลูกของตัวควบคุมเพื่อนำข้อความไปยังตัวควบคุม นอกจากนี้ ตัวควบคุมส่งข้อความแจ้งเตือนไปยังหน้าต่างของแม่ ข้อความแจ้งเตือนมีการระบุของตัวควบคุมลูกหน้าต่าง ซึ่งหลักใช้ในการระบุตัวควบคุมใดที่ส่งข้อความ โปรแกรมประยุกต์ตัวระบุหน้าต่างลูกสำหรับเด็ก windows ชนิดอื่น ๆ ที่ระบุ โดยการตั้งค่าพารามิเตอร์hMenuของฟังก์ชันCreateWindowExจะเป็นค่าแทนที่เป็นตัวจัดการเมนู.

Index