Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Esta classe fornece os métodos necessários para implementar um controlo composto.
Importante
Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.
Sintaxe
template <class T>
class CComCompositeControl : public CComControl<T,CAxDialogImpl<T>>
Parâmetros
T
A sua classe, derivada de CComObjectRoot ou CComObjectRootEx, bem como de quaisquer outras interfaces que queira suportar para o seu controlo composto.
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| CComCompositeControl::CComCompositeControl | O construtor. |
| CComCompositeControl::~CComCompositeControl | O destruidor. |
Métodos Públicos
| Nome | Description |
|---|---|
| CComCompositeControl::AdviseSinkMap | Chame este método para aconselhar ou desaconselhar todos os controlos alojados pelo controlo composto. |
| CComCompositeControl::CalcExtent | Chame este método para calcular o tamanho em unidades HIMÉTRICAS do recurso de diálogo usado para hospedar o controlo composto. |
| CComCompositeControl::Create | Este método é chamado para criar a janela de controlo do controlo composto. |
| CComCompositeControl::CreateControlWindow | Chame este método para criar a janela de controlo e informar qualquer controlo hospedado. |
| CComCompositeControl::SetBackgroundColorFromAmbient | Chame este método para definir a cor de fundo do controlo composto usando a cor de fundo do contentor. |
Membros de Dados Públicos
| Nome | Description |
|---|---|
| CComCompositeControl::m_hbrBackground | O pincel de fundo. |
| CComCompositeControl::m_hWndFocus | A maçaneta da janela que atualmente tem foco. |
Observações
As classes derivadas da classe CComCompositeControl herdam a funcionalidade de um controlo composto ActiveX. Os controlos ActiveX derivados de CComCompositeControl são alojados por uma caixa de diálogo padrão. Estes tipos de controlos são chamados controlos compostos porque conseguem alojar outros controlos (controlos nativos do Windows e controlos ActiveX).
CComCompositeControl Identifica o recurso de diálogo a usar na criação do controlo composto procurando um membro de dados enumerado na classe filha. O IDD do membro desta classe filha é definido para o ID do recurso de diálogo que será usado como janela do controlo. Segue-se um exemplo do membro de dados que a classe derivada CComCompositeControl deve conter para identificar o recurso de diálogo a ser usado para a janela do controlo:
enum { IDD = IDD_MYCOMPOSITE };
Observação
Os controlos compostos são sempre controlos em janela, embora possam conter controlos sem janelas.
Um controlo implementado por uma CComCompositeControlclasse derivada em tem um comportamento de tabulação por defeito incorporado. Quando o controlo recebe o foco ao ser pressionado por tab numa aplicação de contenção, pressionar sucessivamente a tecla TAB fará com que o foco seja alternado por todos os controlos contidos do controlo composto, depois saindo do controlo composto e passando para o item seguinte na ordem de tabulação do contentor. A ordem de tabulação dos controlos alojados é determinada pelo recurso de diálogo e determina a ordem em que a tabulação ocorrerá.
Observação
Para que os aceleradores funcionem corretamente com um CComCompositeControl, é necessário carregar uma tabela de aceleradores à medida que o controlo é criado, passar a alavanca e o número de aceleradores de volta para o IOleControlImpl::GetControlInfo, e finalmente destruir a tabela quando o controlo é libertado.
Example
// Example for overriding IOleControlImpl::GetControlInfo()
// This example uses the accelerator table from the project resources
// with the identifier IDR_ACCELTABLE
// Define GetControlInfo() in the header of your composite
// control class as follows:
STDMETHOD(GetControlInfo)(CONTROLINFO* pCI)
{
// Load the accelerator table from the resource
pCI->hAccel = LoadAccelerators(_AtlBaseModule.GetResourceInstance(),
MAKEINTRESOURCE(IDR_ACCELTABLE));
if (pCI->hAccel == NULL)
return E_FAIL;
// Get the number of accelerators in the table
pCI->cAccel = (USHORT)CopyAcceleratorTable(pCI->hAccel, NULL, 0);
// The following is optional if you want your control
// to process the return and/or escape keys
// pCI.dwFlags = CTRLINFO_EATS_RETURN | CTRLINFO_EATS_ESCAPE;
pCI->dwFlags = 0;
return S_OK;
}
Hierarquia de herança
WinBase
CComCompositeControl
Requerimentos
Cabeçalho: atlctl.h
CComCompositeControl::AdviseSinkMap
Chame este método para aconselhar ou desaconselhar todos os controlos alojados pelo controlo composto.
HRESULT AdviseSinkMap(bool bAdvise);
Parâmetros
bAdvise
É verdade se todos os controlos forem aconselhados; caso contrário, falso.
Valor de retorno
| Valor | Description |
|---|---|
S_OK |
Todos os controlos no mapa do sumidouro de eventos estavam ligados ou desconectados da sua fonte de eventos com sucesso. |
E_FAIL |
Nem todos os controlos no event sink map poderiam ser ligados ou desligados da sua fonte de eventos com sucesso. |
E_POINTER |
Este erro normalmente indica um problema com uma entrada no event sink map do controlo ou um problema com um argumento modelo usado numa IDispEventImpl ou IDispEventSimpleImpl classe base. |
CONNECT_E_ADVISELIMIT |
O ponto de ligação já atingiu o limite de ligações e não pode aceitar mais. |
CONNECT_E_CANNOTCONNECT |
O sumidouro não suporta a interface exigida por este ponto de ligação. |
CONNECT_E_NOCONNECTION |
O valor do cookie não representa uma ligação válida. Este erro normalmente indica um problema com uma entrada no event sink map do controlo ou um problema com um argumento modelo usado numa IDispEventImpl ou IDispEventSimpleImpl classe base. |
Observações
A implementação base deste método pesquisa as entradas no event sink map. Depois, aconselha ou desaconselha os pontos de ligação aos objetos COM descritos pelas entradas do sink do event sink map. Este método dos membros também se baseia no facto de a classe derivada herdar de uma instância de IDispEventImpl para cada controlo no mapa de sumidouro que deve ser aconselhada ou não.
CComCompositeControl::CalcExtent
Chame este método para calcular o tamanho em unidades HIMÉTRICAS do recurso de diálogo usado para hospedar o controlo composto.
BOOL CalcExtent(SIZE& size);
Parâmetros
tamanho
Uma referência a uma SIZE estrutura a ser preenchida por este método.
Valor de retorno
TRUE se o controlo estiver hospedado numa caixa de diálogo; caso contrário, FALSO.
Observações
O tamanho é devolvido no parâmetro de tamanho .
CComCompositeControl::Create
Este método é chamado para criar a janela de controlo do controlo composto.
HWND Create(
HWND hWndParent,
RECT& /* rcPos */,
LPARAM dwInitParam = NULL);
Parâmetros
hWndParent
Uma alavanca para a janela principal do controlo.
rcPos
Reservado.
dwInitParam
Dados a serem passados para o controlo durante a criação do controlo. Os dados passados como dwInitParam aparecerão como o parâmetro LPARAM da mensagem WM_INITDIALOG , que será enviada para o controlo composto quando for criada.
Valor de retorno
Um handle para a recém-criada caixa de diálogo de controlo composto.
Observações
Este método é normalmente chamado durante a ativação no local do controlo.
CComCompositeControl::CComCompositeControl
O construtor.
CComCompositeControl();
Observações
Inicializa os membros de dados CComCompositeControl::m_hbrBackground e CComCompositeControl::m_hWndFocus para NULL.
CComCompositeControl::~CComCompositeControl
O destruidor.
~CComCompositeControl();
Observações
Apaga o objeto de fundo, se existir.
CComCompositeControl::CreateControlWindow
Chame este método para criar a janela de controlo e informar quaisquer controlos alojados.
virtual HWND CreateControlWindow(
HWND hWndParent,
RECT& rcPos);
Parâmetros
hWndParent
Uma alavanca para a janela principal do controlo.
rcPos
O retângulo de posição do controlo composto nas coordenadas do cliente corresponde ao hWndParent.
Valor de retorno
Devolve um handle à nova caixa de diálogo de controlo composto.
Observações
Este método chama CComCompositeControl::Create e CComCompositeControl::AdviseSinkMap.
CComCompositeControl::m_hbrBackground
O pincel de fundo.
HBRUSH m_hbrBackground;
CComCompositeControl::m_hWndFocus
A maçaneta da janela que atualmente tem foco.
HWND m_hWndFocus;
CComCompositeControl::SetBackgroundColorFromAmbient
Chame este método para definir a cor de fundo do controlo composto usando a cor de fundo do contentor.
HRESULT SetBackgroundColorFromAmbient();
Valor de retorno
Devolve S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.
Consulte também
Classe CComControl
Fundamentos do Controlo Composto
Visão geral da classe