À l'aide de les fenêtres contenues
Les outils ATL contenaient des fenêtres à CContainedWindowT.Une fenêtre contenue représente une fenêtre qui délègue ses messages à un objet conteneur au lieu de les gérer dans sa propre classe.
[!REMARQUE]
Vous n'avez pas besoin de dériver une classe d' CContainedWindowT pour utiliser les fenêtres contenues.
Avec les fenêtres contenues, vous pouvez surclassement les fenêtres existantes classe ou sous-classe une fenêtre existante.Pour créer une fenêtre que les surclasse les fenêtres existantes fichier, spécifier d'abord le nom de classe existant dans le constructeur de l'objet d' CContainedWindowT .Appelez ensuite CContainedWindowT::Create.Sous-classer une fenêtre existante, vous n'avez pas besoin de spécifier un nom de classe de fenêtre (exécution NULL au constructeur).Appelez simplement la méthode d' CContainedWindowT::SubclassWindow avec le handle à la fenêtre est sous-classée.
Vous utilisez généralement des fenêtres contenues comme données membres d'une classe de conteneur.Le conteneur n'a pas besoin d'être une fenêtre ; toutefois, il doit dériver de CMessageMap.
Une fenêtre contenue peut utiliser des tables des messages secondaires pour gérer ses messages.Si vous avez plusieurs fenêtre contenue, vous devez déclarer plusieurs tables des messages secondaires, chacune correspondant à une fenêtre contenue distincte.
Exemple
Voici un exemple d'une classe de conteneur avec deux fenêtres contenues :
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()
};
Pour plus d'informations sur les fenêtres contenues, consultez l'exemple de SUBEDIT .