שגרה תיבת הדו-שיח דומה שגרה חלון זה המערכת שולחת הודעות הנוהל כאשר מידע לתת או משימות לביצוע. בניגוד שגרה חלון, שגרה תיבת הדו-שיח אף פעם לא קוראת לפונקציה DefWindowProc . במקום זאת, היא מחזירה את הערך הבוליאני TRUE אם מעבד הודעה או FALSE אם לא.
כל הפרוצדורה תיבת הדו-שיח כוללת את הטופס הבא:
DlgProc BOOL APIENTRY (hwndDlg, הודעה, wParam, lParam) HWND hwndDlg;
הודעת UINT;
WPARAM wParam;
LPARAM lParam;
{מתג (הודעה) {/ / הודעה במקום מקרים כאן.
ברירת מחדל: להחזיר שקר;
}
}
הפרמטרים של שגרות שמשרתים את אותה מטרה כמו בהליך חלון, עם הפרמטר hwndDlg לקבל את נקודת האחיזה של חלון של תיבת הדו-שיח.
ברוב ההליכים תיבת הדו-שיח לעבד את ההודעה WM_INITDIALOG והודעות WM_COMMAND שנשלחו על-ידי הפקדים, אך לעבד מעטים אם בכלל הודעות אחרות. אם שגרה תיבת הדו-שיח אינם מעבדים הודעה, עליה להחזיר FALSE כדי להורות למערכת לעבד את ההודעות באופן פנימי. החריג היחיד לכלל זה הוא ההודעה WM_INITDIALOG. הפרוצדורה תיבת הדו-שיח חייב להחזיר נכון להפנות את המערכת כדי להמשיך לעבד את ההודעה WM_INITDIALOG. בכל מקרה, חייבת לא קריאה לפרוצדורה DefWindowProc.