Freigeben über


Verwenden von enthaltenen Fenstern

Hinweis

Die aktive Vorlagenbibliothek (ACTIVE Template Library, ATL) wird weiterhin unterstützt. Wir fügen jedoch keine Features mehr hinzu oder aktualisieren die Dokumentation.

ATL implementiert enthaltene Fenster mit CContainedWindowT. Ein enthaltenes Fenster stellt ein Fenster dar, das seine Nachrichten an ein Containerobjekt delegiert, anstatt sie in einer eigenen Klasse zu behandeln.

Hinweis

Sie müssen keine Klasse von CContainedWindowT ableiten, um enthaltene Fenster verwenden zu können.

Mit enthaltenen Fenstern können Sie entweder eine vorhandene Windows-Klasse erweitern oder eine vorhandene Fensterklasse unterklassen. Um ein Fenster zu erstellen, das eine vorhandene Windows-Klasse überklassiert, geben Sie zuerst den vorhandenen Klassennamen im Konstruktor für das CContainedWindowT Objekt an. Rufen Sie dann CContainedWindowT::Create auf. Zum Unterklassen eines vorhandenen Fensters müssen Sie keinen Windows-Klassennamen angeben (übergeben SIE NULL an den Konstruktor). Rufen Sie einfach die CContainedWindowT::SubclassWindow Methode mit dem Handle für das Fenster auf, das unterklassiert wird.

Normalerweise verwendet man eingebettete Fenster als Datenelemente einer Containerklasse. Der Container muss kein Fenster sein; Sie muss jedoch von CMessageMap abgeleitet werden.

Ein enthaltenes Fenster kann alternative Nachrichtenzuordnungen verwenden, um seine Nachrichten zu verarbeiten. Wenn Sie mehrere enthaltene Fenster haben, sollten Sie mehrere alternative Nachrichtenzuordnungen deklarieren, die jeweils einem separaten enthaltenen Fenster entsprechen.

Beispiel

Nachfolgend sehen Sie ein Beispiel für eine Containerklasse mit zwei enthaltenen Fenstern:

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

};

Weitere Informationen zu enthaltenen Fenstern finden Sie im SUBEDIT-Beispiel .

Siehe auch

Fensterklassen