Creazione di Frame e finestre figlio

Dopo aver registrato le sue classi di finestre, un'applicazione MDI pu creare il suo windows. In primo luogo, esso crea la finestra cornice utilizzando la funzione CreateWindow o CreateWindowEx . Dopo aver creato la sua finestra cornice, l'applicazione crea la finestra del client, ancora una volta utilizzando CreateWindow o CreateWindowEx. L'applicazione deve specificare MDICLIENT come nome della classe della finestra cliente; MDICLIENT una classe di finestra preregistrata definita dal sistema. Il parametro lpvParam di CreateWindow o CreateWindowEx deve puntare a una struttura CLIENTCREATESTRUCT . Questa struttura contiene i membri descritti nella tabella seguente:

Membri Descrizione
hWindowMenu Gestire al menu finestra utilizzato per il controllo di finestre figlio MDI. Come finestre figlio vengono creati, l'applicazione aggiunge i loro titoli al menu finestra come voci di menu. L'utente pu quindi attivare una finestra figlio cliccando il titolo dal menu finestra.
idFirstChild Specifica l'identificatore della prima finestra figlia MDI. La prima finestra figlio MDI creata viene assegnata questo identificatore. Finestre aggiuntive sono creati con identificatori di finestra incrementato. Quando una finestra figlio viene distrutto, il sistema riassegna immediatamente gli identificatori di finestra per mantenere la loro gamma contigue.

Quando il titolo di una finestra figlio viene aggiunto al menu finestra , il sistema assegna un identificatore per la finestra secondaria. Quando l'utente fa clic sul titolo di una finestra figlia, la finestra cornice riceve un messaggio WM_COMMAND con l'identificatore nel parametro wParam . necessario specificare un valore per il membro di idFirstChild che non sia in conflitto con gli identificatori di voci di menu nel menu della finestra con frame.

La routine della finestra cornice di MULTIPAD crea la finestra MDI client durante l'elaborazione del messaggio WM_CREATE . L'esempio seguente mostra come viene creata la finestra del client.

caso WM_CRE&ATE: {ccs CLIENTCREATESTRUCT; 
 
        / / Recuperare l'handle per il menu della finestra e assegnare il / / prima identificatore finestra figlio. 
 
        CCS.hWindowMenu = GetSubMenu(GetMenu(hwnd), WINDOWMENU); 
        CCS.idFirstChild = IDM_WINDOWCHILD; 
 
        / / Crea la finestra MDI del client. 
 
        hwndMDIClient = CreateWindow ("MDICLIENT", (LPCTSTR) NULL, WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL, 0, 0, 0, 0, hwnd, (HMENU) 0xCAC, hInst, amp (LPSTR); ccs); 
 
        ShowWindow (hwndMDIClient, SW_SHOW); 
    } pausa 
 

Titoli di finestre figlio vengono aggiunte alla parte inferiore del menu finestra . Se l'applicazione aggiungere stringhe di menu finestra utilizzando la funzione AppendMenu , queste stringhe possono essere sovrascritto i titoli delle finestre figlio quando dal menu finestra ridipinta (ogni volta che una finestra figlio viene creata o distrutto). Un'applicazione MDI che aggiunge stringhe al suo menu finestra dovrebbe utilizzare la funzione InsertMenu e verificare che i titoli di finestre figlio non siano sovrascritti queste nuove stringhe.

Utilizzare lo stile WS_CLIPCHILDREN per creare la finestra MDI client per impedire la finestra dipinto sopra le finestre figlio.

Rimedio: Inserire il CD-ROM CD di MSDN Library.

Index