Partilhar via


Interfaces de controles ActiveX

Além de outros mecanismos de comunicação entre o controle e seu cliente, a tecnologia de controles ActiveX especifica o IOleControl e IOleControlSite interfaces para comunicação de controle de cliente. Há também o ISimpleFrameSite interface para contêineres de controle simples.

Estas três interfaces são, no entanto, específicas dos controlos e geralmente não são úteis fora do contexto dos controlos. Estas interfaces são definidas da seguinte forma.

interface IOleControl : IUnknown 
  { 
    HRESULT GetControlInfo([out] CONTROLINFO *pCI); 
    HRESULT OnMnemonic([in] LPMSG pMsg); 
    HRESULT OnAmbientPropertyChange([in] DISPID dispID); 
    HRESULT FreezeEvents([in] BOOL bFreeze); 
  } 
 
interface IOleControlSite : IUnknown 
  { 
    HRESULT OnControlInfoChanged(void); 
    HRESULT LockInPlaceActive([in] BOOL fLock); 
    HRESULT GetExtendedControl([out] IDispatch **ppDisp); 
    HRESULT TransformCoords([in-out] POINTL *pptlHimetric, [in-out] POINTF *pptfContainer, [in] DWORD dwFlags); 
    HRESULT TranslateAccelerator([in] LPMSG pMsg, [in] DWORD grfModifiers); 
    HRESULT OnFocus([in] BOOL fGotFocus); 
    HRESULT ShowPropertyFrame(void); 
  } 
 
interface ISimpleFrameSite : IUnknown 
  { 
    HRESULT PreMessageFilter([in] HWND hWnd, [in] UINT msg, [in] WPARAM wp, [in] LPARAM lp, 
        [out] LRESULT *plResult, [out] DWORD *pdwCookie); 
    HRESULT PostMessageFilter([in] HWND hWnd, [in] UINT msg, [in] WPARAM wp, [in] LPARAM lp, 
        [out] LRESULT *plResult, [in] DWORD dwCookie); 
  } 
 

Alguns controles, como uma caixa de grupo, são apenas um simples contêiner de outros controles. Nesses casos, o controle simples, chamado de quadro simples, não precisa implementar todos os requisitos do contêiner. Ele pode delegar a maioria das chamadas de interface de seus controles contidos para o contêiner que gerencia o quadro simples. Além de chamadas de interface, o quadro simples também tem que lidar com mensagens do Windows que potencialmente vêm de controles dentro dele. Por esse motivo, um contêiner fornece ISimpleFrameSite para permitir que esses controles de quadro simples passem mensagens para o contêiner. PreMessageFilter processa a mensagem primeiro; PostMessageFilter é chamado depois que o quadro simples processou a própria mensagem.

Controles ActiveX