DialogBoxIndirect

แมโคDialogBoxIndirectสร้างกล่องโต้ตอบโมดอลจากกล่องโต้ตอบแม่แบบในหน่วยความจำ DialogBoxIndirectกลับตัวควบคุมจนกว่าฟังก์ชันการเรียกกลับที่ระบุในกล่องโต้ตอบโมดอลที่สิ้นสุดลง โดยการเรียกฟังก์ชันEndDialog แมโคDialogBoxIndirectใช้ฟังก์ชันDialogBoxIndirectParam.

int DialogBoxIndirect ( HINSTANCE  hInstance, / / จัดการกับอินสแตนซ์ของแอพลิเคชันLPDLGTEMPLATElpTemplate, / / ระบุแม่แบบกล่องโต้ตอบHWNDhWndParent, / / จัดการเจ้าของหน้าต่างDLGPROClpDialogFunc / / ชี้เพื่อโต้ตอบกล่องกระบวนงาน);
 

พารามิเตอร์

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

ในแม่แบบมาตรฐานสำหรับกล่องโต้ตอบ หัวข้อที่เป็นโครงสร้างDLGTEMPLATEตาม ด้วยการเพิ่มเติมความยาวตัวแปรอาร์เรย์ ข้อมูลสำหรับตัวควบคุมประกอบด้วยโครงสร้างแบบDLGITEMTEMPLATEที่ตาม ด้วยการเพิ่มเติมความยาวตัวแปรอาร์เรย์.

ในแม่แบบเพิ่มเติมสำหรับกล่องโต้ตอบ หัวข้อการใช้รูปแบบDLGTEMPLATEEXและข้อกำหนดของตัวควบคุมที่ใช้รูปแบบDLGITEMTEMPLATEEX.

hWndParent
ระบุหน้าต่างที่เป็นเจ้าของกล่องโต้ตอบ.
lpDialogFunc
ชี้ไปยังขั้นตอนในกล่องโต้ตอบ ดูข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอนในกล่องโต้ตอบ DialogProc.

ส่งกลับค่า

ถ้าฟังก์ชันสำเร็จ ค่าส่งกลับจะระบุไว้ในการโทรไปยังฟังก์ชันEndDialogที่ถูกใช้เพื่อยกเลิกกล่องโต้ตอบพารามิเตอร์nResult.

ถ้าฟังก์ชันล้มเหลว ค่าส่งกลับเป็น– 1 การขอเพิ่มเติมข้อมูลข้อผิดพลาด โทร GetLastError.

หมายเหตุ

แมโคDialogBoxIndirectใช้ฟังก์ชันCreateWindowExเพื่อสร้างกล่องโต้ตอบ DialogBoxIndirectแล้วส่งข้อความWM_INITDIALOGให้ขั้นตอนในกล่องโต้ตอบ ถ้าแม่แบบระบุลักษณะ DS_SETFONT ฟังก์ชันการส่งข้อความWM_SETFONTยังลงในกระบวนงานของกล่องโต้ตอบ ฟังก์ชันจะแสดงกล่องโต้ตอบ (คำนึงว่าแม่แบบระบุลักษณะ WS_VISIBLE), เจ้าของหน้าต่างที่ปิดใช้งาน และเริ่มวนรอบข้อความของตัวเองในการรับ และส่งข้อความสำหรับกล่องโต้ตอบ.

เมื่อขั้นตอนในกล่องโต้ตอบเรียกฟังก์ชันEndDialog , DialogBoxIndirectกล่องโต้ตอบขัด สิ้นสุดการวนรอบข้อความ ช่วยให้เจ้าของหน้าต่าง (ถ้าเคย เปิดใช้งาน), และส่งกลับค่าของพารามิเตอร์nResultที่ระบุ โดยขั้นตอนในกล่องโต้ตอบเมื่อนั้นเรียกว่าEndDialog.

ในแม่แบบกล่องโต้ตอบมาตรฐาน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: ลักษณะทั้งหมดที่ไม่ได้รับการสนับสนุนในโครงสร้างในต้นแบบการโต้ตอบการอ้างอิง โดยพารามิเตอร์lpTemplate . DLGTEMPLATE

QuickInfo

nbsp Windows &NT:ต้องการเวอร์ชัน 3.1 หรือรุ่นที่ใหม่กว่า
Windows:ต้องใช้ Windows 95 หรือรุ่นที่ใหม่กว่า
Windows CE:ต้องการเวอร์ชัน 1.0 หรือรุ่นใหม่กว่า
หัวข้อ:ประกาศใน winuser.h
ไลบรารีที่นำเข้า:ใช้ user32.lib
Unicode:นำมาใช้เป็น Unicode และ ANSI รุ่นบน Windows NT.

ดูเพิ่มเติม

ภาพรวมของกล่องโต้ตอบฟังก์ชันของกล่องโต้ตอบ CreateWindowEx, DialogBox, DialogBoxIndirectParam, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT

Index