CreŽren van Frame en kind Windows

Na het registreren van zijn venster klassen, kunt een MDI-toepassing maken zijn windows. Het wordt eerst, haar kadervenster gemaakt met behulp van de functie CreateWindow of CreateWindowEx . Na het maken van haar framevenster, maakt de toepassing zijn clientvenster, opnieuw met behulp van CreateWindow of CreateWindowEx. De toepassing moet MDICLIENT opgeven als naam van de klasse van het clientvenster; MDICLIENT is een gepreregistreerde venster klasse die is gedefinieerd door het systeem. De parameter lpvParam van CreateWindow of CreateWindowEx moet verwijzen naar een structuur van CLIENTCREATESTRUCT . Deze structuur bevat de leden die zijn beschreven in de volgende tabel:

Lid Beschrijving
hWindowMenu Ingang naar het menu venster voor het beheersen van MDI kind windows gebruikt. Als kind windows zijn gemaakt, wordt de toepassing hun titels naar het venster -menu toegevoegd als menu-items. De gebruiker kan vervolgens een onderliggend venster activeren door te klikken op de titel in het menu venster.
idFirstChild Hiermee geeft u de id van het eerste onderliggende MDI-venster. De eerste MDI-subvenster gemaakt is deze id toegewezen. Extra vensters worden met opgehoogde venster-id's gemaakt. Wanneer een onderliggend venster is vernietigd, het systeem onmiddellijk wordt toegewezen de venster-id te houden hun bereik aaneengesloten.

Wanneer een onderliggend venster de titel wordt toegevoegd aan het menu venster , wordt het systeem een id toegewezen aan het onderliggende venster. Wanneer de gebruiker op een onderliggend venster de titel, ontvangt het framevenster een WM_COMMAND -bericht met de identifier in de wParam -parameter. U moet een waarde opgeven voor de idFirstChild -lid dat niet in strijd is met een menu-item-id in van het framevenster menu.

Het clientvenster MDI maakt multipad van frame venster procedure tijdens het verwerken van het WM_CREATE bericht. Het volgende voorbeeld ziet u hoe het clientvenster is gemaakt.

case WM_CRE&ATE: {CLIENTCREATESTRUCT ccs; 
 
        / / De ingang voor het venster-menu ophalen en toewijzen de / / eerste kind venster-id. 
 
        CCS.hWindowMenu = GetSubMenu(GetMenu(hwnd), WINDOWMENU); 
        CCS.idFirstChild = IDM_WINDOWCHILD; 
 
        / / Create het clientvenster MDI. 
 
        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); 
    } pauze 
 

Titels van onderliggende vensters worden toegevoegd aan de onderkant van het menu venster . Als de toepassing wordt tekenreeksen toegevoegd aan het menu venster met de AppendMenu functie, kunnen deze tekenreeksen worden overschreven door de titels van de onderliggende vensters wanneer het venster -menu is vernieuwd (wanneer een onderliggend venster wordt gemaakt of vernietigd). Een MDI-toepassing die tekenreeksen wordt toegevoegd aan het menu venster moet de functie InsertMenu gebruiken en controleren dat de titels van onderliggende vensters hebben niet deze nieuwe tekenreeksen worden overschreven.

De WS_CLIPCHILDREN stijl kunt maken van het MDI clientvenster om te voorkomen dat het venster schilderij over haar kind windows.

Index