Bagikan melalui


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

CComControlBase

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