Aracılığıyla paylaş


IViewObjectExImpl Sınıfı

Bu sınıf IViewObject, IViewObject2 ve IViewObjectEx arabirimlerinin varsayılan uygulamalarını uygular IUnknown ve sağlar.

Önemli

Bu sınıf ve üyeleri Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.

Sözdizimi

template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
   : public IViewObjectEx

Parametreler

T
sınıfından IViewObjectExImpltüretilen sınıfınız.

Üyeler

Genel Yöntemler

Veri Akışı Adı Açıklama
IViewObjectExImpl::D raw Denetimin bir gösterimini bir cihaz bağlamı üzerine çizer.
IViewObjectExImpl::Freeze Denetimin çizilmiş gösterimini dondurarak bir olana kadar Unfreezedeğişmesini sağlar. ATL uygulaması E_NOTIMPL döndürür.
IViewObjectExImpl::GetAdvise Varsa, denetimde mevcut bir öneri havuzu bağlantısını alır.
IViewObjectExImpl::GetColorSet Denetim tarafından çizim için kullanılan mantıksal paleti döndürür. ATL uygulaması E_NOTIMPL döndürür.
IViewObjectExImpl::GetExtent Denetim sınıfı veri üyesi CComControlBase::m_sizeExtent'ndan denetimin görüntü boyutunu HIMETRIC birimlerinde (birim başına 0,01 milimetre) alır.
IViewObjectExImpl::GetNaturalExtent Kullanıcı yeniden boyutlandırırken kullanılacak nesne için kapsayıcıdan boyutlandırma ipuçları sağlar.
IViewObjectExImpl::GetRect İstenen çizim yönünü açıklayan bir dikdörtgen döndürür. ATL uygulaması E_NOTIMPL döndürür.
IViewObjectExImpl::GetViewStatus Nesnenin opaklığı ve hangi çizim yönlerinin desteklendiği hakkında bilgi döndürür.
IViewObjectExImpl::QueryHitPoint Belirtilen noktanın belirtilen dikdörtgende olup olmadığını denetler ve içinde pHitResultbir HITRESULT değeri döndürür.
IViewObjectExImpl::QueryHitRect Denetimin görüntü dikdörtgeninin belirtilen konum dikdörtgenindeki herhangi bir noktayla çakışıp çakışmadığını denetler ve içinde pHitResultbir HITRESULT değeri döndürür.
IViewObjectExImpl::SetAdvise Havuza denetimin görünümündeki değişiklikler hakkında bildirim almak için denetim ile öneri havuzu arasında bir bağlantı ayarlar.
IViewObjectExImpl::Unfreeze Denetimin çizilmiş gösterimini çözer. ATL uygulaması E_NOTIMPL döndürür.

Açıklamalar

IViewObject, IViewObject2 ve IViewObjectEx arabirimleri, denetimin kendisini doğrudan görüntülemesine ve kapsayıcıya denetim görüntüsündeki değişiklikleri bildirmek için bir öneri havuzu oluşturup yönetmesine olanak tanır. Arabirim, IViewObjectEx titreşimsiz çizim, dikdörtgen olmayan ve saydam denetimler ve isabet testi gibi genişletilmiş denetim özellikleri için destek sağlar (örneğin, denetimde fare tıklamasının ne kadar yakın olması gerektiği). Sınıfı IViewObjectExImpl , bu arabirimlerin varsayılan uygulamasını sağlar ve hata ayıklama derlemelerinde IUnknown döküm cihazına bilgi göndererek uygular.

Devralma Hiyerarşisi

IViewObjectEx

IViewObjectExImpl

Gereksinimler

Üst bilgi: atlctl.h

IViewObjectExImpl::D raw

Denetimin bir gösterimini bir cihaz bağlamı üzerine çizer.

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

Açıklamalar

Bu yöntem, denetim sınıfınızın OnDraw yöntemini çağıran öğesini çağırırCComControl::OnDrawAdvanced. ATL Denetim Sihirbazı ile denetiminizi oluşturduğunuzda denetim sınıfınıza otomatik olarak bir OnDraw yöntem eklenir. Sihirbazın varsayılan ayarı OnDraw "ATL 3.0" etiketine sahip bir dikdörtgen çizer.

Bkz . Windows SDK'sında IViewObject::D raw .

IViewObjectExImpl::Freeze

Denetimin çizilmiş gösterimini dondurarak bir olana kadar Unfreezedeğişmesini sağlar. ATL uygulaması E_NOTIMPL döndürür.

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

Açıklamalar

Bkz . Windows SDK'sında IViewObject::Freeze .

IViewObjectExImpl::GetAdvise

Varsa, denetimde mevcut bir öneri havuzu bağlantısını alır.

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

Açıklamalar

Danışmanlık havuzu, denetim sınıfı veri üyesi CComControlBase::m_spAdviseSink içinde depolanır.

Bkz . Windows SDK'sında IViewObject::GetAdvise .

IViewObjectExImpl::GetColorSet

Denetim tarafından çizim için kullanılan mantıksal paleti döndürür. ATL uygulaması E_NOTIMPL döndürür.

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

Açıklamalar

Bkz . Windows SDK'sında IViewObject::GetColorSet .

