עיצוב פרוצדורה של חלון

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

(התקשרות חזרה MainWndProc LRESULT
    HWND hwnd, / / לטפל לחלון
    UINT uMsg, / / הודעת מזהה
    WPARAM wParam, / / תחילה הודעה פרמטר
    LPARAM lParam) / / שניה פרמטר הודעה
{מתג (uMsg) {מקרה WM_CREATE: / / לאתחל את החלון. 
            החזר 0; 
 
        מקרה WM_PAINT: / / לצייר אזור הלקוח של החלון. 
            החזר 0; 
 
        מקרה WM_SIZE: / / בחר את הגודל והמיקום של החלון. 
            החזר 0; 
 
        מקרה WM_DESTROY: / / לנקות נתונים ספציפית חלון אובייקטים. 
            החזר 0; 
 
        / / / / לעבד הודעות אחרות. 
        / / ברירת מחדל: להחזיר DefWindowProc (hwnd, uMsg, wParam, lParam); 
    } להחזיר 0; 
} 

 

Messageis WM_NCCREATE נשלח רק לאחר יצירת חלון שלך, אך אם יישום יגיב להודעה זו על-ידי החזרת FALSE, CreateWindowEx הפונקציה נכשל. הודעת WM_CREATE נשלחת לאחר שכבר נוצר חלון שלך.

ההודעה WM_DESTROY נשלח כאשר החלון שלך עומד להשמיד. הפונקציה DestroyWindow מטפל השמדה של כל חלונות צאצאים של חלון השמדתה. לשלוח את ההודעה WM_NCDESTROY ממש לפני חלון מושמד.

לכל הפחות, שגרה חלון יש לעבד WM_PAINT הודעה כדי לצייר את עצמו. בדרך כלל, עליך לטפל גם הודעות העכבר ולוח המקשים. התייעץ עם התיאורים של הודעות בודדות כדי לקבוע אם שגרת החלון שלך לטפל בהן.

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

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

Index