Udostępnij za pośrednictwem


Klasa IViewObjectExImpl

Ta klasa implementuje IUnknown i udostępnia domyślne implementacje interfejsów IViewObject, IViewObject2 i IViewObjectEx .

Ważne

Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.

Składnia

template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
   : public IViewObjectEx

Parametry

T
Klasa pochodząca z IViewObjectExImplklasy .

Elementy członkowskie

Metody publiczne

Nazwa/nazwisko opis
IViewObjectExImpl::D raw Rysuje reprezentację kontrolki w kontekście urządzenia.
IViewObjectExImpl::Freeze Blokuje narysowaną reprezentację kontrolki, więc nie zmieni się, dopóki nie zmieni się .Unfreeze Implementacja ATL zwraca E_NOTIMPL.
IViewObjectExImpl::GetAdvise Pobiera istniejące połączenie ujścia porad w kontrolce, jeśli istnieje.
IViewObjectExImpl::GetColorSet Zwraca paletę logiczną używaną przez kontrolkę do rysowania. Implementacja ATL zwraca E_NOTIMPL.
IViewObjectExImpl::GetExtent Pobiera rozmiar wyświetlacza kontrolki w jednostkach HIMETRIC (0,01 milimetra na jednostkę) z składowej danych klasy kontrolnej CComControlBase::m_sizeExtent.
IViewObjectExImpl::GetNaturalExtent Udostępnia wskazówki dotyczące określania rozmiaru z kontenera, które mają być używane w miarę zmiany rozmiaru obiektu przez użytkownika.
IViewObjectExImpl::GetRect Zwraca prostokąt opisujący żądany aspekt rysunku. Implementacja ATL zwraca E_NOTIMPL.
IViewObjectExImpl::GetViewStatus Zwraca informacje o nieprzezroczystości obiektu i obsługiwanych aspektach rysunku.
IViewObjectExImpl::QueryHitPoint Sprawdza, czy określony punkt znajduje się w określonym prostokątze i zwraca wartość HITRESULT w .pHitResult
IViewObjectExImpl::QueryHitRect Sprawdza, czy prostokąt wyświetlania kontrolki nakłada się na dowolny punkt w określonym prostokątze lokalizacji i zwraca wartość HITRESULT w .pHitResult
IViewObjectExImpl::SetAdvise Konfiguruje połączenie między kontrolką a ujściem doradcy, aby można było powiadomić ujście o zmianach w widoku kontrolki.
IViewObjectExImpl::Unfreeze Odraża narysowaną reprezentację kontrolki. Implementacja ATL zwraca E_NOTIMPL.

Uwagi

Interfejsy IViewObject, IViewObject2 i IViewObjectEx umożliwiają bezpośrednie wyświetlanie kontrolki oraz tworzenie ujścia i zarządzanie nim w celu powiadamiania kontenera o zmianach w wyświetlaczu kontrolki. Interfejs IViewObjectEx zapewnia obsługę rozszerzonych funkcji sterowania, takich jak rysowanie bez migotania, nie prostokątne i przezroczyste kontrolki oraz testowanie trafień (na przykład sposób, w jaki należy wziąć pod uwagę kliknięcie myszy). Klasa IViewObjectExImpl udostępnia domyślną implementację tych interfejsów i implementuje IUnknown , wysyłając informacje do urządzenia zrzutu w kompilacjach debugowania.

Hierarchia dziedziczenia

IViewObjectEx

IViewObjectExImpl

Wymagania

Nagłówek: atlctl.h

IViewObjectExImpl::D raw

Rysuje reprezentację kontrolki w kontekście urządzenia.

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

Uwagi

Ta metoda wywołuje CComControl::OnDrawAdvanced metodę , która z kolei wywołuje metodę klasy kontrolnej OnDraw . OnDraw Metoda jest automatycznie dodawana do klasy kontrolki podczas tworzenia kontrolki za pomocą Kreatora formantów ATL. Domyślnie OnDraw kreator rysuje prostokąt z etykietą "ATL 3.0".

Zobacz IViewObject::D raw w zestawie Windows SDK.

IViewObjectExImpl::Freeze

Blokuje narysowaną reprezentację kontrolki, więc nie zmieni się, dopóki nie zmieni się .Unfreeze Implementacja ATL zwraca E_NOTIMPL.

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

Uwagi

Zobacz IViewObject::Freeze w zestawie Windows SDK.

IViewObjectExImpl::GetAdvise

Pobiera istniejące połączenie ujścia porad w kontrolce, jeśli istnieje.

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

Uwagi

Ujście porad jest przechowywane w skład składowej danych klasy kontrolnej CComControlBase::m_spAdviseSink.

Zobacz IViewObject::GetAdvise w zestawie Windows SDK.

IViewObjectExImpl::GetColorSet

Zwraca paletę logiczną używaną przez kontrolkę do rysowania. Implementacja ATL zwraca E_NOTIMPL.

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

Uwagi

Zobacz IViewObject::GetColorSet w zestawie Windows SDK.

