Share via


ActiveX コントロール インターフェイス

ActiveXコントロールテクノロジは、コントロールとそのクライアント間の通信のための他のメカニズムに加えて、クライアントコントロールの通信のためのIOleControlIOleControlSiteインターフェイスを指定します。 単純なコントロールコンテナーのISimpleFrameSiteインターフェイスもあります。

ただし、これら3つのインターフェイスは、コントロールに固有であり、コントロールのコンテキスト外では一般に便利ではありません。 これらのインターフェイスは、次のように定義されます。

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

グループボックスなどの一部のコントロールは、他のコントロールの単純なコンテナーにすぎません。 このような場合、単純なフレームと呼ばれる単純なコントロールは、すべてのコンテナー要件を実装する必要はありません。 含まれているコントロールからのインターフェイス呼び出しのほとんどを、単純なフレームを管理するコンテナーに委任できます。 単純なフレームは、インターフェイス呼び出しだけでなく、その中のコントロールから送信される可能性のあるWindowsメッセージを処理する必要もあります。 このため、コンテナーはISimpleFrameSiteを提供して、このような単純なフレームコントロールがメッセージをコンテナーに渡すことができるようにします。 PreMessageFilterは最初にメッセージを処理します。PostMessageFilterは、単純なフレームがメッセージ自体を処理した後に呼び出されます。

ActiveX コントロール