Sdílet prostřednictvím


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

Jméno 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.

Vrácená 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.

Vrácená 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ů technologie ActiveX
Kurz
Vytvoření projektu ATL
Přehled třídy