יצירת חלון צאצא

כדי ליצור חלון צאצא MDI, יישום ניתן לבצע קריאה לפונקציה CreateMDIWindow או לשלוח הודעה WM_MDICREATE חלון לקוח MDI. (היישום להשתמש בפונקציה CreateWindowEx בסגנון WS_EX_MDICHILD כדי ליצור חלונות צאצא מסוג MDI.) יישום MDI בעל הליך משנה יחיד להשתמש באחת מהשיטות ליצירת חלון צאצא. הליך משנה יישום MDI הליכי משנה עליך להשתמש בפונקציה CreateMDIWindow או CreateWindowEx כדי ליצור חלון צאצא משנה אחר.

הפרמטר lParam הודעה WM_MDICREATE הוא מצביע הרחוק למבנה MDICREATESTRUCT . המבנה כולל ארבעה בחברי ממדים: x ו- y, אשר מציינות את מיקומי האופקי והאנכי של חלון, ו- cx ו cy, המציינות את היקף האופקי והאנכי של החלון. כל אחד חברים אלה יכולים להיות מוקצים באופן מפורש על-ידי היישום, או יכולה להיות מוגדרת הם CW_USEDEFAULT, מביאה מקרה המערכת לבחירת מיקום, גודל או שניהם, בהתאם לאלגוריתם מדורגים. בכל מקרה, עליך לאתחל את כל בני ארבע. Multipad משתמש CW_USEDEFAULT עבור כל הממדים.

החבר האחרון של מבנה MDICREATESTRUCT הוא החבר סגנון , אשר עשוי להכיל סגנונות סיביות עבור החלון. כדי ליצור חלון צאצא MDI שיכולה להכיל כל שילוב של סגנונות חלון, ציין את סגנון חלון MDIS_ALLCHILDSTYLES. כאשר סגנון זה לא מצוין, חלון צאצא MDI של בעל סגנונות WS_MINIMIZE, WS_MAXIMIZE, WS_HSCROLL, WS_VSCROLL כהגדרות ברירת המחדל.

Multipad יוצר צאצא MDI שלו windows באמצעות הפונקציה AddFile שלה שהוגדרו מקומית (שנמצא בקובץ המקור MPFILE.ג). AddFile הפונקציה מגדיר את הכותרת של חלון צאצא על-ידי הקצאת חבר szTitle של המבנה MDICREATESTRUCT של החלון או את שם הקובץ במצב עריכה או "ללא שם". חבר szClass מוגדר שם מחלקת חלון צאצא MDI רשום בפונקציה InitializeApplication של Multipad. חבר hOwner מוגדר המזהה הייחודי של המופע של היישום.

הדוגמה הבאה מציגה את הפונקציה AddFile Multipad.

&AddFile(pName) HWND APIENTRY CHAR * pName; 
{HWND hwnd; 
    Sz CHAR [160]; 
    MDICREATESTRUCT mcs; 
 
    אם (! pName) {/ / אם הפרמטר pName הוא NULL, לטעון "ללא שם" / / מחרוזת ממשאב STRINGTABLE ולהגדיר את szTitle / / חבר MDICREATESTRUCT. 
 
        LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); 
        mcs.szTitle = sz (LPCTSTR); 
    } אחר / / כותרת החלון עם הנתיב המלא ואת שם הקובץ, / / שהושג על-ידי קריאה לפונקציה OpenFile עם / / דגל OF_PARSE, אשר נקרא לפני AddFile(). 
 
        mcs.szTitle = of.szPathName; 
 
    mcs.szClass = szChild; 
    mcs.hOwner = hInst; 
 
    / / השתמש בגודל ברירת המחדל עבור חלון צאצא. 
 
    mcs.x = mcs.cx = CW_USEDEFAULT; 
    mcs.y = mcs.cy = CW_USEDEFAULT; 
 
    / / לתת את סגנון ברירת המחדל של חלון הצאצא. StyleDefault / / משתנה מוגדר MULTIPAD.Mcs.style c. = styleDefault; 
 
    / / לספר את חלון MDI של הלקוח כדי ליצור את חלון הצאצא. 
 
    hwnd = (HWND) SendMessage (hwndMDIClient, WM_MDICREATE, 0, כח (LPMDICREATESTRUCT) (ארוך); mcs); 
 
    / / אם הקובץ נמצא, לקרוא את תוכנו לתוך הילד / / אזור הלקוח של החלון. 
 
    אם (pName) {if (!LoadFile (hwnd, pName)) {/ / אין אפשרות לטעון את הקובץ; לסגור את החלון. 
 
            SendMessage (hwndMDIClient, WM_MDIDESTROY, hwnd (DWORD), 0 L); 
        }} להחזיר hwnd; 
} 

 

המצביע שהועבר הפרמטר lParam ההודעה WM_MDICREATE שהועבר אל הפונקציה של createwindow ליצירת ומופיע האיבר הראשון במבנה CREATESTRUCT , עבר בהודעה WM_CREATE . ב- Multipad, חלון צאצא מאתחלת עצמה במהלך עיבוד על-ידי אתחול משתני המסמך שלו נתונים מיותרים ועל -ידי יצירת חלון צאצא של פקד עריכה ההודעה WM_CREATE.

Index