Teilen über


IViewObjectExImpl-Klasse

Diese Klasse implementiert IUnknown und stellt Standardimplementierungen der IViewObject-, IViewObject2- und IViewObjectEx-Schnittstellen bereit.

Wichtig

Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.

Syntax

template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
   : public IViewObjectEx

Parameter

T
Ihre Klasse, abgeleitet von IViewObjectExImpl.

Member

Öffentliche Methoden

Name Beschreibung
IViewObjectExImpl::D raw Zeichnet eine Darstellung des Steuerelements auf einen Gerätekontext.
IViewObjectExImpl::Freeze Fixiert die gezeichnete Darstellung eines Steuerelements, sodass es sich erst ändert, wenn ein Steuerelement Unfreezegeändert wird. Die ATL-Implementierung gibt E_NOTIMPL zurück.
IViewObjectExImpl::GetAdvise Ruft eine vorhandene Beratende Senkenverbindung für das Steuerelement ab, falls vorhanden.
IViewObjectExImpl::GetColorSet Gibt die logische Palette zurück, die vom Steuerelement für die Zeichnung verwendet wird. Die ATL-Implementierung gibt E_NOTIMPL zurück.
IViewObjectExImpl::GetExtent Ruft die Anzeigegröße des Steuerelements in HIMETRIC-Einheiten (0,01 Millimeter pro Einheit) aus dem Steuerelementklassendatenelement CComControlBase::m_sizeExtent ab.
IViewObjectExImpl::GetNaturalExtent Stellt Hinweise zur Größenanpassung aus dem Container für das Objekt bereit, das verwendet werden soll, wenn der Benutzer die Größe ändert.
IViewObjectExImpl::GetRect Gibt ein Rechteck zurück, das einen angeforderten Zeichnungsaspekt beschreibt. Die ATL-Implementierung gibt E_NOTIMPL zurück.
IViewObjectExImpl::GetViewStatus Gibt Informationen zur Deckkraft des Objekts und zu den unterstützten Zeichnungsaspekten zurück.
IViewObjectExImpl::QueryHitPoint Überprüft, ob sich der angegebene Punkt im angegebenen Rechteck befindet und einen HITRESULT-Wert in pHitResult.
IViewObjectExImpl::QueryHitRect Überprüft, ob das Anzeigerechteck des Steuerelements einen beliebigen Punkt im angegebenen Positionsrechteck überlappt und einen HITRESULT-Wert in pHitResult.
IViewObjectExImpl::SetAdvise Richtet eine Verbindung zwischen dem Steuerelement und einer Empfehlungsspüle ein, damit die Spüle über Änderungen in der Ansicht des Steuerelements benachrichtigt werden kann.
IViewObjectExImpl::Unfreeze Hebt die gezeichnete Darstellung des Steuerelements auf. Die ATL-Implementierung gibt E_NOTIMPL zurück.

Hinweise

Die IViewObject-, IViewObject2- und IViewObjectEx-Schnittstellen ermöglichen es einem Steuerelement, sich direkt anzuzeigen, und eine Empfehlungsspüle zu erstellen und zu verwalten, um den Container über Änderungen in der Steuerelementanzeige zu benachrichtigen. Die IViewObjectEx Schnittstelle bietet Unterstützung für erweiterte Steuerelementfeatures wie flackerfreie Zeichnung, nicht rechteckige und transparente Steuerelemente und Treffertests (z. B. wie nah ein Mausklick auf das Steuerelement zu berücksichtigen sein muss). Klasse IViewObjectExImpl stellt eine Standardimplementierung dieser Schnittstellen bereit und implementiert, indem Informationen in Debugbuilds IUnknown an das Speicherabbildgerät gesendet werden.

Vererbungshierarchie

IViewObjectEx

IViewObjectExImpl

Anforderungen

Header: atlctl.h

IViewObjectExImpl::D raw

Zeichnet eine Darstellung des Steuerelements auf einen Gerätekontext.

STDMETHOD(Draw)(
    DWORD dwDrawAspect,
    LONG lindex,
    void* pvAspect,
    DVTARGETDEVICE* ptd,
    HDC hicTargetDev,
    LPCRECTL prcBounds,
    LPCRECTL prcWBounds,
    BOOL(_stdcall* /* pfnContinue*/) (DWORD_PTR dwContinue),
    DWORD_PTR /* dwContinue */);

Hinweise

