IViewObjectExImpl – třída
Tato třída implementuje IUnknown
a poskytuje výchozí implementace IViewObject, IViewObject2 a IViewObjectEx rozhraní.
Důležité
Tuto třídu a její členy nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
Syntaxe
template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
: public IViewObjectEx
Parametry
T
Vaše třída odvozená z IViewObjectExImpl
.
Členové
Veřejné metody
Název | Popis |
---|---|
IViewObjectExImpl::D raw | Nakreslí reprezentaci ovládacího prvku do kontextu zařízení. |
IViewObjectExImpl::Freeze | Zablokuje vykreslenou reprezentaci ovládacího prvku, takže se nezmění, dokud se nezmění .Unfreeze Implementace ATL vrátí E_NOTIMPL. |
IViewObjectExImpl::GetAdvise | Načte existující připojení jímky poradce pro ovládací prvek, pokud existuje. |
IViewObjectExImpl::GetColorSet | Vrátí logickou paletu používanou ovládacím prvku pro kreslení. Implementace ATL vrátí E_NOTIMPL. |
IViewObjectExImpl::GetExtent | Načte velikost zobrazení ovládacího prvku v jednotkách HIMETRIC (0,01 milimetru na jednotku) z datového členu třídy ovládacího prvku CComControlBase::m_sizeExtent. |
IViewObjectExImpl::GetNaturalExtent | Poskytuje rady pro změnu velikosti z kontejneru pro objekt, který se má použít při změně velikosti uživatele. |
IViewObjectExImpl::GetRect | Vrátí obdélník popisující požadovaný aspekt výkresu. Implementace ATL vrátí E_NOTIMPL. |
IViewObjectExImpl::GetViewStatus | Vrátí informace o neprůhlednosti objektu a podporovaných aspektech výkresu. |
IViewObjectExImpl::QueryHitPoint | Zkontroluje, zda je zadaný bod v zadaném obdélníku a vrátí hodnotu HITRESULT v pHitResult . |
IViewObjectExImpl::QueryHitRect | Zkontroluje, zda se obdélník zobrazení ovládacího prvku překrývají libovolný bod v zadaném obdélníku umístění a vrátí hodnotu HITRESULT v pHitResult . |
IViewObjectExImpl::SetAdvise | Nastaví spojení mezi ovládacím prvku a jímkou rady, aby bylo možné jímku informovat o změnách v zobrazení ovládacího prvku. |
IViewObjectExImpl::Unfreeze | Odblokuje vykreslenou reprezentaci ovládacího prvku. Implementace ATL vrátí E_NOTIMPL. |
Poznámky
Rozhraní IViewObject, IViewObject2 a IViewObjectEx umožňují ovládací prvek zobrazit sám sebe přímo a vytvořit a spravovat jímku, která informuje kontejner o změnách v zobrazení ovládacího prvku. Rozhraní IViewObjectEx
poskytuje podporu rozšířených ovládacích prvků, jako je blikající kreslení bez obdélníku a průhledné ovládací prvky, a testování hit-testing (například jak zavřít kliknutí myší musí být považováno za ovládací prvek). Třída IViewObjectExImpl
poskytuje výchozí implementaci těchto rozhraní a implementuje IUnknown
odesláním informací do zařízení s výpisem paměti v buildech ladění.
Hierarchie dědičnosti
IViewObjectEx
IViewObjectExImpl
Požadavky
Hlavička: atlctl.h
IViewObjectExImpl::D raw
Nakreslí reprezentaci ovládacího prvku do kontextu zařízení.
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 */);
Poznámky
Tato metoda volá CComControl::OnDrawAdvanced
metodu OnDraw
třídy řízení. Metoda OnDraw
se automaticky přidá do třídy řízení při vytváření ovládacího prvku pomocí Průvodce ovládacími prvky ATL. Ve výchozím nastavení OnDraw
Průvodce nakreslí obdélník s popiskem ATL 3.0.
Viz IViewObject::D raw v sadě Windows SDK.
IViewObjectExImpl::Freeze
Zablokuje vykreslenou reprezentaci ovládacího prvku, takže se nezmění, dokud se nezmění .Unfreeze
Implementace ATL vrátí E_NOTIMPL.
STDMETHOD(Freeze)(
DWORD /* dwAspect */,
LONG /* lindex */,
void* /* pvAspect */,
DWORD* /* pdwFreeze */);
Poznámky
Viz IViewObject::Freeze v sadě Windows SDK.
IViewObjectExImpl::GetAdvise
Načte existující připojení jímky poradce pro ovládací prvek, pokud existuje.
STDMETHOD(GetAdvise)(
DWORD* /* pAspects */,
DWORD* /* pAdvf */,
IAdviseSink** /* ppAdvSink */);
Poznámky
Informační jímka je uložena v datovém členu třídy ovládacího prvku CComControlBase::m_spAdviseSink.
Viz IViewObject::GetAdvise v sadě Windows SDK.
IViewObjectExImpl::GetColorSet
Vrátí logickou paletu používanou ovládacím prvku pro kreslení. Implementace ATL vrátí E_NOTIMPL.
STDMETHOD(GetColorSet)(
DWORD /* dwAspect */,
LONG /* lindex */,
void* /* pvAspect */,
DVTARGETDEVICE* /* ptd */,
HDC /* hicTargetDevice */,
LOGPALETTE** /* ppColorSet */);
Poznámky
Viz IViewObject::GetColorSet v sadě Windows SDK.
IViewObjectExImpl::GetExtent
Načte velikost zobrazení ovládacího prvku v jednotkách HIMETRIC (0,01 milimetru na jednotku) z datového členu třídy ovládacího prvku CComControlBase::m_sizeExtent.
STDMETHOD(GetExtent)(
DWORD /* dwDrawAspect */,
LONG /* lindex */,
DVTARGETDEVICE* /* ptd */,
LPSIZEL* lpsizel);
Poznámky
Viz IViewObject2::GetExtent v sadě Windows SDK.
IViewObjectExImpl::GetNaturalExtent
Poskytuje rady pro změnu velikosti z kontejneru pro objekt, který se má použít při změně velikosti uživatele.
STDMETHOD(GetNaturalExtent)(
DWORD dwAspect,
LONG /* lindex */,
DVTARGETDEVICE* /* ptd */,
HDC /* hicTargetDevice */,
DVEXTENTINFO* pExtentInfo,
LPSIZEL psizel);
Poznámky
Pokud dwAspect
je DVASPECT_CONTENT a pExtentInfo-dwExtentMode> je DVEXTENT_CONTENT, nastaví * psizel
na datový člen třídy ovládacího prvku CComControlBase::m_sizeNatural. V opačném případě vrátí chybu HRESULT.
Viz IViewObjectEx::GetNaturalExtent v sadě Windows SDK.
IViewObjectExImpl::GetRect
Vrátí obdélník popisující požadovaný aspekt výkresu. Implementace ATL vrátí E_NOTIMPL.
STDMETHOD(GetRect)(DWORD /* dwAspect */, LPRECTL /* pRect */);
Poznámky
Viz IViewObjectEx::GetRect v sadě Windows SDK.
IViewObjectExImpl::GetViewStatus
Vrátí informace o neprůhlednosti objektu a podporovaných aspektech výkresu.
STDMETHOD(GetViewStatus)(DWORD* pdwStatus);
Poznámky
AtL pdwStatus
ve výchozím nastavení určuje, že ovládací prvek podporuje VIEWSTATUS_OPAQUE (možné hodnoty jsou ve výčtu VIEWSTATUS ).
Viz IViewObjectEx::GetViewStatus v sadě Windows SDK.
IViewObjectExImpl::QueryHitPoint
Zkontroluje, zda je zadaný bod v zadaném obdélníku a vrátí hodnotu HITRESULT v pHitResult
.
STDMETHOD(QueryHitPoint)(
DWORD dwAspect,
LPCRECT pRectBounds,
POINT ptlLoc,
LONG /* lCloseHit */,
DWORD* /* pHitResult */);
Poznámky
Hodnota může být HITRESULT_HIT nebo HITRESULT_OUTSIDE.
Pokud dwAspect
se rovná DVASPECT_CONTENT, vrátí metoda S_OK. V opačném případě metoda vrátí E_FAIL.
Viz IViewObjectEx::QueryHitPoint v sadě Windows SDK.
IViewObjectExImpl::QueryHitRect
Zkontroluje, zda se obdélník zobrazení ovládacího prvku překrývají libovolný bod v zadaném obdélníku umístění a vrátí hodnotu HITRESULT v pHitResult
.
STDMETHOD(QueryHitRect)(
DWORD dwAspect,
LPCRECT pRectBounds,
LPRECT prcLoc,
LONG /* lCloseHit */,
DWORD* /* pHitResult */);
Poznámky
Hodnota může být HITRESULT_HIT nebo HITRESULT_OUTSIDE.
Pokud dwAspect
se rovná DVASPECT_CONTENT, vrátí metoda S_OK. V opačném případě metoda vrátí E_FAIL.
Viz IViewObjectEx::QueryHitRect v sadě Windows SDK.
IViewObjectExImpl::SetAdvise
Nastaví spojení mezi ovládacím prvku a jímkou rady, aby bylo možné jímku informovat o změnách v zobrazení ovládacího prvku.
STDMETHOD(SetAdvise)(
DWORD /* aspects */,
DWORD /* advf */,
IAdviseSink* pAdvSink);
Poznámky
Ukazatel na rozhraní IAdviseSink na jímce rady je uložen v datovém členu třídy ovládacího prvku CComControlBase::m_spAdviseSink.
Viz IViewObject::SetAdvise v sadě Windows SDK.
IViewObjectExImpl::Unfreeze
Odblokuje vykreslenou reprezentaci ovládacího prvku. Implementace ATL vrátí E_NOTIMPL.
STDMETHOD(Unfreeze)(DWORD /* dwFreeze */);
Poznámky
Viz IViewObject::Unfreeze v sadě Windows SDK.
IWorkerThreadClient::CloseHandle
Implementujte tuto metodu pro zavření popisovače přidruženého k tomuto objektu.
HRESULT CloseHandle(HANDLE hHandle);
Parametry
hHandle
Úchyt, který se má zavřít.
Návratová hodnota
Vraťte S_OK při úspěchu nebo chybu HRESULT při selhání.
Poznámky
Popisovač předaný této metodě byl dříve přidružen k tomuto objektu voláníM CWorkerThread::AddHandle.
Příklad
Následující kód ukazuje jednoduchou implementaci 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
Implementujte tuto metodu pro spuštění kódu, když obslužná rutina přidružená k tomuto objektu se stane signalizovat.
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);
Parametry
dwParam
Parametr uživatele.
hObject
Popisovač, který byl signalován.
Návratová hodnota
Vraťte S_OK při úspěchu nebo chybu HRESULT při selhání.
Poznámky
Popisovač a ukazatel DWORD/ukazatel předaný této metodě byly dříve přidruženy k tomuto objektu voláním CWorkerThread::AddHandle.
Příklad
Následující kód ukazuje jednoduchou implementaci 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;
}
Viz také
CComControl – třída
Rozhraní ovládacích prvků ActiveX
Kurz
Vytvoření projektu ATL
Přehled třídy