IViewObjectExImpl::GetExtent

Denetim sınıfı veri üyesi CComControlBase::m_sizeExtent'ndan denetimin görüntü boyutunu HIMETRIC birimlerinde (birim başına 0,01 milimetre) alır.

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

Açıklamalar

Bkz . Windows SDK'sında IViewObject2::GetExtent .

IViewObjectExImpl::GetNaturalExtent

Kullanıcı yeniden boyutlandırırken kullanılacak nesne için kapsayıcıdan boyutlandırma ipuçları sağlar.

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

Açıklamalar

dwAspect DVASPECT_CONTENT ve pExtentInfo-dwExtentMode> DVEXTENT_CONTENT ise, * psizel değerini denetim sınıfının CComControlBase::m_sizeNatural veri üyesine ayarlar. Aksi takdirde, HRESULT hatası döndürür.

Bkz . Windows SDK'sında IViewObjectEx::GetNaturalExtent .

IViewObjectExImpl::GetRect

İstenen çizim yönünü açıklayan bir dikdörtgen döndürür. ATL uygulaması E_NOTIMPL döndürür.

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

Açıklamalar

Bkz . Windows SDK'sında IViewObjectEx::GetRect .

IViewObjectExImpl::GetViewStatus

Nesnenin opaklığı ve hangi çizim yönlerinin desteklendiği hakkında bilgi döndürür.

STDMETHOD(GetViewStatus)(DWORD* pdwStatus);

Açıklamalar

Varsayılan olarak, ATL denetimin VIEWSTATUS_OPAQUE desteklediğini belirtmek için ayarlar pdwStatus (olası değerler VIEWSTATUS numaralandırmasındadır).

Bkz . Windows SDK'sında IViewObjectEx::GetViewStatus .

IViewObjectExImpl::QueryHitPoint

Belirtilen noktanın belirtilen dikdörtgende olup olmadığını denetler ve içinde pHitResultbir HITRESULT değeri döndürür.

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

Açıklamalar

Değer HITRESULT_HIT veya HITRESULT_OUTSIDE olabilir.

DVASPECT_CONTENT eşitse dwAspect yöntemi S_OK döndürür. Aksi takdirde yöntemi E_FAIL döndürür.

Bkz . Windows SDK'sında IViewObjectEx::QueryHitPoint .

IViewObjectExImpl::QueryHitRect

Denetimin görüntü dikdörtgeninin belirtilen konum dikdörtgenindeki herhangi bir noktayla çakışıp çakışmadığını denetler ve içinde pHitResultbir HITRESULT değeri döndürür.

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

Açıklamalar

Değer HITRESULT_HIT veya HITRESULT_OUTSIDE olabilir.

DVASPECT_CONTENT eşitse dwAspect yöntemi S_OK döndürür. Aksi takdirde yöntemi E_FAIL döndürür.

Bkz . Windows SDK'sında IViewObjectEx::QueryHitRect .

IViewObjectExImpl::SetAdvise

Havuza denetimin görünümündeki değişiklikler hakkında bildirim almak için denetim ile öneri havuzu arasında bir bağlantı ayarlar.

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

Açıklamalar

Öneri havuzundaki IAdviseSink arabiriminin işaretçisi, denetim sınıfı veri üyesi CComControlBase::m_spAdviseSink içinde depolanır.

Bkz . Windows SDK'sında IViewObject::SetAdvise .

IViewObjectExImpl::Unfreeze

Denetimin çizilmiş gösterimini çözer. ATL uygulaması E_NOTIMPL döndürür.

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

Açıklamalar

Bkz . Windows SDK'sında IViewObject::Unfreeze .

IWorkerThreadClient::CloseHandle

Bu nesneyle ilişkili tanıtıcıyı kapatmak için bu yöntemi uygulayın.

HRESULT CloseHandle(HANDLE hHandle);

Parametreler

hHandle
Kapatılacak tanıtıcı.

Dönüş Değeri

Başarı durumunda S_OK veya hatada HRESULT hatası döndür.

Açıklamalar

Bu yönteme geçirilen tanıtıcı daha önce CWorkerThread::AddHandle çağrısıyla bu nesneyle ilişkilendirildi.

Örnek

Aşağıdaki kod basit bir uygulamasını IWorkerThreadClient::CloseHandlegösterir.

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

Bu nesneyle ilişkili tanıtıcı işaretlendiğinde kodu yürütmek için bu yöntemi uygulayın.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parametreler

dwParam
Kullanıcı parametresi.

hObject
İşaretlenen tanıtıcı.

Dönüş Değeri

Başarı durumunda S_OK veya hatada HRESULT hatası döndür.

Açıklamalar

Bu yönteme geçirilen tanıtıcı ve DWORD/işaretçisi daha önce CWorkerThread::AddHandle çağrısıyla bu nesneyle ilişkilendirildi.

Örnek

Aşağıdaki kod basit bir uygulamasını IWorkerThreadClient::Executegösterir.

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;
}

Ayrıca bkz.

CComControl Sınıfı
ActiveX Denetimleri Arabirimleri
Öğretici
ATL Projesi Oluşturma
Sınıfa Genel Bakış