Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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