Share via


Klasse IViewObjectExImpl

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze klasse implementeert IUnknown en biedt standaard implementaties van de interfaces IViewObject, IViewObject2 en IViewObjectEx .

Belangrijk

Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.

Syntaxis

template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
   : public IViewObjectEx

Parameterwaarden

T
Uw klas, afgeleid van IViewObjectExImpl.

Leden

Openbare methoden

Naam Description
IViewObjectExImpl::D raw Hiermee tekent u een weergave van het besturingselement op een apparaatcontext.
IViewObjectExImpl::Freeze Blokkeert de getekende weergave van een besturingselement, zodat deze pas verandert als een Unfreeze. De ATL-implementatie retourneert E_NOTIMPL.
IViewObjectExImpl::GetAdvise Hiermee haalt u een bestaande adviessinkverbinding op voor het besturingselement, indien aanwezig.
IViewObjectExImpl::GetColorSet Retourneert het logische palet dat wordt gebruikt door het besturingselement voor tekenen. De ATL-implementatie retourneert E_NOTIMPL.
IViewObjectExImpl::GetExtent Haalt de weergavegrootte van het besturingselement op in HIMETRIC-eenheden (0,01 millimeter per eenheid) van het lid CComControlBase::m_sizeExtent van de controleklasse.
IViewObjectExImpl::GetNaturalExtent Biedt hints voor de grootte van de container voor het object dat moet worden gebruikt wanneer de gebruiker de grootte ervan wijzigt.
IViewObjectExImpl::GetRect Hiermee wordt een rechthoek geretourneerd die een aangevraagd tekenaspect beschrijft. De ATL-implementatie retourneert E_NOTIMPL.
IViewObjectExImpl::GetViewStatus Retourneert informatie over de ondoorzichtigheid van het object en welke tekenaspecten worden ondersteund.
IViewObjectExImpl::QueryHitPoint Controleert of het opgegeven punt zich in de opgegeven rechthoek bevindt en retourneert een HITRESULT-waarde in pHitResult.
IViewObjectExImpl::QueryHitRect Controleert of de weergaverechthoek van het besturingselement elk punt in de opgegeven locatierechthoek overlapt en retourneert een HITRESULT-waarde in pHitResult.
IViewObjectExImpl::SetAdvise Hiermee stelt u een verbinding tussen het besturingselement en een adviessink in, zodat de sink kan worden geïnformeerd over wijzigingen in de weergave van het besturingselement.
IViewObjectExImpl::Blokkering opheffen De blokkering van de getekende weergave van het besturingselement opheffen. De ATL-implementatie retourneert E_NOTIMPL.

Opmerkingen

Met de interfaces IViewObject, IViewObject2 en IViewObjectEx kan een besturingselement rechtstreeks worden weergegeven en kan een adviessink worden gemaakt en beheerd om de container op de hoogte te stellen van wijzigingen in het besturingselementscherm. De IViewObjectEx interface biedt ondersteuning voor uitgebreide besturingsfuncties, zoals flikkervrije tekening, niet-rechthoekige en transparante besturingselementen en druktests (bijvoorbeeld hoe dicht een muisklik moet worden overwogen op het besturingselement). Klasse IViewObjectExImpl biedt een standaard implementatie van deze interfaces en implementeert IUnknown door informatie te verzenden naar het dumpapparaat in builds voor foutopsporing.

Overnamehiërarchie

IViewObjectEx

IViewObjectExImpl

Requirements

Koptekst: atlctl.h

IViewObjectExImpl::D raw

Hiermee tekent u een weergave van het besturingselement op een apparaatcontext.

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 */);

Opmerkingen

Met deze methode wordt CComControl::OnDrawAdvanced de methode van OnDraw uw besturingsklasse aangeroepen. Er OnDraw wordt automatisch een methode aan uw besturingsklasse toegevoegd wanneer u uw besturingselement maakt met de wizard ATL-beheer. De standaardinstelling OnDraw van de wizard tekent een rechthoek met het label 'ATL 3.0'.

Zie IViewObject::D raw in de Windows SDK.

IViewObjectExImpl::Freeze

Blokkeert de getekende weergave van een besturingselement, zodat deze pas verandert als een Unfreeze. De ATL-implementatie retourneert E_NOTIMPL.

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

Opmerkingen

Zie IViewObject::Freeze in de Windows SDK.

IViewObjectExImpl::GetAdvise

Hiermee haalt u een bestaande adviessinkverbinding op voor het besturingselement, indien aanwezig.

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

Opmerkingen

De adviessink wordt opgeslagen in het lid CComControlBase::m_spAdviseSink van de controleklasse.

Zie IViewObject::GetAdvise in de Windows SDK.

IViewObjectExImpl::GetColorSet

Retourneert het logische palet dat wordt gebruikt door het besturingselement voor tekenen. De ATL-implementatie retourneert E_NOTIMPL.

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

Opmerkingen

