Classe CComCompositeControl
Essa classe fornece os métodos necessários para implementar um controle composto.
template <
class T
>
class CComCompositeControl :
public CComControl< T, CAxDialogImpl< T > >
Parâmetros
- T
Sua classe, derivado de CComObjectRoot or CComObjectRootEx, sistema autônomo bem sistema autônomo de qualquer Outros interface você deseja oferecer suporte para o seu controle composto.
Comentários
Classes derivadas de classe CComCompositeControl herda a funcionalidade de um controle composto ActiveX. Os controles ActiveX derivados de CComCompositeControl são hospedados por uma caixa de diálogo padrão. Esses tipos de controles são chamados de controles compostos porque eles são capazes de hospedar outros controles (os controles ActiveX e controles nativo do Windows).
CComCompositeControl identifica o recurso de caixa de diálogo para usar na criação de controle composto procurando por um membro de dados enumerado na classe filho. O membro IDD dessa classe filho é conjunto à ID de recurso do recurso da caixa de diálogo que será usado sistema autônomo a janela do controle.Este é um exemplo do membro de dados que a classe derivada de CComCompositeControl deve conter para identificar o recurso de caixa de diálogo a ser usado para a janela do controle:
enum { IDD = IDD_MYCOMPOSITE };
Observação: |
---|
Controles compostos são sempre controles em janelas, embora elas podem conter controles sem janelas. |
Um controle implementado por um CComCompositeControl-classe derivada foi incorporado do comportamento padrão de navegação por TAB. Quando o controle recebe o foco sendo com guias para em um aplicativo contêiner, sucessivamente, pressionando a tecla guia fará com que o foco para ser trocadas por todos os controles contidos do controle composto, então fora do controle composto e para o próximo item na ordem de tabulação do contêiner.A ordem de tabulação dos controles hospedados é determinada pelo recurso da caixa de diálogo e determina a ordem na qual a tabulação ocorrerá.
Observação: |
---|
Para que aceleradores funcione corretamente com um CComCompositeControl, é necessário carregar uma tabela do acelerador de sistema autônomo o controle é criado, passe o identificador e o número de aceleradores de volta IOleControlImpl::GetControlInfo e finalmente destruir a tabela quando o controle é liberado. |
Exemplo
// 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;
}
Requisitos
Cabeçalho: atlctl.h
Consulte também
Conceitos
Conceitos básicos de controle composto