ATL implémente les fenêtres contenues avec CContainedWindow. Une fenêtre contenue représente une fenêtre qui délègue ses messages d'un objet conteneur au lieu de manipuler dans sa propre classe.
&Notenbsp ; Vous n'avez pas besoin de dériver une classe de type CContainedWindow afin d'utiliser les fenêtres contenues.
Avec fenêtres contenues, vous pouvez soit superclasse une classe Windows existante ou la sous-classe une fenêtre existante. Pour créer une fenêtre qui surclasse un Windows existant classe, tout d'abord spécifier le nom de classe existant dans le constructeur de l'objet de type CContainedWindow . Puis appelle CContainedWindow::Create. Sous-classer une fenêtre existante, il est inutile de spécifier un nom de classe Windows (passe NULL pour le constructeur). Simplement appeler la méthode CContainedWindow::SubclassWindow avec le handle de la fenêtre est sous-classée.
Vous utilisez généralement fenêtres contenues dans les données membres d'une classe de conteneur. Le conteneur n'a pas besoin d'être une fenêtre ; Cependant, il doit dériver de CMessageMap.
Une fenêtre contenue peut utiliser des cartes message remplaçant pour traiter ses messages. Si vous avez plus d'une fenêtre de contenu, vous devez déclarer que plusieurs de rechange message cartes, chacune correspondant à une fenêtre distincte du contenu.
Voici un exemple d'une classe de conteneur avec deux fenêtres contenues:
class CMyContainer : public CMessageMap,...
{
public :
nbsp ; CContainedWindow m_wndEdit ;
CContainedWindow m_wndList ;
CMyContainer() : m_wndEdit ("Edit", ce, 1), m_wndList (« Liste », ce, 2).
{
}
...
BEGI&N_MSG_MAP(CMyContainer)
ALT_MSG_MAP(1)
/ / gestionnaires pour la fenêtre d'édition cliquez ici
ALT_MSG_MAP(2)
/ / gestionnaires d'événements dans la fenêtre Liste aller ici
END_MSG_MAP()
}
Pour plus d'informations sur les fenêtres contenues, voir le exemple SUBEDIT . Pour plus d'informations sur le surclassement et le sous-classement, voir Fenêtre procédure surclassement et Fenêtre procédure sous-classement du SDK Win32.