Dela via


Använda inneslutna Windows

ATL implementerar inneslutna fönster med CContainedWindowT. Ett inneslutet fönster representerar ett fönster som delegerar sina meddelanden till ett containerobjekt i stället för att hantera dem i sin egen klass.

Anmärkning

Du behöver inte härleda en klass från CContainedWindowT för att kunna använda inneslutna fönster.

Med inneslutna fönster kan du antingen superklassa en befintlig Windows-klass eller underklassa ett befintligt fönster. Om du vill skapa ett fönster som superklassar en befintlig Windows-klass anger du först det befintliga klassnamnet i konstruktorn för CContainedWindowT objektet. Anropa sedan CContainedWindowT::Create. Om du vill underklassa ett befintligt fönster behöver du inte ange ett Windows-klassnamn (skicka NULL till konstruktorn). Anropa helt enkelt CContainedWindowT::SubclassWindow-metoden med referensen till fönstret som underklassas.

Du använder vanligtvis inneslutna fönster som datamedlemmar i en containerklass. Containern behöver inte vara ett fönster. Den måste dock härledas från CMessageMap.

Ett inneslutet fönster kan använda alternativa meddelandekartor för att hantera dess meddelanden. Om du har fler än ett inneslutet fönster bör du deklarera flera alternativa meddelandekartor som var och en motsvarar ett separat inneslutet fönster.

Exempel

Följande är ett exempel på en containerklass med två inneslutna fönster:

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()

};

Mer information om inneslutna fönster finns i subEDIT-exemplet .

Se även

fönsterklasser