באפשרותך ליצור תיבת דו-שיח מודאלית באמצעות הפונקציה DialogBox . עליך לציין את מזהה או שם של משאב תבנית בתיבת הדו-שיח ואת כתובת ההליך של תיבת הדו-שיח. הפונקציה DialogBox טוען את התבנית, מציג את תיבת הדו-שיח, ומעבד קלט משתמש כל עד שהמשתמש יסגור את תיבת הדו-שיח.
בדוגמה הבאה, היישום יציג תיבת דו-שיח מודאלית כאשר המשתמש בוחר בפקודה מחק פריט מתפריט היישום. תיבת הדו-שיח מכילה פקד עריכה (שבה המשתמש מזין את השם של פריט), אישור וביטול לחצנים. מזהי הבקרה עבור פקדים אלה הם ID_ITEMNAME IDOK, IDCANCEL, בהתאמה.
החלק הראשון של הדוגמה מכילה משפטי יוצר תיבת דו-שיח מודאלית. משפטים אלה, בהליך חלון בחלון הראשי של היישום, צור תיבת הדו-שיח כאשר המערכת מקבל הודעה WM_COMMAND נתקל מזהה הפקודה IDM_DELETEITEM. החלק השני של הדוגמה הוא ההליך בתיבת הדו-שיח, אשר מאחזרת את התוכן של פקד עריכה וסוגר את תיבת הדו-שיח עם קבלת הודעה WM_COMMAND.
המשפטים הבאים ליצור תיבת דו-שיח מודאלית. התבנית בתיבת הדו-שיח משאב בקובץ הפעלה של היישום, יש מזהה המשאב DLG_DELETEITEM:
מקרה WM_COMMAND: מעבר (LOWORD(wParam)) {מקרה IDM_DELETEITEM: אם (DialogBox (hinst, MAKEINTRESOURCE(DLG_DELETEITEM), hwnd, DeleteItemProc (DLGPROC)) = = IDOK) {
/ / להשלים את הפקודה; szItemName / / מכילה את שם הפריט / / מחק.
}
else
{
/ / ביטול הפקודה.
}
break;
} להחזיר 0 L
בדוגמה זו, היישום מזהה החלון הראשי שלו כחלון הבעלים עבור תיבת הדו-שיח. כאשר המערכת מציגה בתחילה את תיבת הדו-שיח, מיקומו הוא יחסיות לפינה השמאלית העליונה של אזור הלקוח של החלון הבעלים. היישום משתמש הערך המוחזר מ- DialogBox כדי לקבוע אם להמשיך הפקודה או לבטל אותה. המשפטים הבאים מגדירים את הפרוצדורה תיבת הדו-שיח.
תו szItemName [80]; / / מקבל את שם הפריט שברצונך למחוק.
DeleteItemProc BOOL להתקשרות חזרה (hwndDlg, הודעה, wParam, lParam) HWND hwndDlg;
הודעת UINT;
WPARAM wParam;
LPARAM lParam;
{מתג (הודעה) {מקרה WM_COMMAND: מעבר (LOWORD(wParam)) {מקרה IDOK: אם (!GetDlgItemText (hwndDlg, ID_ITEMNAME, szItemName, 80)) * szItemName = 0;
/ / סתיו.
מקרה IDCANCEL: EndDialog (hwndDlg, wParam);
החזרת TRUE;
}} להחזיר שקר;
}
בדוגמה זו, ההליך משתמש GetDlgItemText כדי לאחזר את הטקסט הנוכחי לפקד העריכה המזוהה על-ידי ID_ITEMNAME. לאחר מכן, ההליך קוראת לפונקציה EndDialog לקביעת ערך ההחזרה של תיבת הדו-שיח IDOK או IDCANCEL, בהתאם להודעה התקבל, וכדי להתחיל התהליך של סגירת תיבת הדו-שיח. מזהים IDOK ואת IDCANCEL מתאימים הלחצנים אישור וביטול. לאחר קריאות שגרה EndDialog, המערכת שולחת הודעות נוספות ההליך כדי להרוס את תיבת הדו-שיח, תחזיר את ערך ההחזרה של תיבת הדו-שיח בחזרה לפונקציה שיצר את תיבת הדו-שיח.