תיבות הדו-שיח modeless

תיבת הדו-שיח modeless צריך להיות חלון מוקפץ עם תפריט מערכת פס כותרת, גבול דק; כלומר, התבנית בתיבת הדו-שיח, עליך לציין את הסגנונות WS_POPUP, WS_CAPTION, WS_BORDER, WS_SYSMENU. המערכת אינה לא להציג את תיבת הדו-שיח באופן אוטומטי אלא אם התבנית מציין את סגנון WS_VISIBLE.

יישום יוצר תיבת הדו-שיח modeless באמצעות הפונקציה CreateDialog או CreateDialogIndirect . CreateDialog דורש את השם או את מזהה המשאב המכיל תבנית בתיבת הדו-שיח; CreateDialogIndirect מחייב את נקודת האחיזה האובייקט זיכרון המכיל תבנית בתיבת הדו-שיח. שתי הפונקציות האחרות, CreateDialogParam , CreateDialogIndirectParam, גם ליצור תיבות הדו-שיח modeless; הם עוברים הפרמטר שצוין להליך תיבת הדו-שיח כאשר תיבת הדו-שיח נוצר.

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

תיבת הדו-שיח modeless לא מבטלת את חלון הבעלים ולא שולח הודעות אליו. בעת יצירת תיבת הדו-שיח, המערכת הופכת את החלון הפעיל, אך היישום או המשתמש לשנות את החלון הפעיל בכל עת. אם תיבת הדו-שיח הופך ללא פעיל, הוא נשאר מעל החלון בעל סדר Z, גם אם חלון בעלים פעיל.

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

תיבת הדו-שיח modeless אין אפשרות להחזיר ערך ליישום אינה תיבת דו-שיח מודאלית, אך ההליך תיבת הדו-שיח לשלוח מידע אל חלון בעלים באמצעות הפונקציה SendMessage.

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

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

הפרוצדורה תיבת הדו-שיח עליך לא לפונקציה EndDialog כדי להרוס את תיבת הדו-שיח modeless.

Index