Diese Methode ruft CComControl::OnDrawAdvanced wiederum die Methode der Steuerelementklasse OnDraw auf. Beim Erstellen des Steuerelements mit dem ATL-Steuerelement-Assistenten wird der Steuerelementklasse automatisch eine OnDraw Methode hinzugefügt. Die Standardeinstellung OnDraw des Assistenten zeichnet ein Rechteck mit der Beschriftung "ATL 3.0".

Siehe "IViewObject::D raw " im Windows SDK.

IViewObjectExImpl::Freeze

Fixiert die gezeichnete Darstellung eines Steuerelements, sodass es sich erst ändert, wenn ein Steuerelement Unfreezegeändert wird. Die ATL-Implementierung gibt E_NOTIMPL zurück.

STDMETHOD(Freeze)(
    DWORD /* dwAspect */,
    LONG /* lindex */,
    void* /* pvAspect */,
    DWORD* /* pdwFreeze */);

Hinweise

Siehe "IViewObject::Freeze " im Windows SDK.

IViewObjectExImpl::GetAdvise

Ruft eine vorhandene Beratende Senkenverbindung für das Steuerelement ab, falls vorhanden.

STDMETHOD(GetAdvise)(
    DWORD* /* pAspects */,
    DWORD* /* pAdvf */,
    IAdviseSink** /* ppAdvSink */);

Hinweise

Die Advisory Sink wird im Steuerelementklassendatenmemm CComControlBase::m_spAdviseSink gespeichert.

Siehe IViewObject::GetAdvise im Windows SDK.

IViewObjectExImpl::GetColorSet

Gibt die logische Palette zurück, die vom Steuerelement für die Zeichnung verwendet wird. Die ATL-Implementierung gibt E_NOTIMPL zurück.

STDMETHOD(GetColorSet)(
    DWORD /* dwAspect */,
    LONG /* lindex */,
    void* /* pvAspect */,
    DVTARGETDEVICE* /* ptd */,
    HDC /* hicTargetDevice */,
    LOGPALETTE** /* ppColorSet */);

Hinweise

Siehe IViewObject::GetColorSet im Windows SDK.

IViewObjectExImpl::GetExtent

Ruft die Anzeigegröße des Steuerelements in HIMETRIC-Einheiten (0,01 Millimeter pro Einheit) aus dem Steuerelementklassendatenelement CComControlBase::m_sizeExtent ab.

STDMETHOD(GetExtent)(
    DWORD /* dwDrawAspect */,
    LONG /* lindex */,
    DVTARGETDEVICE* /* ptd */,
    LPSIZEL* lpsizel);

Hinweise

Siehe IViewObject2::GetExtent im Windows SDK.

IViewObjectExImpl::GetNaturalExtent

Stellt Hinweise zur Größenanpassung aus dem Container für das Objekt bereit, das verwendet werden soll, wenn der Benutzer die Größe ändert.

STDMETHOD(GetNaturalExtent)(
    DWORD dwAspect,
    LONG /* lindex */,
    DVTARGETDEVICE* /* ptd */,
    HDC /* hicTargetDevice */,
    DVEXTENTINFO* pExtentInfo,
    LPSIZEL psizel);

Hinweise

Wenn dwAspect DVASPECT_CONTENT ist und pExtentInfo-dwExtentMode> DVEXTENT_CONTENT ist, wird * psizel auf das Datenmemm cComControlBase::m_sizeNatural der Steuerelementklasse festgelegt. Andernfalls wird ein HRESULT-Fehler zurückgegeben.

Siehe IViewObjectEx::GetNaturalExtent im Windows SDK.

IViewObjectExImpl::GetRect

Gibt ein Rechteck zurück, das einen angeforderten Zeichnungsaspekt beschreibt. Die ATL-Implementierung gibt E_NOTIMPL zurück.

STDMETHOD(GetRect)(DWORD /* dwAspect */, LPRECTL /* pRect */);

Hinweise

Siehe IViewObjectEx::GetRect im Windows SDK.

IViewObjectExImpl::GetViewStatus

Gibt Informationen zur Deckkraft des Objekts und zu den unterstützten Zeichnungsaspekten zurück.

STDMETHOD(GetViewStatus)(DWORD* pdwStatus);

Hinweise

AtL legt pdwStatus standardmäßig fest, dass das Steuerelement VIEWSTATUS_OPAQUE unterstützt (mögliche Werte befinden sich in der VIEWSTATUS-Aufzählung ).

Siehe IViewObjectEx::GetViewStatus im Windows SDK.

IViewObjectExImpl::QueryHitPoint

Überprüft, ob sich der angegebene Punkt im angegebenen Rechteck befindet und einen HITRESULT-Wert in pHitResult.

