Bagikan melalui


Kelas IViewObjectExImpl

Kelas ini mengimplementasikan IUnknown dan menyediakan implementasi default antarmuka IViewObject, IViewObject2, dan IViewObjectEx .

Penting

Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.

Sintaks

template<class T>
class ATL_NO_VTABLE IViewObjectExImpl
   : public IViewObjectEx

Parameter

T
Kelas Anda, berasal dari IViewObjectExImpl.

Anggota

Metode Publik

Nama Deskripsi
IViewObjectExImpl::D raw Menggambar representasi kontrol ke konteks perangkat.
IViewObjectExImpl::Freeze Membekukan representasi kontrol yang digambar sehingga tidak akan berubah hingga Unfreeze. Implementasi ATL mengembalikan E_NOTIMPL.
IViewObjectExImpl::GetAdvise Mengambil koneksi sink saran yang ada pada kontrol, jika ada.
IViewObjectExImpl::GetColorSet Mengembalikan palet logis yang digunakan oleh kontrol untuk menggambar. Implementasi ATL mengembalikan E_NOTIMPL.
IViewObjectExImpl::GetExtent Mengambil ukuran tampilan kontrol dalam unit HIMETRIC (0,01 milimeter per unit) dari anggota data kelas kontrol CComControlBase::m_sizeExtent.
IViewObjectExImpl::GetNaturalExtent Menyediakan petunjuk ukuran dari kontainer untuk digunakan objek saat pengguna mengubah ukurannya.
IViewObjectExImpl::GetRect Mengembalikan persegi panjang yang menjelaskan aspek gambar yang diminta. Implementasi ATL mengembalikan E_NOTIMPL.
IViewObjectExImpl::GetViewStatus Mengembalikan informasi tentang keburaman objek dan aspek gambar apa yang didukung.
IViewObjectExImpl::QueryHitPoint Memeriksa apakah titik yang ditentukan berada dalam persegi panjang yang ditentukan dan mengembalikan nilai HITRESULT di pHitResult.
IViewObjectExImpl::QueryHitRect Memeriksa apakah persegi panjang tampilan kontrol tumpang tindih dengan titik mana pun di persegi lokasi yang ditentukan dan mengembalikan nilai HITRESULT di pHitResult.
IViewObjectExImpl::SetAdvise Menyiapkan koneksi antara kontrol dan sink saran sehingga sink dapat diberi tahu tentang perubahan dalam tampilan kontrol.
IViewObjectExImpl::Unfreeze Membuka representasi kontrol yang digambar. Implementasi ATL mengembalikan E_NOTIMPL.

Keterangan

Antarmuka IViewObject, IViewObject2, dan IViewObjectEx memungkinkan kontrol untuk menampilkan dirinya sendiri secara langsung, dan untuk membuat dan mengelola sink saran untuk memberi tahu kontainer perubahan dalam tampilan kontrol. Antarmuka IViewObjectEx menyediakan dukungan untuk fitur kontrol yang diperluas seperti gambar bebas kedap, kontrol non-persegi panjang dan transparan, dan pengujian hit (misalnya, seberapa dekat klik mouse harus dipertimbangkan pada kontrol). Kelas IViewObjectExImpl menyediakan implementasi default antarmuka dan implementasi IUnknown ini dengan mengirim informasi ke perangkat cadangan dalam build debug.

Hierarki Warisan

IViewObjectEx

IViewObjectExImpl

Persyaratan

Header: atlctl.h

IViewObjectExImpl::D raw

Menggambar representasi kontrol ke konteks perangkat.

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

Keterangan

Metode ini memanggil CComControl::OnDrawAdvanced yang pada gilirannya OnDraw memanggil metode kelas kontrol Anda. Metode OnDraw secara otomatis ditambahkan ke kelas kontrol Saat Anda membuat kontrol dengan Wizard Kontrol ATL. Default Wizard OnDraw menggambar persegi panjang dengan label "ATL 3.0".

Lihat IViewObject::D raw di Windows SDK.

IViewObjectExImpl::Freeze

Membekukan representasi kontrol yang digambar sehingga tidak akan berubah hingga Unfreeze. Implementasi ATL mengembalikan E_NOTIMPL.

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

Keterangan

Lihat IViewObject::Freeze di Windows SDK.

IViewObjectExImpl::GetAdvise

Mengambil koneksi sink saran yang ada pada kontrol, jika ada.

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

Keterangan

Sink saran disimpan di anggota data kelas kontrol CComControlBase::m_spAdviseSink.

Lihat IViewObject::GetAdvise di Windows SDK.

IViewObjectExImpl::GetColorSet

Mengembalikan palet logis yang digunakan oleh kontrol untuk menggambar. Implementasi ATL mengembalikan E_NOTIMPL.

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

Keterangan

Lihat IViewObject::GetColorSet di Windows SDK.

