DLGTEMPLATE

DLGTEMPLATEโครงสร้างกำหนดขนาดและลักษณะของกล่องโต้ตอบ โครงสร้างนี้ แรกเสมอในแม่แบบมาตรฐานสำหรับกล่องโต้ตอบ นอกจากนี้ ระบุจำนวนของตัวควบคุมในกล่องโต้ตอบ และดังนั้น ระบุจำนวนของโครงสร้างDLGITEMTEMPLATEต่อมาในต้นแบบ.

typedef struct { / / ลักษณะ DWORD dltt 
    DWORD dwExtendedStyle 
    WORD cdit 
    สั้น x 
    y สั้น 
    cx สั้น 
    cy สั้น 
} DLGTEMPLATE 

 

สมาชิก

ลักษณะ
ระบุลักษณะของกล่องโต้ตอบ สมาชิกนี้สามารถเป็นการรวมกันของค่าลักษณะหน้าต่าง (เช่น WS_CAPTION และ WS_SYSMENU) และหนึ่ง หรือหลายค่าลักษณะกล่องโต้ตอบต่อไปนี้:
ค่า ความหมาย
DS_3DLOOK ทำให้กล่องโต้ตอบแบบอักษร nonbold และวาดเส้นขอบสามมิติรอบหน้าต่างควบคุมในกล่องโต้ตอบ.

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

DS_ABSALIGN บ่งชี้ว่า พิกัดของกล่องโต้ตอบเป็นพิกัดของหน้าจอ ถ้าลักษณะนี้ไม่มีระบุ ระบบถือเป็นพิกัดของไคลเอ็นต์.
DS_CENTER กล่องโต้ตอบในพื้นที่การทำงาน การจัดกึ่งกลาง กล่าวคือ ในพื้นที่ที่ไม่บดบัง โดยถาด.
DS_CENTERMOUSE เคอร์เซอร์ของเมาส์ในกล่องโต้ตอบการจัดกึ่งกลาง.
DS_CONTEXTHELP รวมเครื่องหมายคำถามในแถบชื่อเรื่องของกล่องโต้ตอบ เมื่อผู้ใช้คลิกที่เครื่องหมายคำถาม การเปลี่ยนแปลงเครื่องหมายคำถามกับตัวชี้เคอร์เซอร์ ถ้าผู้ใช้แล้วคลิกที่ตัวควบคุมในกล่องโต้ตอบ ตัวควบคุมได้รับข้อความ WM_HELP ตัวควบคุมควรส่งต่อข้อความโต้ตอบกล่องกระบวนการ ซึ่งควรเรียก WinHelpฟังก์ชันที่ใช้คำสั่ง HELP_WM_HELP แอปพลิเคชันของวิธีใช้แสดงหน้าต่างแบบผุดขึ้นที่โดยทั่วไปจะประกอบด้วยวิธีใช้สำหรับตัวควบคุม.

หมายเหตุว่า DS_CONTEXTHELP เป็นเท่าตัวยึด เมื่อกล่องโต้ตอบสร้าง ระบบตรวจสอบสำหรับ DS_CONTEXTHELP และ ถ้ามันมี เพิ่ม WS_EX_CONTEXTHELP ลักษณะแบบขยายของกล่องโต้ตอบ WS_EX_CONTEXTHELP ไม่สามารถใช้กับลักษณะ WS_MAXIMIZEBOX หรือ WS_MINIMIZEBOX.

