יצירת תיבת דו-שיח מודאלית

באפשרותך ליצור תיבת דו-שיח מודאלית באמצעות הפונקציה 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, המערכת שולחת הודעות נוספות ההליך כדי להרוס את תיבת הדו-שיח, תחזיר את ערך ההחזרה של תיבת הדו-שיח בחזרה לפונקציה שיצר את תיבת הדו-שיח.

Index