CContainedWindow

mode&llo lt; classeTBase= CWindow, classeTWinTraits = &Gt CControlWinTraits;
classe CContainedWindowT: TBase pubblica

Parametri

TBase

La classe base della nuova classe. La classe di base predefinita è CWindow.

TWinTraits

Una classe di tratti che definisce gli stili per la finestra. Il valore predefinito è CControlWinTraits.

&Nota nbsp; CContainedWindow è una specializzazione della CContainedWindowT. Se si desidera modificare la classe base o tratti, utilizzare direttamente CContainedWindowT.

CContainedWindow implementa una finestra contenuta all'interno di un altro oggetto. CContainedWindowdi routine della finestra utilizza una mappa messaggi in oggetto contenitore per dirigere i messaggi ai gestori appropriati. Quando si costruisce un oggetto CContainedWindow , specificare quale mappa dei messaggi deve essere utilizzato.

CContainedWindow consente di creare una nuova finestra di creazione di superclassi una classe di finestra esistente. Il metodo Create prima registra una classe della finestra che si basa su una classe esistente ma utilizza CContainedWindow::WindowProc. Create crea quindi una finestra basata su questa nuova classe di finestra. Ogni istanza di CContainedWindow può superclasse di una classe di finestra diversa.

CContainedWindow supporta anche la creazione di sottoclassi finestra. Il metodo SubclassWindow attribuisce una finestra esistente all'oggetto CContainedWindow e cambia la routine della finestra a CContainedWindow::WindowProc. Ogni istanza di CContainedWindow può sottoclasse di un'altra finestra.

&Notanbsp;  Per qualsiasi oggetto specificato CContainedWindow , chiamare Create o SubclassWindow. Non si devono richiamare entrambi i metodi sullo stesso oggetto.

Quando si utilizza l'opzione Aggiungi controllo basato su in creazione guidata oggetto ATL, la procedura guidata aggiungerà automaticamente un membro dati CContainedWindow alla classe di implementazione del controllo. Nell'esempio seguente è tratto dalla esempio SUBEDIT e mostra come viene dichiarata la finestra contenuta

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

   ...
};
Per ulteriori informazioni su Vedere
Creazione di controlli ATL Tutorial
Utilizzando windows in ATL Classi di finestre ATL
Creazione guidata oggetto Creazione di un progetto ATL
Windows Windows e argomenti successivi in Platform SDK
Creazione di una sottoclasse Finestra procedura Subclassing in Platform SDK
Creazione di superclassi Creazione di procedura superclassi finestra in Platform SDK

# include lt;atlwin.h>

Membri della classe

Vedi anche

CWindow, CWindowImpl, CMessageMap, BEGIN_MSG_MAP, ALT_MSG_MAP

Index