Vorlage ≪ -KlasseTBase= CWindow, KlasseTWinTraits = &Gt CControlWinTraits;
CContainedWindow-Klasse: öffentliche TBase
Parameter
TBase
Die Basisklasse der neuen Klasse. Die Standard-Basisklasse ist von CWindow.
TWinTraits
Eine Eigenschaften-Klasse, die Stile für das Fenster definiert. Der Standardwert ist CControlWinTraits.
Hinweis &Nbsp; CContainedWindow ist eine Spezialisierung von CContainedWindow. Wenn Sie die Basisklasse oder Eigenschaften ändern möchten, verwenden Sie CContainedWindow direkt.
CContainedWindow implementiert ein Fenster in ein anderes Objekt enthalten sind. CContainedWindowFensterprozedur verwendet eine Meldungszuordnung in dem Objekt, um Nachrichten an die entsprechenden Handler zu leiten. Wenn Sie ein CContainedWindow -Objekt zu erstellen, geben Sie die Meldungszuordnung verwendet werden soll.
CContainedWindow ermöglicht Ihnen, ein neues Fenster erstellen von übergeordneten Klassen einer vorhandenen Fensterklasse erstellen. Die Create -Methode registriert zuerst eine Fensterklasse, die basiert auf einer vorhandenen Klasse aber CContainedWindow:: WindowProcverwendet. Create erstellt dann ein Fenster basierend auf dieser neuen Fensterklasse. Jede Instanz von CContainedWindow können Oberklasse ein anderes Fenster-Klasse.
CContainedWindow unterstützt auch das Erstellen von Unterklassen Fenster. Die SubclassWindow -Methode fügt ein vorhandenes Fenster an das CContainedWindow -Objekt und die Fensterprozedur CContainedWindow:: WindowProcändert. Jede Instanz von CContainedWindow können eine Unterklasse ein anderes Fenster.
Hinweis&Nbsp; Rufen Sie für jedes angegebene CContainedWindow -Objekt entweder Erstellen oder SubclassWindow. Sie sollten nicht beide Methoden für das Objekt aufrufen.
Wenn Sie die Option Hinzufügen Steuerelement basierend auf in den Assistenten für ATL-Objekte verwenden, wird der Assistent die Klasse zur Implementierung des Steuerelements automatisch ein Datenelement CContainedWindow hinzufügen. Das folgende Beispiel stammt aus der SUBEDIT -Beispiel und zeigt, wie das darin enthaltenen Fenster deklariert ist,
class CAtlEdit : ...
{
public:
// Declare a contained window data member
CContainedWindow m_EditCtrl;
// Initialize the contained window:
// 1. Pass "EDIT" to specify that the contained
// window should be based on the standard
// Windows Edit box
// 2. Pass 'this' pointer to specify that CAtlEdit
// contains the message map to be used for the
// contained window's message processing
// 3. Pass the identifier of the message map. '1'
// identifies the alternate message map declared
// with ALT_MSG_MAP(1)
CAtlEdit() : m_EditCtrl(_T("EDIT"), this, 1)
{
m_bWindowOnly = TRUE;
}
// Declare the default message map,
// identified by '0'
BEGIN_MSG_MAP(CAtlEdit)
...
MESSAGE_HANDLER(WM_CREATE, OnCreate)
...
// Declare an alternate message map,
// identified by '1'
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_CHAR, OnChar)
END_MSG_MAP()
// Define OnCreate handler
// When the containing window receives a WM_CREATE
// message, create the contained window by calling
// CContainedWindow::Create
LRESULT OnCreate(UINT uMsg, WPARAM wParam,
LPARAM lParam, BOOL& bHandled)
{
...
m_EditCtrl.Create(m_hWnd, rc, _T("hello"),
WS_CHILD | WS_VISIBLE |
ES_MULTILINE | ES_AUTOVSCROLL);
return 0;
}
...
};
| Weitere Informationen | Siehe |
| Erstellen von Steuerelementen | ATL-Lernprogramm |
| Mithilfe von Windows in ATL | ATL-Fensterklassen |
| Assistent für ATL-Objekte | Erstellen eines ATL-Projekts |
| Windows | Nachfolgende Themen im Platform SDK und Windows |
| Bilden von Unterklassen | Window-Prozedur Erstellen von Unterklassen in der Plattform SDK |
| Erstellen von übergeordneten Klassen | Window-Prozedur Erstellen von übergeordneten Klassen in der Plattform SDK |
# include lt;atlwin.h>
Siehe auch
Von CWindow, CWindowImpl, CMessageMap, BEGIN_MSG_MAP, ALT_MSG_MAP