CContainedWindow

mode&lo lt; classeTBase= CWindow, classeTWinTraits = &Gt CControlWinTraits;
Classe CContainedWindowT: TBase pública

Parâmetros

TBase

A classe base de sua nova classe. A classe de base padrão é CWindow.

TWinTraits

Uma classe de características que define estilos para a sua janela. O padrão é CControlWinTraits.

&Nota nbsp; CContainedWindow é uma especialização de CContainedWindowT. Se você deseja alterar a classe base ou traços, use CContainedWindowT diretamente.

CContainedWindow implementa uma janela contida em outro objeto. CContainedWindowdo procedimento de janela usa um mapa da mensagem no objeto de recipiente para direcionar mensagens para os manipuladores apropriados. Ao construir um objeto de CContainedWindow , você especifica qual Mapa da mensagem deve ser usado.

CContainedWindow permite que você criar uma nova janela por superclassing uma classe de janela existente. O método de criar primeiro registra uma classe de janela que se baseia em uma classe existente, mas usa CContainedWindow:: WindowProc. Criar , em seguida, cria uma janela com base neste novo janela classe. Cada instância de CContainedWindow pode superclasse uma classe de janela diferente.

CContainedWindow também oferece suporte a subclassificação de janela. O método SubclassWindow anexa uma janela existente para o objeto de CContainedWindow e altera o procedimento de janela para CContainedWindow:: WindowProc. Cada instância de CContainedWindow pode subclasse outra janela.

&Notanbsp;  Para qualquer dado objeto de CContainedWindow , chamada o criar ou SubclassWindow. Você não deve chamar os dois métodos no mesmo objeto.

Quando você usar a opção de Adicionar controle baseado em do Assistente de objeto ATL, o assistente adicionará automaticamente um membro de dados CContainedWindow à classe de implementação do Controlarar. O exemplo a seguir é tirado do SUBEDIT exemplo e mostra como a janela contida é declarada

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

   ...
};
Para obter mais informações sobre Consulte
Criando controles Tutorial ATL
Using windows in ATL Classes de janela do ATL
Assistente de objeto ATL Criando um projeto ATL
Windows Windows e os tópicos subseqüentes a Plataforma SDK
Subclassificação Subclassificação do procedimento de janela no plataforma SDK
Superclassing Janela procedimento Superclassing in the plataforma SDK

# include lt;atlwin.h>

Membros de classe

Ver também

CWindow, CWindowImpl, CMessageMap, BEGIN_MSG_MAP, ALT_MSG_MAP

Index