ההודעה WM_INITDIALOG

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

ההליך ניתן לאתחל פקדי באמצעות פונקציות כגון SetDlgItemText ו- CheckDlgButton. מכיוון שפקדי windows, ההליך ניתן לטפל בהם גם באמצעות חלון-ניהול פונקציות כגון EnableWindow ו- SetFocus. ההליך יכול לאחזר את נקודת האחיזה של חלון עבור פקד באמצעות הפונקציה GetDlgItem.

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

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

אם היישום יוצר תיבת הדו-שיח על-ידי שימוש באחת מהפונקציות DialogBoxParam, DialogBoxIndirectParam, CreateDialogParamאו CreateDialogIndirectParam, הפרמטר lParam עבור ההודעה WM_INITDIALOG מכיל את הפרמטר הנוסף שהועבר לפונקציה. שיישומים בדרך כלל משתמשים בפרמטר נוסף זה להעביר את הכתובת של מידע אתחול נוספות להליך תיבת דו-שיח, אך ההליך תיבת הדו-שיח חייב לקבוע את המשמעות של הפרמטר. אם היישום משתמש בפונקציה אחרת כדי ליצור את תיבת הדו-שיח, המערכת יגדיר את הפרמטר lParam NULL.

לפני החזרה מתיבת ההודעות WM_INITDIALOG , ההליך עליך לקבוע אם ההגדרה אמורה מוקד הקלט פקד נתון. אם הפרוצדורה תיבת הדו-שיח מחזירה TRUE, המערכת יגדיר באופן אוטומטי מוקד הקלט הפקד שאת מטפל בחלון הוא בפרמטר wParam . אם הפקד מקבל את המוקד ברירת המחדל אינה מתאימה, אותו קבע את המוקד אל הפקד המתאים על-ידי שימוש בפונקציה השירות SetFocus . אם ההליך מגדיר מוקד הקלט, עליה להחזיר FALSE כדי למנוע הגדרת את המוקד ברירת המחדל של המערכת. הפקד מקבל את ברירת המחדל קלט המוקד הוא תמיד הפקד הראשון שניתן בתבנית גלוי, לא יהפוך ללא זמין, ויש לו את סגנון WS_TABSTOP. אם אין שליטה כזה קיים, המערכת מגדירה את מוקד הקלט של ברירת המחדל לפקד הראשון בתבנית.

Index