แม่แบบแบบกำหนดเองของลักษณะ explorer

เมื่อต้องการกำหนดตัวควบคุมเพิ่มเติมสำหรับกล่องโต้ตอบลักษณะ Explorerเปิดหรือบันทึกเป็นข้อ ใช้OPENFILENAMEโครงสร้างเพื่อระบุแม่แบบสำหรับกล่องโต้ตอบเด็กที่ประกอบด้วยตัวควบคุมเพิ่มเติม ถ้าแม่แบบโต้ตอบของลูกเป็นทรัพยากรในโปรแกรมประยุกต์หรือ dynamic-link library ตั้งค่าสถานะ OFN_ENABLETEMPLATE ในสถานะสมาชิก และใช้สมาชิกhInstanceและlpTemplateNameของโครงสร้างเพื่อระบุชื่อโมดูลและทรัพยากร ถ้าแม่แบบมีอยู่ในหน่วยความจำ ตั้งค่าสถานะ OFN_ENABLETEMPLATEHANDLE และใช้สมาชิกhInstanceที่ระบุวัตถุหน่วยความจำที่ประกอบด้วยแม่แบบ เมื่อให้ลูกเป็นต้นแบบการโต้ตอบสำหรับกล่องโต้ตอบมีลักษณะ Explorer คุณยังต้องเซ็ตค่าสถานะ OFN_EXPLORER มิฉะนั้น ระบบจะถือว่า คุณได้จัดให้แทนแม่แบบสำหรับกล่องโต้ตอบลักษณะเดิม โดยทั่วไป ถ้าคุณมีตัวควบคุมเพิ่มเติม คุณต้องให้การExplorer แบบตะขอกระบวนการประมวลผลข้อความสำหรับตัวควบคุมใหม่.

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

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

ระบบต้องมีขั้นตอนของ hook การประมวลผลข้อความทั้งหมดที่มีไว้สำหรับกล่องโต้ตอบแบบกำหนดเอง และดังนั้น ส่งข้อความในหน้าต่างเดียวกันไปยังขั้นตอนของ hook ใด ๆ อื่นโต้ตอบกล่องกระบวนการ ตัวอย่างเช่น ขั้นตอนของ hook รับWM_COMMANDข้อความเมื่อผู้ใช้คลิกที่ปุ่มควบคุมในกล่องโต้ตอบกำหนดเอง ขั้นตอนของ hook รับผิดชอบการเตรียมใช้งานตัวควบคุมเหล่านี้ และดึงค่าจากตัวควบคุมเมื่อปิดกล่องโต้ตอบ หมายเหตุว่า เมื่อขั้นตอนของ hook ได้รับข้อความWM_INITDIALOGระบบได้ไม่ยังย้ายตัวควบคุมไปยังตำแหน่งสุดท้ายของพวกเขา.

ขั้นตอนเริ่มต้นกล่องโต้ตอบจัดการข้อความในตัวควบคุมทั้งหมดในกล่องโต้ตอบการเริ่มต้น แต่ในขั้นตอนของ hook ได้รับการ WM_NOTIFYข้อความแจ้งเตือนสำหรับการกระทำของผู้ใช้บนตัวควบคุมเหล่านี้ตามที่อธิบายไว้ในขั้นตอนของ Hook Explorer-ลักษณะ.