Etter registrere sin vindusklasser, kan et MDI-program lage sin windows. Først, det skaper et rammevindu ved hjelp av funksjonen for CreateWindow - eller CreateWindowEx . Når du har opprettet et rammevindu, oppretter programmet et klient-vindu, på nytt ved hjelp av CreateWindow eller CreateWindowEx. Programmet bør angi MDICLIENT som klientvinduets klassenavnet; MDICLIENT er en preregistered vindusklasse som er definert av systemet. LpvParam -parameteren for CreateWindow eller CreateWindowEx skal peke til en CLIENTCREATESTRUCT struktur. Denne strukturen inneholder medlemmer som er beskrevet i følgende tabell:
| Medlem | Beskrivelse |
|---|---|
| hWindowMenu | Håndtere på vindu -menyen brukes til å kontrollere underordnede MDI-Vinduer. Som barn windows opprettes, legger programmet til deres titler på vindu -menyen som menyelementer. Brukeren kan deretter aktivere et underordnet vindu ved å klikke tittelen på vindu -menyen. |
| idFirstChild | Angir identifikatoren til det første underordnet MDI-vinduet. Første underordnet MDI-vindu opprettet er tilordnet denne identifikatoren. Tilleggsvinduer opprettes med stigende vinduet identifikatorer. Når et underordnet vindu er ødelagt, tilordner systemet umiddelbart nytt vindu-identifikatorer for å holde deres rekkevidde sammenhengende. |
Når et underordnet vindu Tittel legges til vindu -menyen, tilordner systemet en identifikator til det underordnede vinduet. Når brukeren klikker et underordnet vindu tittel, mottar en WM_COMMAND melding med identifikatoren i parameteren wParam i vinduet ramme. Du bør angi en verdi for idFirstChild -medlem som ikke er i konflikt med menyelementet identifikatorer i vinduet ramme-menyen.
Multipads ramme vindusprosedyre oppretter vinduet for MDI-klienten under behandling av WM_CREATE -melding. Eksemplet nedenfor viser hvordan vinduet klient er opprettet.
case WM_CRE&ATE: {CLIENTCREATESTRUCT ccs;
/ / Hente håndtaket på Vindu-menyen, og tilordne den / / first underordnede vinduet identifikator.
CCS.hWindowMenu = GetSubMenu(GetMenu(hwnd), WINDOWMENU);
CCS.idFirstChild = IDM_WINDOWCHILD;
/ / Opprett vinduet for MDI-klienten.
hwndMDIClient = CreateWindow ("MDICLIENT", (LPCTSTR) NULL, WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL, 0, 0, 0, 0, hwnd, (HMENU) 0xCAC, hInst, (LPSTR) amp; ccs);
ShowWindow (hwndMDIClient, SW_SHOW);
} break
Titler av underordnede vinduer legges til nederst på vindu -menyen. Hvis applikasjonen legger til strenger i vindu -menyen ved hjelp av AppendMenu -funksjonen, kan disse strengene overskrives av titler av underordnede vinduer når vindusmenyen oppdateres (når et underordnet vindu opprettes eller ødelagt). Et MDI-program som legger til strenger i sin vindusmenyen bør bruke InsertMenu -funksjonen og bekrefte at titlene av underordnede vinduer ikke har overskrives disse nye strenger.
Bruk stilen WS_CLIPCHILDREN til å opprette vinduet for MDI-klienten du vil hindre at vinduet maleri over dens underordnede vinduer.