Tworzenie ramek i okien podrzędnych

Po zarejestrowaniu jego klasy okien aplikacji MDI można utworzyć jej systemu windows. Po pierwsze tworzy on jej okno ramek za pomocą funkcji CreateWindow lub funkcji CreateWindowEx . Po utworzeniu jego okno ramek, aplikacja tworzy swoje okna klienta ponownie za pomocą właściwości CreateWindow lub funkcji CreateWindowEx. Wniosek należy określić MDICLIENT jako nazwę klasy okna klienta; MDICLIENT jest klasą preregistered okno zdefiniowanych przez system. Parametr lpvParam właściwości CreateWindow lub funkcji CreateWindowEx powinien wskazywać na strukturę CLIENTCREATESTRUCT . Ta struktura zawiera składniki opisane w poniższej tabeli:

Członkowskie Opis
hWindowMenu Dojście do menu okno , używany do sterowania okien podrzędnych MDI. Jak okien podrzędnych są tworzone, aplikacja dodaje ich tytułów do menu okno jako elementy menu. Użytkownik może następnie uaktywnić okna podrzędnego klikając jej tytuł w menu okno.
idFirstChild Określa identyfikator pierwszego okno potomne MDI. Pierwsze okno potomne MDI tworzone jest przypisany ten identyfikator. Dodatkowych okien są tworzone z identyfikatorami przyrostowo okna. Kiedy niszczony jest okno potomne, systemu natychmiast ponownie przypisuje identyfikatory okno, aby zachować ich zakres ciągłe.

Gdy tytuł okna dziecko jest dodawane do menu okno , system przypisze identyfikator aby oknie dziecka. Gdy użytkownik kliknie tytuł okna dziecka, okno ramek odbiera wiadomość WM_COMMAND z identyfikatorem w parametrze wParam . Należy określić wartość dla tego członka idFirstChild , która nie powoduje konfliktu z identyfikatorami element menu w menu Okno ramki.

Multipad w ramce okna procedura tworzy okna klienta MDI podczas przetwarzania komunikatu WM_CREATE . W poniższym przykładzie pokazano, jak utworzyć okna klienta.

sprawa WM_CRE&ATE: {CLIENTCREATESTRUCT ccs; 
 
        / / Pobrać dojścia do menu Okno i przypisać / / pierwsze dziecko okno identyfikator. 
 
        CCS.hWindowMenu = GetSubMenu(GetMenu(hwnd), WINDOWMENU); 
        CCS.idFirstChild = IDM_WINDOWCHILD; 
 
        / / Create okna klienta MDI. 
 
        hwndMDIClient = CreateWindow ("MDICLIENT", (LPCTSTR) wartość NULL, WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL, 0, 0, 0, 0, hwnd, (HMENU) 0xCAC, hInst, (LPSTR) amp; ccs); 
 
        ShowWindow (hwndMDIClient, SW_SHOW); 
    } podział 

 

Tytuły okien podrzędnych są dodawane w dolnej części menu okno . Jeśli aplikacja dodaje ciągi do menu okno za pomocą funkcji AppendMenu zawsze zwraca , tych ciągów mogą zostać zastąpione przez tytuły okien podrzędnych, gdy menu okno jest odowieżany (w każdym przypadku okna podrzędnego jest utworzenie lub zniszczenie). Aplikacja MDI, która dodaje ciągi do jego menu okno powinny użyć funkcji InsertMenu i zweryfikuj, że tytuły okien podrzędnych nie zostały zastąpione tych nowych ciągów.

Umożliwia tworzenie okna klienta MDI, aby zapobiec okna malowanie nad jej okien podrzędnych styl WS_CLIPCHILDREN.

Index