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 Unfreeze geä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 Unfreeze
geä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