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 métodos para criar e gerir controlos ATL.
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 WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
public WinBase;
Parâmetros
T
A classe que implementa o controlo.
WinBase
A classe base que implementa funções de janela. Por defeito é CWindowImpl.
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| CComControl::CComControl | Construtor. |
Métodos Públicos
| Nome | Description |
|---|---|
| CComControl::ControlQueryInterface | Recupera um ponteiro para a interface solicitada. |
| CComControl::CreateControlWindow | Cria uma janela para o controlo. |
| CComControl::FireOnChanged | Notifica a pia do recipiente que uma propriedade de controlo foi alterada. |
| CComControl::FireOnRequestEdit | Notifica o lava-loiça do recipiente que uma propriedade de controlo está prestes a mudar e que o objeto está a perguntar ao lava-loiça como proceder. |
| CComControl::MessageBox | Chame este método para criar, mostrar e operar uma caixa de mensagem. |
Observações
CComControl é um conjunto de funções auxiliares de controlo úteis e membros de dados essenciais para controlos ATL. Quando cria um controlo padrão ou um controlo DHTML usando o ATL Control Wizard, o assistente irá automaticamente derivar a sua classe a partir de CComControl.
CComControl deriva a maioria dos seus métodos a partir do CComControlBase.
Para mais informações sobre como criar um controlo, consulte o Tutorial ATL. Para mais informações sobre o Assistente do Projeto ATL, consulte o artigo Criar um Projeto ATL.
Para uma demonstração dos CComControl métodos e dos membros dos dados, veja a amostra CIRC .
Hierarquia de herança
WinBase
CComControl
Requerimentos
Cabeçalho: atlctl.h
CComControl::CComControl
O construtor.
CComControl();
Observações
Chama o construtor CComControlBase , passando o m_hWnd membro de dados herdado através de CWindowImpl.
CComControl::ControlQueryInterface
Recupera um ponteiro para a interface solicitada.
virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);
Parâmetros
IID
[dentro] O GUID da interface a ser solicitada.
PPV
[fora] Um ponteiro para o ponteiro da interface identificado por iid, ou NULL se a interface não for encontrada.
Observações
Só trata das interfaces na tabela de mapas COM.
Example
// Retrieve the control's IOleObject interface. Note interface
// is automatically released when pOleObject goes out of scope
CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);
CComControl::CreateControlWindow
Por defeito, cria uma janela para o controlo ao chamar CWindowImpl::Create.
virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);
Parâmetros
hWndParent
[dentro] Pega na janela dos pais ou do proprietário. Deve ser fornecida uma maçaneta válida para a janela. A janela de controlo está confinada à área da sua janela-mãe.
rcPos
[dentro] O tamanho inicial e a posição da janela a criar.
Observações
Anule este método se quiser fazer algo diferente de criar uma única janela, por exemplo, criar duas janelas, uma das quais se torna uma barra de ferramentas para o seu controlo.
Example
RECT rc = {10,10,210,110};
HWND hwndParent, hwndControl;
// get HWND of control's parent window from IOleInPlaceSite interface
m_spInPlaceSite->GetWindow(&hwndParent);
hwndControl = CreateControlWindow(hwndParent, rc);
CComControl::FireOnChanged
Notifica a pia do recipiente que uma propriedade de controlo foi alterada.
HRESULT FireOnChanged(DISPID dispID);
Parâmetros
dispID
[dentro] Identificador da propriedade que mudou.
Valor de retorno
Um dos valores padrão do HRESULT.
Observações
Se a sua classe de controlo derivar de IPropertyNotifySink, este método chama CFirePropNotifyEvent::FireOnChanged para notificar todas as interfaces conectadas IPropertyNotifySink de que a propriedade de controlo especificada mudou. Se a sua classe de controlo não derivar de IPropertyNotifySink, este método devolve S_OK.
Este método é seguro para chamar mesmo que o teu controlo não suporte pontos de ligação.
Example
STDMETHODIMP CMyControl::put_MyText(BSTR newVal)
{
// store newVal in CComBstr member
m_bstrMyText = newVal;
// note the DISPID for the MyText property is 3 in this example
FireOnChanged(3);
return S_OK;
}
CComControl::FireOnRequestEdit
Notifica o lava-loiça do recipiente que uma propriedade de controlo está prestes a mudar e que o objeto está a perguntar ao lava-loiça como proceder.
HRESULT FireOnRequestEdit(DISPID dispID);
Parâmetros
dispID
[dentro] Identificador da propriedade prestes a mudar.
Valor de retorno
Um dos valores padrão do HRESULT.
Observações
Se a sua classe de controlo derivar de IPropertyNotifySink, este método chama CFirePropNotifyEvent::FireOnRequestEdit para notificar todas as interfaces conectadas IPropertyNotifySink de que a propriedade de controlo especificada está prestes a mudar. Se a sua classe de controlo não derivar de IPropertyNotifySink, este método devolve S_OK.
Este método é seguro para chamar mesmo que o teu controlo não suporte pontos de ligação.
Example
STDMETHODIMP CMyControl::put_MyTitle(BSTR newVal)
{
// the DISPID for MyTitle in this example is 4
DISPID dispID = 4;
// make sure we can change the property
if (FireOnRequestEdit(dispID) == S_FALSE)
return S_FALSE;
// store newVal in CComBstr member
m_bstrMyTitle = newVal;
// signal that the property has been changed
FireOnChanged(dispID);
return S_OK;
}
CComControl::MessageBox
Chame este método para criar, mostrar e operar uma caixa de mensagem.
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = _T(""),
UINT nType = MB_OK);
Parâmetros
lpszText
O texto a ser exibido na caixa de mensagem.
lpszLegenda
O título da caixa de diálogo. Se for NULL (o padrão), usa-se o título "Erro".
nTipo
Especifica o conteúdo e o comportamento da caixa de diálogo. Consulte a entrada MessageBox na documentação do SDK do Windows para uma lista das diferentes caixas de mensagens disponíveis. O padrão fornece um simples botão OK .
Valor de retorno
Devolve um valor inteiro que especifica um dos valores dos itens do menu listados em MessageBox na documentação do SDK do Windows.
Observações
MessageBox é útil tanto durante o desenvolvimento como como forma fácil de mostrar um erro ou mensagem de aviso ao utilizador.
Consulte também
Classe CWindowImpl
Visão geral da classe
Classe CComControlBase
Classe CComCompositeControl