DialogBoxIndirect

המאקרו DialogBoxIndirect יוצר תיבת דו-שיח מודאלית מתבנית תיבת הדו-שיח בזיכרון. DialogBoxIndirect לא להחזיר את השליטה עד הפונקציה שנקבע להתקשרות מסיים את תיבת דו-שיח מודאלית על-ידי קריאה לפונקציה EndDialog . המאקרו DialogBoxIndirect משתמשת בפונקציה DialogBoxIndirectParam.

int DialogBoxIndirect ( HINSTANCE  hInstance, / / לטפל מופע היישוםLPDLGTEMPLATElpTemplate, / / מזהה תבנית בתיבת הדו-שיחHWNDhWndParent, / / לטפל לחלון הבעליםDLGPROClpDialogFunc / / המצביע אל תיבת הדו-שיח תיבת שגרה);
 

פרמטרים

hInstance
מזהה המופע של המודול יוצר תיבת הדו-שיח.
lpTemplate
מצביע לאובייקט זיכרון גלובלי הכולל בתבנית המשתמשת ב- DialogBoxIndirect כדי ליצור את תיבת הדו-שיח. תבנית בתיבת הדו-שיח מכילה כותרת המתארת את תיבת הדו-שיח, ואחריו בלוקים נוסף אחד או יותר של נתונים המתארים את כל אחד מהפקדים בתיבת הדו-שיח. התבנית להשתמש תבנית סטנדרטית או עיצוב מורחב.

תבנית רגילה של תיבת הדו-שיח, הכותרת הוא מבנה DLGTEMPLATE ואחריו מערכי באורך משתנה נוספים. הנתונים עבור כל פקד מורכב מבנה DLGITEMTEMPLATE ואחריו מערכי באורך משתנה נוספים.

בתבנית מורחבת של תיבת הדו-שיח, הכותרת משתמש בתבנית DLGTEMPLATEEX ואת הגדרות פקד להשתמש בתבנית DLGITEMTEMPLATEEX.

hWndParent
מזהה את החלון שבבעלותה בתיבת הדו-שיח.
lpDialogFunc
מצביע לשגרה בתיבת הדו-שיח. לקבלת מידע נוסף אודות ההליך בתיבת הדו-שיח, עיין DialogProc.

להחזיר ערכים

אם הפונקציה מצליחה, הערך המוחזר הוא פרמטר nResult שצוין בקריאה לפונקציה EndDialog ששימשה כדי לסיים את תיבת הדו-שיח.

אם הפעולה תיכשל, הערך המוחזר הוא – 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 . יצירת נתונים המערך, אם בכלל, אחרי מבנה DLGITEMTEMPLATEEX חייב גם להיות מיושרים על גבול DWORD . כל המערכים באורך משתנה אחרים בתבנית עליך מיושר על גבולות מילה.

מחרוזות תווים כל תבנית בתיבת הדו-שיח, כגון כותרות עבור תיבת הדו-שיח ולחצנים, חייב להיות מחרוזות Unicode. כדי ליצור קוד הפועל ב- Windows ו- Windows NT, השתמש בפונקציה MultiByteToWideChar כדי ליצור מחרוזות Unicode אלה.

Windows 95 ואילך:המערכת יכול לתמוך מרבי של 255 פקדים לכל תבנית בתיבת הדו-שיח. כדי למקם פקדים יותר מ- 255 בתיבת דו-שיח, צור את הפקדים במטפל בהודעות WM_INITDIALOG במקום להציבם בתבנית.

חלונות CE: לא כל סגנונות נתמכים במבנה DLGTEMPLATE בתבנית הדו-שיח המכונה על-ידי הפרמטר lpTemplate .

QuickInfo

nbsp; Windows &NT: מחייב גירסה 3.1 או גירסה מתקדמת יותר.
Windows:נדרש Windows 95 או גירסה מתקדמת יותר.
חלונות 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