CContainedWindow

modè&le lt, classeTBase= CWindow, classeTWinTraits = &Gt CControlWinTraits ;
Class CContainedWindowT : public TBase

Paramètres

TBase

La classe de base de votre nouvelle classe. La classe de base par défaut est CWindow.

TWinTraits

Une classe de caractères qui définit les styles pour votre fenêtre. La valeur par défaut est CControlWinTraits.

&Note nbsp ; CContainedWindow est une spécialisation de CContainedWindowT. Si vous voulez changer la classe de base ou de caractères, utilisez directement CContainedWindowT.

CContainedWindow implémente une fenêtre contenue dans un autre objet. Procédure de fenêtre de type CContainedWindowutilise une carte message dans l'objet conteneur pour diriger les messages pour les gestionnaires d'événements appropriés. Lors de la construction d'un objet de type CContainedWindow , vous spécifiez quelle carte message devrait être utilisée.

CContainedWindow vous permet de créer une nouvelle fenêtre par surclassement d'une classe de fenêtre existante. La méthode Create enregistre tout d'abord une classe de fenêtre qui est basée sur une classe existante mais utilise CContainedWindow::WindowProc. Create crée ensuite une fenêtre basée sur cette nouvelle classe de fenêtre. Chaque instance de type CContainedWindow peut superclasse une classe de fenêtre différentes.

CContainedWindow prend également en charge le sous-classement de fenêtre. La méthode SubclassWindow attache une fenêtre existante à l'objet de type CContainedWindow et modifie la procédure de fenêtre à CContainedWindow::WindowProc. Chaque instance de type CContainedWindow peut sous-classe une fenêtre différente.

&Notenbsp ;  Pour tout objet de type CContainedWindow donné, appelez Create ou SubclassWindow. Vous ne devez pas appeler les méthodes sur l'objet même.

Lorsque vous utilisez l'option de contrôle en complément de l'Assistant objet ATL, l'Assistant ajoute automatiquement une donnée membre de type CContainedWindow à la classe implémentant le contrôle. L'exemple suivant est tiré du exemple SUBEDIT et montre comment la fenêtre de contenu est déclarée

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;
   }

   ...
};
Pour plus d'informations Voir
Création de contrôles Didacticiel ATL
À l'aide de windows en ATL Classes de fenêtre ATL
Assistant objet ATL Création d'un projet ATL
Windows Windows et les rubriques suivantes dans le SDK de la plate-forme
Sous-classement Sous-classement de fenêtre procédure dans la plate-forme SDK
Surclassement Fenêtre procédure surclasser dans la plate-forme SDK

# include lt;atlwin.h>

Membres de classe

Voir aussi

CWindow, CWindowImpl, CMessageMap, BEGIN_MSG_MAP, ALT_MSG_MAP

Index