STDMETHOD(QueryHitPoint)(
    DWORD dwAspect,
    LPCRECT pRectBounds,
    POINT ptlLoc,
    LONG /* lCloseHit */,
    DWORD* /* pHitResult */);

Hinweise

Der Wert kann entweder HITRESULT_HIT oder HITRESULT_OUTSIDE sein.

Wenn dwAspect gleich DVASPECT_CONTENT, gibt die Methode S_OK zurück. Andernfalls gibt die Methode E_FAIL zurück.

Siehe IViewObjectEx::QueryHitPoint im Windows SDK.

IViewObjectExImpl::QueryHitRect

Überprüft, ob das Anzeigerechteck des Steuerelements einen beliebigen Punkt im angegebenen Positionsrechteck überlappt und einen HITRESULT-Wert in pHitResult.

STDMETHOD(QueryHitRect)(
    DWORD dwAspect,
    LPCRECT pRectBounds,
    LPRECT prcLoc,
    LONG /* lCloseHit */,
    DWORD* /* pHitResult */);

Hinweise

Der Wert kann entweder HITRESULT_HIT oder HITRESULT_OUTSIDE sein.

Wenn dwAspect gleich DVASPECT_CONTENT, gibt die Methode S_OK zurück. Andernfalls gibt die Methode E_FAIL zurück.

Siehe IViewObjectEx::QueryHitRect im Windows SDK.

IViewObjectExImpl::SetAdvise

Richtet eine Verbindung zwischen dem Steuerelement und einer Empfehlungsspüle ein, damit die Spüle über Änderungen in der Ansicht des Steuerelements benachrichtigt werden kann.

STDMETHOD(SetAdvise)(
    DWORD /* aspects */,
    DWORD /* advf */,
    IAdviseSink* pAdvSink);

Hinweise

Der Zeiger auf die IAdviseSink-Schnittstelle auf der Empfehlungsspüle wird im Steuerelementklassendatenmemm CComControlBase::m_spAdviseSink gespeichert.

Siehe IViewObject::SetAdvise im Windows SDK.

IViewObjectExImpl::Unfreeze

Hebt die gezeichnete Darstellung des Steuerelements auf. Die ATL-Implementierung gibt E_NOTIMPL zurück.

STDMETHOD(Unfreeze)(DWORD /* dwFreeze */);

Hinweise

Siehe "IViewObject::Unfreeze " im Windows SDK.

IWorkerThreadClient::CloseHandle

Implementieren Sie diese Methode, um das diesem Objekt zugeordnete Handle zu schließen.

HRESULT CloseHandle(HANDLE hHandle);

Parameter

hHandle
Der zu schließende Ziehpunkt.

Rückgabewert

Gibt S_OK bei Erfolg zurück oder ein HRESULT-Fehler beim Fehler.

Hinweise

Das an diese Methode übergebene Handle wurde zuvor durch einen Aufruf von CWorkerThread::AddHandle diesem Objekt zugeordnet.

Beispiel

Der folgende Code zeigt eine einfache Implementierung von IWorkerThreadClient::CloseHandle.

HRESULT CloseHandle(HANDLE hObject)
{
   // Users should do any shutdown operation required here.
   // Generally, this means just closing the handle.

   if (!::CloseHandle(hObject))
   {
      // Closing the handle failed for some reason.
      return AtlHresultFromLastError();
   }

   return S_OK;
}

IWorkerThreadClient::Execute

Implementieren Sie diese Methode, um Code auszuführen, wenn das diesem Objekt zugeordnete Handle signalisiert wird.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parameter

dwParam
Der Benutzerparameter.

hObject
Der Ziehpunkt, der signalisiert wurde.

Rückgabewert

Gibt S_OK bei Erfolg zurück oder ein HRESULT-Fehler beim Fehler.

Hinweise

Der an diese Methode übergebene Handle und DWORD/Zeiger wurden zuvor durch einen Aufruf von CWorkerThread::AddHandle diesem Objekt zugeordnet.

Beispiel

Der folgende Code zeigt eine einfache Implementierung von IWorkerThreadClient::Execute.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject)
{
   // Cast the parameter to its known type.
   LONG* pn = reinterpret_cast<LONG*>(dwParam);

   // Increment the LONG.
   LONG n = InterlockedIncrement(pn);

   // Log the results.
   printf_s("Handle 0x%08X incremented value to : %d\n", (DWORD_PTR)hObject, n);

   return S_OK;
}

Siehe auch

CComControl-Klasse
ActiveX-Steuerelementschnittstellen
Tutorial
Erstellen eines ATL-Projekts
Klassenübersicht