ActiveX コントロール インターフェイス
ActiveX コントロール テクノロジは、コントロールとそのクライアント間で通信するためのその他のメカニズムに加えて、IOleControlと IOleControlSite インターフェイスをクライアントコントロール通信用に指定します。 単純なコントロール コンテナー用の 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 コントロール の