Using Contained Windows
ATL-Werkzeuge enthielten Fenster mit CContainedWindowT. Ein enthaltendes Fenster stellt ein Fenster dar, das seine Meldungen in ein Containerobjekt, delegiert, anstatt sie in einer eigenen Klasse zu behandeln.
Hinweis
Sie müssen nicht, um eine Klasse von CContainedWindowT zu berechnen, um enthaltende Fenster zu verwenden.
Mit enthaltenden Fenstern können Sie jede übergeordnete Klasse eine vorhandene Windows-Klasse oder ein vorhandenes Fenster unterzuordnen. So fügen Sie ein Fenster erstellen, das übergeordnete Klasse eine vorhandene Windows-Klasse, zuerst den vorhandenen Klassennamen im Konstruktor für das Objekt CContainedWindowT angeben. Anschließend Aufruf CContainedWindowT::Create. Um ein vorhandenes Fenster unterzuordnen, müssen Sie nicht um einen Windows-Klassennamen (an den Konstruktor übergeben NULL anzugeben). Rufen Sie einfach die CContainedWindowT::SubclassWindow-Methode mit dem Handle für das Fenster auf, das als Unterklasse definiert ist.
Sie verwenden in der Regel enthaltende Fenster als Datenmember einer Containerklasse. Der Container muss nicht, um ein Fenster befinden, muss jedoch von CMessageMap berechnen.
Ein enthaltendes Fenster kann alternative Meldungszuordnungen verwenden, um die Nachrichten zu bearbeiten. Wenn Sie mehr als ein Containerelement Fenster haben, sollten Sie einige alternative Meldungszuordnungen, jede deklarieren entsprechend einem separaten enthaltenen Fenster.
Beispiel
Das folgende Beispiel zeigt eine Containerklasse mit zwei enthaltenden 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 enthaltende Fenster, finden Sie im STELLEN Sie auf Beispiel.