DS_CONTROL สร้างกล่องโต้ตอบที่ทำงานได้ดีเป็นหน้าต่างลูกอื่นกล่องโต้ตอบ เหมือนกับหน้าในแผ่นคุณสมบัติ ลักษณะนี้ช่วยให้ผู้ใช้แท็บระหว่าง windows ตัวควบคุมของกล่องโต้ตอบเด็ก ใช้คีย์ลัดของ และอื่น ๆ.
DS_FIXEDSYS ทำให้กล่องโต้ตอบการใช้ SYSTEM_FIXED_FONT ที่แทนค่าเริ่มต้น SYSTEM_FONT SYSTEM_FIXED_FONT เป็นแบบอักษร monospace:เข้ากันได้กับระบบแบบอักษรใน Windows รุ่นก่อนหน้านี้กว่า 3.0.
DS_LOCALEDIT ใช้ได้กับโปรแกรมประยุกต์ขนาด 16 บิตเท่านั้น ลักษณะนี้นำตัวควบคุมการแก้ไขในกล่องโต้ตอบการจัดสรรหน่วยความจำจากเซ็กเมนต์ข้อมูลของโปรแกรมประยุกต์ มิฉะนั้น แก้ไขควบคุมการปันส่วนเก็บข้อมูลจากวัตถุหน่วยความจำระดับโลก.
DS_MODALFRAME สร้างกล่องโต้ตอบกับกล่องโต้ตอบโมดอลเฟรมที่สามารถถูกรวม ด้วยแถบชื่อเรื่องและเมนูระบบ โดยการระบุลักษณะ WS_CAPTION และ WS_SYSMENU.
DS_NOFAILCREATE Windows 95: สร้างกล่องโต้ตอบแม้ว่าเกิดข้อผิดพลาด — ตัวอย่างเช่น ถ้าไม่สามารถสร้างหน้าต่างลูก หรือ ถ้าระบบไม่สามารถสร้างเซ็กเมนต์ข้อมูลพิเศษสำหรับตัวควบคุมการแก้ไข.
DS_NOIDLEMSG ไม่ใส่ข้อความ WM_ENTERIDLE ที่ระบบจะมิฉะนั้นส่งไปยังเจ้าของกล่องโต้ตอบในขณะที่กล่องโต้ตอบจะแสดงขึ้น.
DS_SETFONT บ่งชี้ว่า หัวข้อของแบบกล่องโต้ตอบประกอบด้วยข้อมูลเพิ่มเติมที่ระบุแบบอักษรที่จะใช้สำหรับข้อความในพื้นที่ของไคลเอนต์และตัวควบคุมของกล่องโต้ตอบ ข้อมูลแบบอักษรเริ่มต้นบนขอบเขตWORDที่ตามชื่ออาร์เรย์ ระบุค่าขนาด 16 บิตจุดและสตชื่อแบบอักษร Unicode ถ้าเป็นไปได้ ระบบสร้างแบบอักษรตามค่าที่ระบุ แล้ว ระบบผ่านหมายเลขอ้างอิงของแบบอักษรกล่องโต้ตอบ และตัวควบคุม โดยการส่งข้อความWM_SETFONT.

ถ้าลักษณะนี้ไม่มีระบุ แบบกล่องโต้ตอบไม่รวมข้อมูลแบบอักษร.

DS_SETFOREGROUND ทำให้ระบบใช้ฟังก์ชันSetForegroundWindowเพื่อนำกล่องโต้ตอบไปเบื้องหน้า.
DS_SYSMODAL ลักษณะนี้ล้าสมัย และรวมเข้ากันได้กับ Windows รุ่นก่อนหน้า ถ้าคุณระบุลักษณะนี้ ระบบสร้างกล่องโต้ตอบกับลักษณะ WS_EX_TOPMOST รวมลักษณะนี้ ด้วยลักษณะ DS_CONTROL.

dwExtendedStyle
ระบุลักษณะแบบขยายหน้าต่าง สมาชิกนี้ไม่ได้ถูกใช้ในการสร้างกล่องโต้ตอบ แต่โปรแกรมประยุกต์ที่ใช้แม่แบบของกล่องโต้ตอบสามารถใช้ในการสร้างชนิดอื่น ๆ ของ windows.
cdit
ระบุจำนวนของรายการในกล่องโต้ตอบ.
x
ระบุที่พิกัด x ในการโต้ตอบกล่องหน่วย มุมบนซ้ายของกล่องโต้ตอบ.
y
ระบุการ y-พิกัด ในการโต้ตอบกล่องหน่วย มุมบนซ้ายของกล่องโต้ตอบ.
cx
ระบุความกว้าง โต้ตอบกล่องหน่วย ของกล่องโต้ตอบ.
cy
ระบุความสูง โต้ตอบกล่องหน่วย ของกล่องโต้ตอบ.

หมายเหตุ

