Å opprette til rammen og underordnede vinduer

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.

Index