Zie IViewObject::GetColorSet in de Windows SDK.

IViewObjectExImpl::GetExtent

Haalt de weergavegrootte van het besturingselement op in HIMETRIC-eenheden (0,01 millimeter per eenheid) van het lid CComControlBase::m_sizeExtent van de controleklasse.

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

Opmerkingen

Zie IViewObject2::GetExtent in de Windows SDK.

IViewObjectExImpl::GetNaturalExtent

Biedt hints voor de grootte van de container voor het object dat moet worden gebruikt wanneer de gebruiker de grootte ervan wijzigt.

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

Opmerkingen

Als dwAspect DVASPECT_CONTENT is en pExtentInfo-dwExtentMode> is DVEXTENT_CONTENT, stelt u * psizel in op het gegevenslid CComControlBase::m_sizeNatural van de besturingsklasse. Retourneert anders een fout HRESULT.

Zie IViewObjectEx::GetNaturalExtent in de Windows SDK.

IViewObjectExImpl::GetRect

Hiermee wordt een rechthoek geretourneerd die een aangevraagd tekenaspect beschrijft. De ATL-implementatie retourneert E_NOTIMPL.

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

Opmerkingen

Zie IViewObjectEx::GetRect in de Windows SDK.

IViewObjectExImpl::GetViewStatus

Retourneert informatie over de ondoorzichtigheid van het object en welke tekenaspecten worden ondersteund.

STDMETHOD(GetViewStatus)(DWORD* pdwStatus);

Opmerkingen

ATL-sets pdwStatus geven standaard aan dat het besturingselement ondersteuning biedt voor VIEWSTATUS_OPAQUE (mogelijke waarden staan in de opsomming VIEWSTATUS ).

Zie IViewObjectEx::GetViewStatus in de Windows SDK.

IViewObjectExImpl::QueryHitPoint

Controleert of het opgegeven punt zich in de opgegeven rechthoek bevindt en retourneert een HITRESULT-waarde in pHitResult.

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

Opmerkingen

De waarde kan HITRESULT_HIT of HITRESULT_OUTSIDE zijn.

Als dwAspect deze gelijk is aan DVASPECT_CONTENT, retourneert de methode S_OK. Anders retourneert de methode E_FAIL.

Zie IViewObjectEx::QueryHitPoint in de Windows SDK.

IViewObjectExImpl::QueryHitRect

Controleert of de weergaverechthoek van het besturingselement elk punt in de opgegeven locatierechthoek overlapt en retourneert een HITRESULT-waarde in pHitResult.

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

Opmerkingen

De waarde kan HITRESULT_HIT of HITRESULT_OUTSIDE zijn.

Als dwAspect deze gelijk is aan DVASPECT_CONTENT, retourneert de methode S_OK. Anders retourneert de methode E_FAIL.

Zie IViewObjectEx::QueryHitRect in de Windows SDK.

IViewObjectExImpl::SetAdvise

Hiermee stelt u een verbinding tussen het besturingselement en een adviessink in, zodat de sink kan worden geïnformeerd over wijzigingen in de weergave van het besturingselement.

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

Opmerkingen

De aanwijzer naar de IAdviseSink-interface op de adviessink wordt opgeslagen in de controleklassegegevenslid CComControlBase::m_spAdviseSink.

Zie IViewObject::SetAdvise in de Windows SDK.

IViewObjectExImpl::Blokkering opheffen

De blokkering van de getekende weergave van het besturingselement opheffen. De ATL-implementatie retourneert E_NOTIMPL.

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

Opmerkingen

Zie IViewObject::Unfreeze in de Windows SDK.

IWorkerThreadClient::CloseHandle

Implementeer deze methode om de ingang te sluiten die aan dit object is gekoppeld.

HRESULT CloseHandle(HANDLE hHandle);

Parameterwaarden

hHandle
De handgreep die moet worden gesloten.

Retourwaarde

Retourneer S_OK over geslaagd of een fout HRESULT bij een fout.

Opmerkingen

De handle die aan deze methode is doorgegeven, is eerder gekoppeld aan dit object door een aanroep naar CWorkerThread::AddHandle.

Example

De volgende code toont een eenvoudige implementatie van 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

Implementeer deze methode om code uit te voeren wanneer de greep die aan dit object is gekoppeld, wordt gesignaleerd.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parameterwaarden

dwParam
De gebruikersparameter.

hObject
De greep die is gesignaleerd.

Retourwaarde

Retourneer S_OK over geslaagd of een fout HRESULT bij een fout.

Opmerkingen

De handle en DWORD/pointer die aan deze methode zijn doorgegeven, zijn eerder gekoppeld aan dit object door een aanroep naar CWorkerThread::AddHandle.

Example

De volgende code toont een eenvoudige implementatie van 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;
}

Zie ook

CComControl-klasse
ActiveX-besturingsinterfaces
Handleiding
Een ATL-project maken
Overzicht van klassen