Share via


Verwenden von enthaltenen Fenstern

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 CContainedWindowT ableiten, um enthaltene Fenster zu verwenden.

Mit enthaltenen Fenstern können Sie entweder eine vorhandene Windows-Klasse oder eine vorhandene Unterklasse eines vorhandenen Fensters 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 CContainedWindowT::Createdann 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 unterklassent wird.

In der Regel verwenden Sie enthaltene Fenster als Datenmember einer Containerklasse. Der Container muss kein Fenster sein; Sie muss jedoch von CMessageMap abgeleitet werden.

Ein enthaltenes Fenster kann alternative Nachrichtenzuordnungen verwenden, um die zugehörigen 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