Kelas CComControl
Kelas ini menyediakan metode untuk membuat dan mengelola kontrol ATL.
Penting
Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.
Sintaks
template <class T, class WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
public WinBase;
Parameter
T
Kelas yang mengimplementasikan kontrol.
WinBase
Kelas dasar yang mengimplementasikan fungsi windowing. Default ke CWindowImpl.
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CComControl::CComControl | Konstruktor. |
Metode Publik
Nama | Deskripsi |
---|---|
CComControl::ControlQueryInterface | Mengambil penunjuk ke antarmuka yang diminta. |
CComControl::CreateControlWindow | Membuat jendela untuk kontrol. |
CComControl::FireOnChanged | Memberi tahu sink kontainer bahwa properti kontrol telah berubah. |
CComControl::FireOnRequestEdit | Memberi tahu sink kontainer bahwa properti kontrol akan berubah dan bahwa objek menanyakan kepada sink cara melanjutkan. |
CComControl::MessageBox | Panggil metode ini untuk membuat, menampilkan, dan mengoperasikan kotak pesan. |
Keterangan
CComControl
adalah sekumpulan fungsi pembantu kontrol yang berguna dan anggota data penting untuk kontrol ATL. Saat Anda membuat kontrol standar atau kontrol DHTML menggunakan Wizard Kontrol ATL, wizard akan secara otomatis memperoleh kelas Anda dari CComControl
. CComControl
memperoleh sebagian besar metodenya dari CComControlBase.
Untuk informasi selengkapnya tentang membuat kontrol, lihat Tutorial ATL. Untuk informasi selengkapnya tentang Wizard Proyek ATL, lihat artikel Membuat Proyek ATL.
Untuk demonstrasi CComControl
metode dan anggota data, lihat sampel CIRC .
Hierarki Warisan
WinBase
CComControl
Persyaratan
Header: atlctl.h
CComControl::CComControl
Konstruktor.
CComControl();
Keterangan
Memanggil konstruktor CComControlBase, meneruskan anggota data yang m_hWnd
diwarisi melalui CWindowImpl.
CComControl::ControlQueryInterface
Mengambil penunjuk ke antarmuka yang diminta.
virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);
Parameter
iid
[di] GUID antarmuka yang diminta.
ppv
[out] Penunjuk ke penunjuk antarmuka yang diidentifikasi oleh iid, atau NULL jika antarmuka tidak ditemukan.
Keterangan
Hanya menangani antarmuka dalam tabel peta COM.
Contoh
// Retrieve the control's IOleObject interface. Note interface
// is automatically released when pOleObject goes out of scope
CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);
CComControl::CreateControlWindow
Secara default, membuat jendela untuk kontrol dengan memanggil CWindowImpl::Create
.
virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);
Parameter
hWndParent
[di] Tangani ke jendela induk atau pemilik. Handel jendela yang valid harus disediakan. Jendela kontrol terbatas pada area jendela induknya.
rcPos
[di] Ukuran awal dan posisi jendela yang akan dibuat.
Keterangan
Ambil alih metode ini jika Anda ingin melakukan sesuatu selain membuat satu jendela, misalnya, untuk membuat dua jendela, salah satunya menjadi toolbar untuk kontrol Anda.
Contoh
RECT rc = {10,10,210,110};
HWND hwndParent, hwndControl;
// get HWND of control's parent window from IOleInPlaceSite interface
m_spInPlaceSite->GetWindow(&hwndParent);
hwndControl = CreateControlWindow(hwndParent, rc);
CComControl::FireOnChanged
Memberi tahu sink kontainer bahwa properti kontrol telah berubah.
HRESULT FireOnChanged(DISPID dispID);
Parameter
dispID
[di] Pengidentifikasi properti yang telah berubah.
Tampilkan Nilai
Salah satu nilai HRESULT standar.
Keterangan
Jika kelas kontrol Anda berasal dari IPropertyNotifySink, metode ini memanggil CFirePropNotifyEvent::FireOnChanged untuk memberi tahu semua antarmuka yang terhubung IPropertyNotifySink
bahwa properti kontrol yang ditentukan telah berubah. Jika kelas kontrol Anda tidak berasal dari IPropertyNotifySink
, metode ini mengembalikan S_OK.
Metode ini aman untuk dipanggil meskipun kontrol Anda tidak mendukung titik koneksi.
Contoh
STDMETHODIMP CMyControl::put_MyText(BSTR newVal)
{
// store newVal in CComBstr member
m_bstrMyText = newVal;
// note the DISPID for the MyText property is 3 in this example
FireOnChanged(3);
return S_OK;
}
CComControl::FireOnRequestEdit
Memberi tahu sink kontainer bahwa properti kontrol akan berubah dan bahwa objek menanyakan kepada sink cara melanjutkan.
HRESULT FireOnRequestEdit(DISPID dispID);
Parameter
dispID
[di] Pengidentifikasi properti akan berubah.
Tampilkan Nilai
Salah satu nilai HRESULT standar.
Keterangan
Jika kelas kontrol Anda berasal dari IPropertyNotifySink, metode ini memanggil CFirePropNotifyEvent::FireOnRequestEdit untuk memberi tahu semua antarmuka yang terhubung IPropertyNotifySink
bahwa properti kontrol yang ditentukan akan berubah. Jika kelas kontrol Anda tidak berasal dari IPropertyNotifySink
, metode ini mengembalikan S_OK.
Metode ini aman untuk dipanggil meskipun kontrol Anda tidak mendukung titik koneksi.
Contoh
STDMETHODIMP CMyControl::put_MyTitle(BSTR newVal)
{
// the DISPID for MyTitle in this example is 4
DISPID dispID = 4;
// make sure we can change the property
if (FireOnRequestEdit(dispID) == S_FALSE)
return S_FALSE;
// store newVal in CComBstr member
m_bstrMyTitle = newVal;
// signal that the property has been changed
FireOnChanged(dispID);
return S_OK;
}
CComControl::MessageBox
Panggil metode ini untuk membuat, menampilkan, dan mengoperasikan kotak pesan.
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = _T(""),
UINT nType = MB_OK);
Parameter
lpszText
Teks yang akan ditampilkan dalam kotak pesan.
lpszCaption
Judul kotak dialog. Jika NULL (default), judul "Kesalahan" digunakan.
nType
Menentukan konten dan perilaku kotak dialog. Lihat entri MessageBox di dokumentasi Windows SDK untuk daftar kotak pesan lain yang tersedia. Default menyediakan tombol OK sederhana.
Tampilkan Nilai
Mengembalikan nilai bilangan bulat yang menentukan salah satu nilai item menu yang tercantum di bawah MessageBox dalam dokumentasi Windows SDK.
Keterangan
MessageBox
berguna baik selama pengembangan maupun sebagai cara mudah untuk menampilkan kesalahan atau pesan peringatan kepada pengguna.
Lihat juga
Kelas CWindowImpl
Gambaran Umum Kelas
Kelas CComControlBase
Kelas CComCompositeControl