ฟังก์ชันCreateDialogIndirectParamสร้างกล่องโต้ตอบที่สร้างจากแม่แบบกล่องโต้ตอบในหน่วยความจำ ก่อนที่จะแสดงในกล่องโต้ตอบ ฟังก์ชันส่งค่ากำหนดโดยโปรแกรมประยุกต์ลงในกระบวนงานของกล่องโต้ตอบเป็นพารามิเตอร์ของความWM_INITDIALOG lParam โปรแกรมประยุกต์ที่สามารถใช้ค่านี้ในการเตรียมใช้งานตัวควบคุมกล่องโต้ตอบ.
(HWND CreateDialogIndirectParam HINSTANCE hInstance, / / จัดการกับอินสแตนซ์ของแอพลิเคชันLPCDLGTEMPLATElpTemplate, / / ชี้เพื่อโต้ตอบกล่องแม่แบบHWNDhWndParent, / / จัดการเจ้าของหน้าต่างDLGPROClpDialogFunc, / / ชี้เพื่อโต้ตอบกล่องกระบวนงานLPARAMlParamInit / / ค่าเริ่มต้น);
ในแม่แบบมาตรฐาน หัวข้อที่เป็นโครงสร้างDLGTEMPLATEตาม ด้วยการเพิ่มเติมความยาวตัวแปรอาร์เรย์ ข้อมูลสำหรับตัวควบคุมประกอบด้วยโครงสร้างแบบDLGITEMTEMPLATEที่ตาม ด้วยการเพิ่มเติมความยาวตัวแปรอาร์เรย์.
ในแม่แบบกล่องโต้ตอบเพิ่มเติม หัวข้อการใช้รูปแบบDLGTEMPLATEEXและข้อกำหนดของตัวควบคุมที่ใช้รูปแบบDLGITEMTEMPLATEEX.
หลังจากที่ส่งกลับค่าCreateDialogIndirectParamคุณสามารถว่างแบบ ซึ่งจะใช้เพียงเพื่อเรียกกล่องโต้ตอบการเริ่มต้นใช้งาน.
ถ้าฟังก์ชันสำเร็จ ส่งคืนค่าเป็นหมายเลขอ้างอิงของหน้าต่างกล่องโต้ตอบ.
ถ้าฟังก์ชันล้มเหลว ส่งคืนค่าเป็น NULL การขอเพิ่มเติมข้อมูลข้อผิดพลาด โทร GetLastError.
ฟังก์ชันCreateDialogIndirectParamใช้ฟังก์ชันCreateWindowExเพื่อสร้างกล่องโต้ตอบ CreateDialogIndirectParamแล้วส่งข้อความWM_INITDIALOGให้ขั้นตอนในกล่องโต้ตอบ ถ้าแม่แบบระบุลักษณะ DS_SETFONT ฟังก์ชันการส่งข้อความWM_SETFONTยังลงในกระบวนงานของกล่องโต้ตอบ ฟังก์ชันการแสดงกล่องโต้ตอบถ้าแม่แบบระบุลักษณะ WS_VISIBLE สุดท้าย ที่CreateDialogIndirectParamส่งกลับหมายเลขอ้างอิงของหน้าต่างกล่องโต้ตอบ.
หลังจากที่ส่งกลับค่าCreateDialogIndirectParamคุณสามารถใช้ฟังก์ชันShowWindowเพื่อแสดงกล่องโต้ตอบ (ถ้ายังไม่สามารถมองเห็นได้) ใช้ฟังก์ชันDestroyWindowเพื่อทำลายกล่องโต้ตอบ.
ในแม่แบบกล่องโต้ตอบมาตรฐานDLGTEMPLATEโครงสร้างและโครงสร้างDLGITEMTEMPLATEแต่ละต้องถูกจัดตำแหน่งบนขอบเขตของDWORD อาร์เรย์ข้อมูลการสร้างที่ตามโครงสร้างของDLGITEMTEMPLATEยังต้องถูกจัดตำแหน่งบนขอบDWORD อาร์อื่น ๆ ความยาวเรย์ในแม่แบบทั้งหมดต้องต้องถูกจัดตำแหน่งบนขอบเขตของWORD.
ในแม่แบบกล่องโต้ตอบเพิ่มเติม หัวข้อการDLGTEMPLATEEXและแต่ละข้อกำหนดควบคุมDLGITEMTEMPLATEEXต้องถูกจัดตำแหน่งบนขอบเขตของDWORD การสร้างข้อมูล array ถ้าใด ๆ ที่เป็นไปตามโครงสร้างDLGITEMTEMPLATEEXต้องยังถูกจัดตำแหน่งบนขอบDWORD อาร์อื่น ๆ ความยาวเรย์ในแม่แบบทั้งหมดต้องถูกจัดตำแหน่งบนขอบเขตของWORD.
สายอักขระทั้งหมดในแม่กล่องโต้ตอบ เช่นชื่อเรื่องในกล่องโต้ตอบและปุ่ม ต้องเป็นสายอักขระ Unicode เมื่อต้องการสร้างรหัสที่ทำงานได้ทั้ง Windows และ Windows NT ใช้ฟังก์ชันMultiByteToWideCharในการสร้างสายอักขระ Unicode เหล่านี้.
Windows 95 และรุ่นที่ใหม่กว่า:ระบบสามารถรองรับได้สูงสุด 255 ตัวควบคุมต่อแม่แบบกล่องโต้ตอบ เมื่อต้องการวางตัวควบคุมที่มากกว่า 255 ในกล่องโต้ตอบ สร้างตัวควบคุมในตัวจัดการข้อความ WM_INITDIALOG แทนที่ใส่ในแม่แบบ.
Windows CE: กล่องโต้ตอบอยู่นอกพื้นที่การมองเห็นของหน้าจอจะไม่อัตโนมัติ repositioned.
ถ้าผู้ใช้ให้กด ALT + H ในขณะที่กล่องโต้ตอบมีโฟกัสป้อนข้อมูล ระบบบทความ WM_HELP ในการกระบวนการโต้ตอบ แอปพลิเคชันควรตอบสนองต่อข้อความนี้ โดยการแสดงวิธีใช้ตามบริบทสำหรับกล่องโต้ตอบ.
สมาชิกลักษณะของโครงสร้างDLGTEMPLATEไม่สนับสนุนในลักษณะต่อไปนี้:
ได้รับการจัดตำแหน่งเริ่มต้น ใช้ลักษณะ DS_CENTER.
ถ้าไม่ระบุลักษณะ WS_CHILD, WS_POPUP ลักษณะจะถือว่า.
nbsp Windows &NT:ต้องการเวอร์ชัน 3.1 หรือรุ่นที่ใหม่กว่า
Windows:ต้องใช้ Windows 95 หรือรุ่นที่ใหม่กว่า
Windows CE:ต้องการเวอร์ชัน 1.0 หรือรุ่นใหม่กว่า
หัวข้อ:ประกาศใน winuser.h
ไลบรารีที่นำเข้า:ใช้ user32.lib
Unicode:นำมาใช้เป็น Unicode และ ANSI รุ่นบน Windows NT.
ภาพรวมของกล่องโต้ตอบฟังก์ชันของกล่องโต้ตอบ CreateDialog, CreateDialogIndirect, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MultiByteToWideChar, ShowWindow, WM_INITDIALOG, WM_SETFONT