Partilhar via


Classe CComControl

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

CComControlBase

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