Partilhar via


Classe CContainedWindowT

Essa classe implementa uma janela contida em outro objeto.

template <
   class TBase = CWindow,
   class TWinTraits = CControlWinTraits 
>
class CContainedWindowT :
   public TBase

Parâmetros

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

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

Observação:

CContainedWindow é uma especialização de CContainedWindowT. Se você quiser alterar a classe base ou características, use CContainedWindowT diretamente.

Comentários

CContainedWindowT implementa uma janela contida em outro objeto. CContainedWindowT's janela procedimento usa uma mensagem mapear no objeto que contém mensagens direto para os manipuladores apropriados. Ao construir um CContainedWindowT objeto que você especifique qual MAP da mensagem deve ser usado.

CContainedWindowT permite que você crie uma nova janela por superclassing uma classe de janela existente. The Criar método se registra pela primeira vez uma classe de janela que se baseia em uma classe existente, mas usa CContainedWindowT::WindowProc. Criar, em seguida, cria uma janela com base em sua classe nova janela.Cada instância de CContainedWindowT pode superclasse uma classe de janela diferentes.

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

Observação:

Para qualquer dado CContainedWindowT objeto, chamar qualquer um Criar or SubclassWindow. Você não deve chamar os dois métodos no mesmo objeto.

Quando você usa o Adicionar controle com base em opção o ATL projeto Wizard, o assistente adicionará automaticamente um CContainedWindowT membro de dados para a classe de implementação do controle. O exemplo a seguir mostra como a janela contida é declarada:

public:
   // Declare a contained window data member
   CContainedWindow m_ctlEdit;

   // 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_ctlEdit(_T("Edit"), this, 1)
   {
      m_bWindowOnly = TRUE;
   }
// Declare the default message map, identified by '0'
BEGIN_MSG_MAP(CAtlEdit)
   MESSAGE_HANDLER(WM_CREATE, OnCreate)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
   CHAIN_MSG_MAP(CComControl<CAtlEdit>)
// 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*/)
{
   RECT rc;
   GetWindowRect(&rc);
   rc.right -= rc.left;
   rc.bottom -= rc.top;
   rc.top = rc.left = 0;
   m_ctlEdit.Create(m_hWnd, rc, _T("hello"), WS_CHILD | WS_VISIBLE | 
      ES_MULTILINE | ES_AUTOVSCROLL);
   return 0;
}

Para obter mais informações sobre

Consulte

Criação de controles

Tutorial do ATL

Usando o windows em ATL

Classes de janela do ATL

ATL projeto assistente

Criando um projeto do ATL

Windows

Windows tópicos subseqüentes no Windows SDK e

Requisitos

Cabeçalho: atlwin.h

Consulte também

Referência

Classe CWindow

Classe CWindowImpl

Classe CMessageMap

BEGIN_MSG_MAP

ALT_MSG_MAP

Outros recursos

CContainedWindowT membros

Visão geral do ATL classe