Erstellen von Rahmen und untergeordnete Fenster

Nach der Registrierung ihrer Fensterklassen kann eine MDI-Anwendung ihre Fenster erstellen. Erstens erstellt es das Rahmenfenster, indem Sie die CreateWindow oder CreateWindowEx -Funktion. Nach der Erstellung des Rahmenfensters, erstellt die Anwendung ihrer Client-Fenster wieder mithilfe von CreateWindow oder CreateWindowEx. Die Anwendung sollte MDICLIENT wie das Clientfenster Klassenname angeben; MDICLIENT ist eine vorab Fensterklasse, die vom System definiert. Der LpvParam -Parameter CreateWindow oder CreateWindowEx sollte auf eine CLIENTCREATESTRUCT -Struktur verweisen. Diese Struktur enthält die Member, die in der folgenden Tabelle beschriebenen:

Mitglied Beschreibung
hWindowMenu Behandeln Sie, um das Fenstermenü für die Steuerung von untergeordneten MDI-Fenster verwendet . Wenn untergeordnete Fenster erstellt werden, fügt die Anwendung ihre Titel zum Menü Fenster als Menüelemente. Der Benutzer kann dann ein untergeordnetes Fenster aktivieren, indem Sie den Titel im Menü Fenster.
idFirstChild Gibt den Bezeichner der die erste untergeordnete MDI-Fenster. Das erste untergeordnete MDI-Fenster erstellt, wird diese Kennung zugewiesen. Zusätzliche Fenster sind mit inkrementierten Fenster-IDs erstellt. Weist ein untergeordnetes Fenster zerstört ist, neu das System sofort die Fenster-IDs, ihre Reichweite zusammenhängend zu halten.

Wenn ein untergeordnetes Fenster Titel das Fenstermenü hinzugefügt wird, weist das System einen Bezeichner an das untergeordnete Fenster. Klickt der Benutzer ein untergeordnetes Fenster Titel, erhält das Frame-Fenster eine WM_COMMAND -Meldung mit dem Bezeichner in den wParam -Parameter. Sie sollten einen Wert für den IdFirstChild -Member angeben, die nicht im Widerspruch Menü-Element-IDs in das Frame-Fenster im Menü.

MULTIPAD Frame Fenster Verfahren wird während der Verarbeitung der Nachricht WM_CREATE das MDI-Client-Fenster erstellt. Das folgende Beispiel zeigt, wie das Clientfenster erstellt wird.

fall WM_CRE&ATE: {CLIENTCREATESTRUCT ccs; 
 
        / / Rufen Sie das Handle für das Fenstermenü und weisen den / / erste untergeordnete Fenster Bezeichner. 
 
        CCS.hWindowMenu = GetSubMenu(GetMenu(hwnd), WINDOWMENU); 
        CCS.idFirstChild = IDM_WINDOWCHILD; 
 
        / / Das MDI-Client-Fenster zu erstellen. 
 
        HwndMDIClient = CreateWindow ("MDICLIENT", (LPCTSTR) NULL, WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL, 0, 0, 0, 0, Hwnd, 0xCAC, hInst, (LPSTR) Amp; (HMENU) ccs); 
 
        ShowWindow (HwndMDIClient, SW_SHOW); 
    } Bruch 

 

Titel der untergeordneten Fenster werden unten im Menü Fenster hinzugefügt. Wenn die Anwendung mithilfe der Funktion AppendMenu Zeichenfolgen zum Menü Fenster hinzufügt, können diese Zeichenfolgen durch die Titel der untergeordneten Fenster überschrieben, wenn das Fenster -Menü neu gezeichnet ist, (wenn ein untergeordnetes Fenster erstellt oder zerstört wird). Eine MDI-Anwendung, die Zeichenfolgen, die im Menü Fenster fügt sollte die InsertMenu -Funktion verwenden, und stellen Sie sicher, dass die Titel der untergeordneten Fenster nicht diese neuen Zeichenfolgen überschrieben haben.

Verwenden Sie das WS_CLIPCHILDREN-Format das MDI-Client-Fenster Fenster verhindern, Malerei über seiner untergeordneten Fenster zu erstellen.

Index