Classe CComControl
Essa classe fornece métodos para criar e gerenciar controles da ATL.
Importante
Essa classe e os respectivos membros não podem ser usados em aplicativos executados 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 controle.
WinBase
A classe base que implementa funções de janela. O padrão é CWindowImpl.
Membros
Construtores públicos
Nome | Descrição |
---|---|
CComControl::CComControl | Construtor. |
Métodos públicos
Nome | Descrição |
---|---|
CComControl::ControlQueryInterface | Recupera um ponteiro para a interface solicitada. |
CComControl::CreateControlWindow | Cria uma janela para o controle. |
CComControl::FireOnChanged | Notifica o coletor do contêiner que uma propriedade de controle foi alterada. |
CComControl::FireOnRequestEdit | Notifica o coletor do contêiner de que uma propriedade de controle está prestes a ser alterada e que o objeto está perguntando ao coletor como proceder. |
CComControl::MessageBox | Chame esse método para criar, exibir e operar uma caixa de mensagem. |
Comentários
CComControl
é um conjunto útil de funções auxiliares de controle e membros de dados essenciais para controles da ATL. Quando você cria um controle padrão ou um controle DHTML usando o Assistente de Controle de ATL, o assistente derivará automaticamente sua classe de CComControl
. CComControl
deriva a maioria de seus métodos de CComControlBase.
Para obter mais informações sobre como criar um controle, consulte o Tutorial da ATL. Para obter mais informações sobre o Assistente de Projeto da ATL, confira o artigo Criar um projeto da ATL.
Para uma demonstração de métodos CComControl
e membros de dados, consulte o exemplo CIRC.
Hierarquia de herança
WinBase
CComControl
Requisitos
Cabeçalho: atlctl.h
CComControl::CComControl
O construtor .
CComControl();
Comentários
Chama o construtor CComControlBase, passando o membro de dados m_hWnd
herdado por meio de CWindowImpl.
CComControl::ControlQueryInterface
Recupera um ponteiro para a interface solicitada.
virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);
Parâmetros
iid
[in] O GUID da interface que está sendo solicitado.
ppv
[out] Um ponteiro para o ponteiro de interface identificado por iid ou NULL se a interface não for encontrada.
Comentários
Somente lida com interfaces na tabela de mapa COM.
Exemplo
// 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 padrão, cria uma janela para o controle chamando CWindowImpl::Create
.
virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);
Parâmetros
hWndParent
[entrada] Identificador para a janela pai ou proprietária. Um identificador de janela válido deve ser fornecido. A janela de controle está limitada à área de sua janela pai.
rcPos
[entrada] O tamanho inicial e a posição da janela a ser criada.
Comentários
Substitua esse método se você quiser fazer algo diferente de criar uma única janela, por exemplo, para criar duas janelas sendo que uma das quais se torna uma barra de ferramentas para seu controle.
Exemplo
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 o coletor do contêiner que uma propriedade de controle foi alterada.
HRESULT FireOnChanged(DISPID dispID);
Parâmetros
dispID
[entrada] O identificador da propriedade que foi modificada.
Valor de retorno
Um dos valores HRESULT padrão.
Comentários
Se a classe de controle derivar de IPropertyNotifySink, esse método chamará CFirePropNotifyEvent::FireOnChanged para notificar todas as interfaces IPropertyNotifySink
conectadas de que a propriedade de controle especificada foi alterada. Se a classe de controle não derivar de IPropertyNotifySink
, esse método retornará S_OK.
Esse método é seguro para chamar mesmo que seu controle não dê suporte a pontos de conexão.
Exemplo
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 coletor do contêiner de que uma propriedade de controle está prestes a ser alterada e que o objeto está perguntando ao coletor como proceder.
HRESULT FireOnRequestEdit(DISPID dispID);
Parâmetros
dispID
[entrada] Identificador da propriedade prestes a ser alterada.
Valor de retorno
Um dos valores HRESULT padrão.
Comentários
Se a classe de controle derivar de IPropertyNotifySink, esse método chamará CFirePropNotifyEvent::FireOnRequestEdit para notificar todas as interfaces IPropertyNotifySink
conectadas de que a propriedade de controle especificada está prestes a ser alterada. Se a classe de controle não derivar de IPropertyNotifySink
, esse método retornará S_OK.
Esse método é seguro para chamar mesmo que seu controle não dê suporte a pontos de conexão.
Exemplo
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 esse método para criar, exibir e operar uma caixa de mensagem.
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = _T(""),
UINT nType = MB_OK);
Parâmetros
lpszTexto
O texto a ser exibido na caixa de mensagem.
lpszCaption
O título da caixa de diálogo. Se NULL (o padrão), o título "Erro" será usado.
nType
Especifica o conteúdo e o comportamento da caixa de diálogo. Consulte a entrada MessageBox na documentação do SDK do Windows para obter uma lista das diferentes caixas de mensagem disponíveis. O padrão fornece um botão OK simples.
Valor de retorno
Retorna um valor inteiro especificando um dos valores de item de menu listados em MessageBox na documentação do SDK do Windows.
Comentários
MessageBox
é útil durante o desenvolvimento e como uma maneira fácil de exibir uma mensagem de erro ou aviso para o usuário.
Confira também
Classe CWindowImpl
Visão geral da aula
Classe CComControlBase
Classe CComCompositeControl