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 IViewObjectExImpl
klasy .
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