Partager via


Interfaces des contrôles ActiveX

Outre d’autres mécanismes de communication entre le contrôle et son client, la technologie des contrôles ActiveX spécifie les interfaces IOleControl et IOleControlSite pour la communication de contrôle client. Il existe également l’interface ISimpleFrameSite pour les conteneurs de contrôle simples.

Ces trois interfaces sont toutefois spécifiques aux contrôles et ne sont généralement pas utiles en dehors du contexte des contrôles. Ces interfaces sont définies comme suit.

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); 
  } 
 

Certains contrôles, comme une zone de groupe, sont simplement un conteneur simple d’autres contrôles. Dans ce cas, le contrôle simple, appelé frame simple, n’a pas besoin d’implémenter toutes les exigences de conteneur. Il peut déléguer la plupart des appels d’interface de ses contrôles contenus au conteneur qui gère le cadre simple. Outre les appels d’interface, le cadre simple doit également traiter les messages Windows qui proviennent potentiellement des contrôles qu’il contient. Pour cette raison, un conteneur fournit ISimpleFrameSite pour permettre à ces contrôles d’image simples de transmettre des messages au conteneur. PreMessageFilter traite d’abord le message ; PostMessageFilter est appelé après que le cadre simple a traité le message lui-même.

Contrôles ActiveX