Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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