ในแม่แบบมาตรฐานสำหรับกล่องโต้ตอบDLGTEMPLATEโครงสร้างจะเสมอตาม ด้วยสามอาร์เรย์ความยาวที่ระบุเมนู คลาส และชื่อเรื่องสำหรับกล่องโต้ตอบ เมื่อมีกำหนดลักษณะ DS_SETFONT อาร์เรย์เหล่านี้จะยังแล้วตาม ด้วยค่าแบบ 16 บิตที่ระบุจุดขนาดและความยาวเรย์อื่นที่ระบุชื่อแบบอักษร อาร์เรย์แต่ละประกอบด้วยอย่าง น้อยหนึ่งองค์ประกอบ 16 บิต เมนู คลาส หัวข้อ และแบบอักษรค่าอาร์เรย์ต้องถูกจัดตำแหน่งบนขอบเขตของWORD.

ทันทีต่อโครงสร้างDLGTEMPLATEเป็นอาร์เรย์เป็นเมนูที่ระบุถึงทรัพยากรเมนูสำหรับกล่องโต้ตอบ ถ้าองค์ประกอบแรกของอาร์เรย์นี้คือ 0x0000 กล่องโต้ตอบมีไม่มีเมนู และอาร์เรย์มีองค์ประกอบอื่น ๆ ไม่ ถ้าองค์ประกอบแรกคือ 0xFFFF อาร์เรย์มีองค์ประกอบเพิ่มเติมที่หนึ่งที่ระบุค่าแสดงลำดับของเมนูทรัพยากรในแฟ้มที่ปฏิบัติการ ถ้าองค์ประกอบแรกมีค่าอื่น ๆ ระบบถือว่าอาร์เรย์เป็นสตริง Unicode สิ้นสุดด้วยค่า null ที่ระบุชื่อของทรัพยากรที่เมนูในแฟ้มปฏิบัติการได้.

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

ต่อชั้นอาร์เรย์เป็นอาร์เรย์เป็นชื่อเรื่องที่ระบุสตริง Unicode สิ้นสุดด้วยค่า null ที่ประกอบด้วยชื่อเรื่องของกล่องโต้ตอบ ถ้าองค์ประกอบแรกของอาร์เรย์นี้คือ 0x0000 กล่องโต้ตอบได้ไม่มีชื่อเรื่อง และอาร์เรย์ได้ไม่มีองค์ประกอบอื่น ๆ.

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

ตามหัวข้อการDLGTEMPLATEในแม่แบบกล่องโต้ตอบมาตรฐานมีโครงสร้างDLGITEMTEMPLATEหนึ่ง หรือมากกว่าที่กำหนดขนาดและลักษณะของตัวควบคุมในกล่องโต้ตอบ สมาชิกcditระบุจำนวนของโครงสร้างของDLGITEMTEMPLATEในแม่แบบ โครงสร้างDLGITEMTEMPLATEเหล่านี้ต้องถูกจัดตำแหน่งบนขอบเขตของDWORD.

ถ้าคุณได้ระบุสายอักขระที่มีอักขระในเมนู คลาส ชื่อ หรืออาร์เรย์ของไทป์เฟซ คุณต้องใช้สายอักขระ Unicode เมื่อต้องการสร้างรหัสที่ทำงานได้ทั้ง Windows และ Windows NT ใช้ฟังก์ชันMultiByteToWideCharในการสร้างสายอักขระ Unicode เหล่านี้.

สมาชิกx, y, cxและcyระบุค่าในหน่วยของกล่องโต้ตอบ คุณสามารถแปลงค่าเหล่านี้เป็นหน้าจอหน่วย (พิกเซล) โดยใช้ฟังก์ชันMapDialogRect.

QuickInfo

nbsp Windows &NT:ต้องการเวอร์ชัน 3.1 หรือรุ่นที่ใหม่กว่า
Windows:ต้องใช้ Windows 95 หรือรุ่นที่ใหม่กว่า
Windows CE:ต้องการเวอร์ชัน 1.0 หรือรุ่นใหม่กว่า
หัวข้อ:ประกาศใน winuser.h.

ดูเพิ่มเติม

ภาพรวมของกล่องโต้ตอบโครงสร้างของกล่องโต้ตอบ CreateDialogIndirect, CreateDialogIndirectParam, DialogBoxIndirect, DialogBoxIndirectParam, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATEEX, MapDialogRect, MultiByteToWideChar

Index