Schnittstellen für ActiveX-Steuerelemente

Zusätzlich zu anderen Mechanismen für die Kommunikation zwischen dem Steuerelement und seinem Client gibt die ActiveX-Steuerungstechnologie die IOleControl - und IOleControlSite-Schnittstellen für die Kommunikation zwischen Client und Steuerung an. Es gibt auch die ISimpleFrameSite-Schnittstelle für einfache Steuerungscontainer.

Diese drei Schnittstellen sind jedoch spezifisch für Steuerelemente und sind außerhalb des Kontexts von Steuerelementen im Allgemeinen nicht nützlich. Diese Schnittstellen sind wie folgt definiert.

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

Einige Steuerelemente, z. B. ein Gruppenfeld, sind nur ein einfacher Container mit anderen Steuerelementen. In solchen Fällen muss das einfache Steuerelement, das als einfacher Frame bezeichnet wird, nicht alle Containeranforderungen implementieren. Er kann die meisten Schnittstellenaufrufe aus den enthaltenen Steuerelementen an den Container delegieren, der den einfachen Frame verwaltet. Neben Schnittstellenaufrufen muss sich der einfache Frame auch mit Windows-Nachrichten befassen, die möglicherweise von Darin enthaltenen Steuerelementen stammen. Aus diesem Grund stellt ein Container ISimpleFrameSite bereit, damit solche einfachen Framesteuerelemente Nachrichten an den Container übergeben können. PreMessageFilter verarbeitet die Nachricht zuerst; PostMessageFilter wird aufgerufen, nachdem der einfache Frame die Nachricht selbst verarbeitet hat.

ActiveX-Steuerelemente