Utilisation de la relation contenant-contenu Windows
ATL implémente des fenêtres autonomes avec CContainedWindowT. Une fenêtre autonome 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 CContainedWindowT
dériver une classe pour utiliser des fenêtres autonomes.
Avec des fenêtres autonomes, vous pouvez superclasser une classe Windows existante ou une sous-classe d’une fenêtre existante. Pour créer une fenêtre qui superclasse une classe Windows existante, spécifiez d’abord le nom de classe existant dans le constructeur de l’objet CContainedWindowT
. Appelez CContainedWindowT::Create
ensuite . Pour sous-classer une fenêtre existante, vous n’avez pas besoin de spécifier un nom de classe Windows (passez NULL au constructeur). Il vous suffit d’appeler la CContainedWindowT::SubclassWindow
méthode avec le handle pour la fenêtre en cours de sous-classe.
Vous utilisez généralement des fenêtres autonomes en tant que membres de données 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 autonome peut utiliser d’autres mappages de messages pour gérer ses messages. Si vous avez plusieurs fenêtres autonomes, vous devez déclarer plusieurs mappages de messages de remplacement, chacun correspondant à une fenêtre autonome distincte.
Exemple
Voici un exemple de classe de conteneur avec deux fenêtres autonomes :
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 autonomes, consultez l’exemple SUBEDIT .