הפונקציה DialogBoxIndirectParam יוצרת תיבת דו-שיח מודאלית מתבנית תיבת הדו-שיח בזיכרון. לפני הצגת תיבת הדו-שיח, הפונקציה עוברת ערך המוגדר על-ידי יישום הנוהל תיבת הדו-שיח כפרמטר lParam ההודעה WM_INITDIALOG . יישום להשתמש בערך זה כדי לאתחל פקדי תיבת הדו-שיח.
int DialogBoxIndirectParam ( HINSTANCE hInstance, / / לטפל מופע היישוםLPCDLGTEMPLATEhDialogTemplate, / / מזהה תבנית בתיבת הדו-שיחHWNDhWndParent, / / לטפל לחלון הבעליםDLGPROClpDialogFunc, / / המצביע אל תיבת הדו-שיח תיבת שגרהLPARAMdwInitParam / / ערך אתחול);
תבנית רגילה של תיבת הדו-שיח, הכותרת הוא מבנה DLGTEMPLATE ואחריו מערכי באורך משתנה נוספים. הנתונים עבור כל פקד מורכב מבנה DLGITEMTEMPLATE ואחריו מערכי באורך משתנה נוספים.
בתבנית מורחבת של תיבת הדו-שיח, הכותרת משתמש בתבנית DLGTEMPLATEEX ואת הגדרות פקד להשתמש בתבנית DLGITEMTEMPLATEEX.
אם הפונקציה מצליחה, הערך המוחזר הוא פרמטר nResult שצוין בקריאה לפונקציה EndDialog ששימשה כדי לסיים את תיבת הדו-שיח.
אם הפעולה תיכשל, הערך המוחזר הוא – 1. כדי לקבל מידע שגיאות מורחב, לקרוא GetLastError.
הפונקציה DialogBoxIndirectParam משתמשת בפונקציה CreateWindowEx כדי ליצור את תיבת הדו-שיח. DialogBoxIndirectParam לאחר מכן שולח הודעה WM_INITDIALOG הפרוצדורה של תיבת הדו-שיח. אם התבנית מציין את סגנון DS_SETFONT, הפונקציה גם שולח הודעה WM_SETFONT הפרוצדורה של תיבת הדו-שיח. הפונקציה מציג את תיבת הדו-שיח (ללא תלות אם התבנית מציין את סגנון WS_VISIBLE), מבטלת את חלון הבעלים ומפעילה משלו לולאת הודעה כדי לאחזר שיגור הודעות עבור תיבת הדו-שיח.
כאשר הפרוצדורה תיבת הדו-שיח קוראת לפונקציה EndDialog , DialogBoxIndirectParam הורס את תיבת הדו-שיח, מסתיים לולאת הודעה, מאפשר את חלון הבעלים (אם קודם לכן מופעלת) ומחזיר את הפרמטר nResult שצוין על-ידי הפרוצדורה תיבת דו-שיח כאשר היא קוראת EndDialog.
בתבנית תיבת הדו-שיח הרגילה, המבנה DLGTEMPLATE וכל אחת מבני DLGITEMTEMPLATE יש ליישר על גבולות DWORD . עליך גם ליישר את מערך נתונים יצירה שבאה מבנה DLGITEMTEMPLATE על גבול DWORD . כל המערכים באורך משתנה אחרים בתבנית חייב חייב להיות מיושרים ב- WORD גבולות.
בתבנית תיבת הדו-שיח מורחבת, את הכותרת העליונה של DLGTEMPLATEEX ואת כל הגדרות בקרת DLGITEMTEMPLATEEX עליך ליישר על גבולות DWORD . יצירת נתונים המערך, אם בכלל, אחרי מבנה DLGITEMTEMPLATEEX חייב גם להיות מיושרים על גבול DWORD . כל המערכים באורך משתנה אחרים בתבנית עליך מיושר על גבולות מילה.
מחרוזות תווים כל תבנית בתיבת הדו-שיח, כגון כותרות עבור תיבת הדו-שיח ולחצנים, חייב להיות מחרוזות Unicode. כדי ליצור קוד הפועל ב- Windows ו- Windows NT, השתמש בפונקציה MultiByteToWideChar כדי ליצור מחרוזות Unicode אלה.
Windows 95 ואילך:המערכת יכול לתמוך מרבי של 255 פקדים לכל תבנית בתיבת הדו-שיח. כדי למקם פקדים יותר מ- 255 בתיבת דו-שיח, צור את הפקדים במטפל בהודעות WM_INITDIALOG במקום להציבם בתבנית.
חלונות CE: אם המשתמש מקיש ALT + H ואילו בתיבת הדו-שיח יש מוקד הקלט, המערכת הצבות הודעה WM_HELP הפרוצדורה תיבת דו-שיח. יישום צריך להגיב להודעה זו על-ידי הצגת עזרה תלויית הקשר עבור תיבת הדו-שיח.
עבור הדו-שיח הגבלות אחרות, ראה CreateDialogIndirectParam.
nbsp; Windows &NT: מחייב גירסה 3.1 או גירסה מתקדמת יותר.
Windows:נדרש Windows 95 או גירסה מתקדמת יותר.
חלונות CE:דורש גירסה 1.0 ואילך.
כותרת עליונה:להצהיר על winuser.h.
ייבוא ספריית:השתמש user32.lib.
Unicode:מיושם על גירסאות Unicode ו- ANSI ב- Windows NT.
סקירה כללית של תיבות הדו-שיח, פונקציות של תיבת הדו-שיח, CreateWindowEx, DialogBox, DialogBoxIndirect, DialogBoxParam, DialogProc, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, EndDialog, MultiByteToWideChar, WM_INITDIALOG, WM_SETFONT