IViewObjectExImpl::GetExtent

Pobiera rozmiar wyświetlacza kontrolki w jednostkach HIMETRIC (0,01 milimetra na jednostkę) z składowej danych klasy kontrolnej CComControlBase::m_sizeExtent.

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

Uwagi

Zobacz IViewObject2::GetExtent w zestawie Windows SDK.

IViewObjectExImpl::GetNaturalExtent

Udostępnia wskazówki dotyczące określania rozmiaru z kontenera, które mają być używane w miarę zmiany rozmiaru obiektu przez użytkownika.

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

Uwagi

Jeśli dwAspect parametr jest DVASPECT_CONTENT, a parametr pExtentInfo-dwExtentMode> jest DVEXTENT_CONTENT, ustawia * psizel na składową danych klasy kontrolnej CComControlBase::m_sizeNatural. W przeciwnym razie zwraca błąd HRESULT.

Zobacz IViewObjectEx::GetNaturalExtent w zestawie Windows SDK.

IViewObjectExImpl::GetRect

Zwraca prostokąt opisujący żądany aspekt rysunku. Implementacja ATL zwraca E_NOTIMPL.

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

Uwagi

Zobacz IViewObjectEx::GetRect w zestawie Windows SDK.

IViewObjectExImpl::GetViewStatus

Zwraca informacje o nieprzezroczystości obiektu i obsługiwanych aspektach rysunku.

STDMETHOD(GetViewStatus)(DWORD* pdwStatus);

Uwagi

Domyślnie zestawy pdwStatus ATL wskazują, że kontrolka obsługuje VIEWSTATUS_OPAQUE (możliwe wartości znajdują się w wyliczenie VIEWSTATUS ).

Zobacz IViewObjectEx::GetViewStatus w zestawie Windows SDK.

IViewObjectExImpl::QueryHitPoint

Sprawdza, czy określony punkt znajduje się w określonym prostokątze i zwraca wartość HITRESULT w .pHitResult

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

Uwagi

Wartość może być HITRESULT_HIT lub HITRESULT_OUTSIDE.

Jeśli dwAspect DVASPECT_CONTENT równa się, metoda zwraca S_OK. W przeciwnym razie metoda zwraca E_FAIL.

Zobacz IViewObjectEx::QueryHitPoint w zestawie Windows SDK.

IViewObjectExImpl::QueryHitRect

Sprawdza, czy prostokąt wyświetlania kontrolki nakłada się na dowolny punkt w określonym prostokątze lokalizacji i zwraca wartość HITRESULT w .pHitResult

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

Uwagi

Wartość może być HITRESULT_HIT lub HITRESULT_OUTSIDE.

Jeśli dwAspect DVASPECT_CONTENT równa się, metoda zwraca S_OK. W przeciwnym razie metoda zwraca E_FAIL.

Zobacz IViewObjectEx::QueryHitRect w zestawie Windows SDK.

IViewObjectExImpl::SetAdvise

Konfiguruje połączenie między kontrolką a ujściem doradcy, aby można było powiadomić ujście o zmianach w widoku kontrolki.

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

Uwagi

Wskaźnik do interfejsu IAdviseSink w ujściu doradcy jest przechowywany w skład składowej danych klasy kontrolnej CComControlBase::m_spAdviseSink.

Zobacz IViewObject::SetAdvise w zestawie Windows SDK.

IViewObjectExImpl::Unfreeze

Odraża narysowaną reprezentację kontrolki. Implementacja ATL zwraca E_NOTIMPL.

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

Uwagi

Zobacz IViewObject::Unfreeze w zestawie Windows SDK.

IWorkerThreadClient::CloseHandle

Zaimplementuj tę metodę, aby zamknąć uchwyt skojarzony z tym obiektem.

HRESULT CloseHandle(HANDLE hHandle);

Parametry

hHandle
Uchwyt do zamknięcia.

Wartość zwracana

Zwracanie S_OK powodzenia lub błąd HRESULT po niepowodzeniu.

Uwagi

Dojście przekazane do tej metody zostało wcześniej skojarzone z tym obiektem przez wywołanie elementu CWorkerThread::AddHandle.

Przykład

Poniższy kod przedstawia prostą implementację elementu 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

Zaimplementuj tę metodę, aby wykonać kod, gdy uchwyt skojarzony z tym obiektem zostanie zasygnalizowany.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parametry

dwParam
Parametr użytkownika.

hObject
Uchwyt, który stał się zasygnalizowany.

Wartość zwracana

Zwracanie S_OK powodzenia lub błąd HRESULT po niepowodzeniu.

Uwagi

Dojście i wskaźnik DWORD/wskaźnik przekazany do tej metody zostały wcześniej skojarzone z tym obiektem przez wywołanie metody CWorkerThread::AddHandle.

Przykład

Poniższy kod przedstawia prostą implementację elementu 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;
}

Zobacz też

Klasa CComControl
Interfejsy kontrolek ActiveX
Samouczek
Tworzenie projektu ATL
Omówienie klasy