IViewObjectExImpl::GetExtent

Mengambil ukuran tampilan kontrol dalam unit HIMETRIC (0,01 milimeter per unit) dari anggota data kelas kontrol CComControlBase::m_sizeExtent.

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

Keterangan

Lihat IViewObject2::GetExtent di Windows SDK.

IViewObjectExImpl::GetNaturalExtent

Menyediakan petunjuk ukuran dari kontainer untuk digunakan objek saat pengguna mengubah ukurannya.

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

Keterangan

Jika dwAspect DVASPECT_CONTENT dan pExtentInfo-dwExtentMode> DVEXTENT_CONTENT, atur * psizel ke anggota data kelas kontrol CComControlBase::m_sizeNatural. Jika tidak, mengembalikan kesalahan HRESULT.

Lihat IViewObjectEx::GetNaturalExtent di Windows SDK.

IViewObjectExImpl::GetRect

Mengembalikan persegi panjang yang menjelaskan aspek gambar yang diminta. Implementasi ATL mengembalikan E_NOTIMPL.

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

Keterangan

Lihat IViewObjectEx::GetRect di Windows SDK.

IViewObjectExImpl::GetViewStatus

Mengembalikan informasi tentang keburaman objek dan aspek gambar apa yang didukung.

STDMETHOD(GetViewStatus)(DWORD* pdwStatus);

Keterangan

Secara default, SET pdwStatus ATL untuk menunjukkan bahwa kontrol mendukung VIEWSTATUS_OPAQUE (nilai yang mungkin ada dalam enumerasi VIEWSTATUS ).

Lihat IViewObjectEx::GetViewStatus di Windows SDK.

IViewObjectExImpl::QueryHitPoint

Memeriksa apakah titik yang ditentukan berada dalam persegi panjang yang ditentukan dan mengembalikan nilai HITRESULT di pHitResult.

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

Keterangan

Nilai dapat berupa HITRESULT_HIT atau HITRESULT_OUTSIDE.

Jika dwAspect sama dengan DVASPECT_CONTENT, metode mengembalikan S_OK. Jika tidak, metode mengembalikan E_FAIL.

Lihat IViewObjectEx::QueryHitPoint di Windows SDK.

IViewObjectExImpl::QueryHitRect

Memeriksa apakah persegi panjang tampilan kontrol tumpang tindih dengan titik mana pun di persegi lokasi yang ditentukan dan mengembalikan nilai HITRESULT di pHitResult.

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

Keterangan

Nilai dapat berupa HITRESULT_HIT atau HITRESULT_OUTSIDE.

Jika dwAspect sama dengan DVASPECT_CONTENT, metode mengembalikan S_OK. Jika tidak, metode mengembalikan E_FAIL.

Lihat IViewObjectEx::QueryHitRect di Windows SDK.

IViewObjectExImpl::SetAdvise

Menyiapkan koneksi antara kontrol dan sink saran sehingga sink dapat diberi tahu tentang perubahan dalam tampilan kontrol.

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

Keterangan

Penunjuk ke antarmuka IAdviseSink pada sink saran disimpan di anggota data kelas kontrol CComControlBase::m_spAdviseSink.

Lihat IViewObject::SetAdvise di Windows SDK.

IViewObjectExImpl::Unfreeze

Membuka representasi kontrol yang digambar. Implementasi ATL mengembalikan E_NOTIMPL.

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

Keterangan

Lihat IViewObject::Unfreeze di Windows SDK.

IWorkerThreadClient::CloseHandle

Terapkan metode ini untuk menutup handel yang terkait dengan objek ini.

HRESULT CloseHandle(HANDLE hHandle);

Parameter

hHandle
Handel yang akan ditutup.

Tampilkan Nilai

Mengembalikan S_OK pada keberhasilan, atau kesalahan HRESULT pada kegagalan.

Keterangan

Handel yang diteruskan ke metode ini sebelumnya dikaitkan dengan objek ini dengan panggilan ke CWorkerThread::AddHandle.

Contoh

Kode berikut menunjukkan implementasi sederhana dari 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

Terapkan metode ini untuk menjalankan kode ketika handel yang terkait dengan objek ini menjadi sinyal.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parameter

dwParam
Parameter pengguna.

hObject
Pegangan yang telah menjadi sinyal.

Tampilkan Nilai

Mengembalikan S_OK pada keberhasilan, atau kesalahan HRESULT pada kegagalan.

Keterangan

Handel dan DWORD/pointer yang diteruskan ke metode ini sebelumnya dikaitkan dengan objek ini dengan panggilan ke CWorkerThread::AddHandle.

Contoh

Kode berikut menunjukkan implementasi sederhana dari 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;
}

Lihat juga

Kelas CComControl
Antarmuka Kontrol ActiveX
Tutorial
Membuat Proyek ATL
Gambaran Umum Kelas