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 |
|
Usando o windows em ATL |
|
ATL projeto assistente |
|
Windows |
Windows tópicos subseqüentes no Windows SDK e |
Requisitos
Cabeçalho: atlwin.h