Share via


Ingesloten Windows gebruiken

ATL implementeert ingesloten vensters met CContainedWindowT. Een ingesloten venster vertegenwoordigt een venster dat de berichten delegeert aan een containerobject in plaats van ze in een eigen klasse te verwerken.

Opmerking

U hoeft geen klasse af te leiden van CContainedWindowT om bevatte vensters te kunnen gebruiken.

Met ingesloten vensters kunt u een bestaande Windows-klasse als superklasse gebruiken of een bestaand venster als subklasse definiëren. Als u een venster wilt maken waarin een bestaande Windows-klasse wordt ingedeeld, geeft u eerst de bestaande klassenaam op in de constructor voor het CContainedWindowT object. Roep vervolgens CContainedWindowT::Createaan. Als u een bestaand venster wilt subklassen, hoeft u geen Windows-klassenaam op te geven (geef NULL door aan de constructor). Roep de CContainedWindowT::SubclassWindow methode aan met de verwijzing naar het venster dat wordt gesubklasseerd.

Doorgaans gebruikt u ingesloten vensters als gegevensleden van een containerklasse. De container hoeft geen venster te zijn. het moet echter zijn afgeleid van CMessageMap.

Een zelfstandig venster kan alternatieve berichtenmappings gebruiken om zijn berichten te verwerken. Als u meer dan één ingesloten venster hebt, moet u meerdere alternatieve boodschapkaarten declareren, elk overeenkomend met een afzonderlijk ingesloten venster.

Voorbeeld

Hieronder volgt een voorbeeld van een containerklasse met twee vensters:

class CMyContainer : public CMessageMap
{
public:
   CContainedWindow m_wndEdit;
   CContainedWindow m_wndList;

   CMyContainer() : m_wndEdit(_T("Edit"), this, 1), 
                    m_wndList(_T("List"), this, 2)
   {
   }

   BEGIN_MSG_MAP(CMyContainer)
   ALT_MSG_MAP(1)
      // handlers for the Edit window go here
   ALT_MSG_MAP(2)
      // handlers for the List window go here
   END_MSG_MAP()

};

Zie het voorbeeld SUBEDIT voor meer informatie over ingesloten vensters.

Zie ook

vensterklassen