ActiveX 컨트롤 인터페이스
컨트롤과 해당 클라이언트 간에 통신하기 위한 다른 메커니즘 외에도 ActiveX 컨트롤 기술은 클라이언트 제어 통신을 위한 IOleControl 및 IOleControlSite 인터페이스를 지정합니다. 간단한 컨트롤 컨테이너에 대한 ISimpleFrameSite 인터페이스도 있습니다.
그러나 이러한 세 가지 인터페이스는 컨트롤에만 적용되며 일반적으로 컨트롤 컨텍스트 외부에서는 유용하지 않습니다. 이러한 인터페이스는 다음과 같이 정의됩니다.
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 는 간단한 프레임이 메시지 자체를 처리한 후에 호출됩니다.
관련 항목