Kelas CComCompositeControl
Kelas ini menyediakan metode yang diperlukan untuk menerapkan kontrol komposit.
Penting
Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.
Sintaks
template <class T>
class CComCompositeControl : public CComControl<T,CAxDialogImpl<T>>
Parameter
T
Kelas Anda, berasal dari CComObjectRoot atau CComObjectRootEx, serta dari antarmuka lain yang ingin Anda dukung untuk kontrol komposit Anda.
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CComCompositeControl::CComCompositeControl | Konstruktor. |
CComCompositeControl::~CComCompositeControl | Destruktor. |
Metode Publik
Nama | Deskripsi |
---|---|
CComCompositeControl::AdviseSinkMap | Panggil metode ini untuk menyarankan atau membatalkan penafsiran semua kontrol yang dihosting oleh kontrol komposit. |
CComCompositeControl::CalcExtent | Panggil metode ini untuk menghitung ukuran dalam unit HIMETRIC dari sumber daya dialog yang digunakan untuk menghosting kontrol komposit. |
CComCompositeControl::Create | Metode ini dipanggil untuk membuat jendela kontrol untuk kontrol komposit. |
CComCompositeControl::CreateControlWindow | Panggil metode ini untuk membuat jendela kontrol dan menyarankan kontrol yang dihosting. |
CComCompositeControl::SetBackgroundColorFromAmbient | Panggil metode ini untuk mengatur warna latar belakang kontrol komposit menggunakan warna latar belakang kontainer. |
Anggota Data Publik
Nama | Deskripsi |
---|---|
CComCompositeControl::m_hbrBackground | Kuas latar belakang. |
CComCompositeControl::m_hWndFocus | Handel jendela yang saat ini memiliki fokus. |
Keterangan
Kelas yang berasal dari kelas CComCompositeControl
mewarisi fungsionalitas kontrol komposit ActiveX. Kontrol ActiveX yang berasal dihosting CComCompositeControl
oleh kotak dialog standar. Jenis kontrol ini disebut kontrol komposit karena dapat menghosting kontrol lain (kontrol Windows asli dan kontrol ActiveX).
CComCompositeControl
mengidentifikasi sumber daya dialog yang akan digunakan dalam membuat kontrol komposit dengan mencari anggota data enumerasi di kelas anak. IDD anggota kelas anak ini diatur ke ID sumber daya sumber daya sumber daya dialog yang akan digunakan sebagai jendela kontrol. Berikut ini adalah contoh anggota data yang harus dimuat oleh CComCompositeControl
kelas untuk mengidentifikasi sumber daya dialog yang akan digunakan untuk jendela kontrol:
enum { IDD = IDD_MYCOMPOSITE };
Catatan
Kontrol komposit selalu merupakan kontrol berjendela, meskipun dapat berisi kontrol tanpa jendela.
Kontrol yang CComCompositeControl
diterapkan oleh kelas -turunan memiliki perilaku tab default bawaan. Ketika kontrol menerima fokus dengan ditab dalam aplikasi yang berisi, secara berturut-turut menekan tombol TAB akan menyebabkan fokus diputar melalui semua kontrol terkandung kontrol komposit, lalu keluar dari kontrol komposit dan ke item berikutnya dalam urutan tab kontainer. Urutan tab kontrol yang dihosting ditentukan oleh sumber daya dialog dan menentukan urutan tab yang akan terjadi.
Catatan
Agar akselerator berfungsi dengan baik dengan CComCompositeControl
, perlu memuat tabel akselerator saat kontrol dibuat, lewati handel dan jumlah akselerator kembali ke IOleControlImpl::GetControlInfo, dan akhirnya hancurkan tabel saat kontrol dirilis.
Contoh
// Example for overriding IOleControlImpl::GetControlInfo()
// This example uses the accelerator table from the project resources
// with the identifier IDR_ACCELTABLE
// Define GetControlInfo() in the header of your composite
// control class as follows:
STDMETHOD(GetControlInfo)(CONTROLINFO* pCI)
{
// Load the accelerator table from the resource
pCI->hAccel = LoadAccelerators(_AtlBaseModule.GetResourceInstance(),
MAKEINTRESOURCE(IDR_ACCELTABLE));
if (pCI->hAccel == NULL)
return E_FAIL;
// Get the number of accelerators in the table
pCI->cAccel = (USHORT)CopyAcceleratorTable(pCI->hAccel, NULL, 0);
// The following is optional if you want your control
// to process the return and/or escape keys
// pCI.dwFlags = CTRLINFO_EATS_RETURN | CTRLINFO_EATS_ESCAPE;
pCI->dwFlags = 0;
return S_OK;
}
Hierarki Warisan
WinBase
CComCompositeControl
Persyaratan
Header: atlctl.h
CComCompositeControl::AdviseSinkMap
Panggil metode ini untuk menyarankan atau membatalkan penafsiran semua kontrol yang dihosting oleh kontrol komposit.
HRESULT AdviseSinkMap(bool bAdvise);
Parameter
bAdvise
Benar jika semua kontrol harus disarankan; jika tidak salah.
Tampilkan Nilai
Nilai | Deskripsi |
---|---|
S_OK |
Semua kontrol dalam peta sink peristiwa berhasil tersambung atau terputus dari sumber kejadiannya. |
E_FAIL |
Tidak semua kontrol dalam peta sink peristiwa dapat disambungkan atau terputus dari sumber peristiwa mereka dengan sukses. |
E_POINTER |
Kesalahan ini biasanya menunjukkan masalah dengan entri di peta sink peristiwa kontrol atau masalah dengan argumen templat yang digunakan di IDispEventImpl kelas dasar atau IDispEventSimpleImpl . |
CONNECT_E_ADVISELIMIT |
Titik koneksi telah mencapai batas koneksinya dan tidak dapat menerima lagi. |
CONNECT_E_CANNOTCONNECT |
Sink tidak mendukung antarmuka yang diperlukan oleh titik koneksi ini. |
CONNECT_E_NOCONNECTION |
Nilai cookie tidak mewakili koneksi yang valid. Kesalahan ini biasanya menunjukkan masalah dengan entri di peta sink peristiwa kontrol atau masalah dengan argumen templat yang digunakan di IDispEventImpl kelas dasar atau IDispEventSimpleImpl . |
Keterangan
Implementasi dasar metode ini mencari melalui entri dalam peta sink peristiwa. Kemudian memberi tahu atau membatalkan pengalih perhatian titik koneksi ke objek COM yang dijelaskan oleh entri sink peta sink peristiwa. Metode anggota ini juga bergantung pada fakta bahwa kelas turunan mewarisi dari satu instans IDispEventImpl
untuk setiap kontrol di peta sink yang akan disarankan atau tidak diawasi.
CComCompositeControl::CalcExtent
Panggil metode ini untuk menghitung ukuran dalam unit HIMETRIC dari sumber daya dialog yang digunakan untuk menghosting kontrol komposit.
BOOL CalcExtent(SIZE& size);
Parameter
ukuran
Referensi ke struktur yang SIZE
akan diisi oleh metode ini.
Tampilkan Nilai
TRUE jika kontrol dihosting oleh kotak dialog; jika tidak FALSE.
Keterangan
Ukuran dikembalikan dalam parameter ukuran .
CComCompositeControl::Create
Metode ini dipanggil untuk membuat jendela kontrol untuk kontrol komposit.
HWND Create(
HWND hWndParent,
RECT& /* rcPos */,
LPARAM dwInitParam = NULL);
Parameter
hWndParent
Handel ke jendela induk kontrol.
rcPos
Dicadangkan.
dwInitParam
Data yang akan diteruskan ke kontrol selama pembuatan kontrol. Data yang diteruskan sebagai dwInitParam akan muncul sebagai parameter LPARAM dari pesan WM_INITDIALOG , yang akan dikirim ke kontrol komposit saat dibuat.
Tampilkan Nilai
Handel ke kotak dialog kontrol komposit yang baru dibuat.
Keterangan
Metode ini biasanya dipanggil selama aktivasi kontrol di tempat.
CComCompositeControl::CComCompositeControl
Konstruktor.
CComCompositeControl();
Keterangan
Menginisialisasi anggota data CComCompositeControl::m_hbrBackground dan CComCompositeControl::m_hWndFocus ke NULL.
CComCompositeControl::~CComCompositeControl
Destruktor.
~CComCompositeControl();
Keterangan
Menghapus objek latar belakang, jika ada.
CComCompositeControl::CreateControlWindow
Panggil metode ini untuk membuat jendela kontrol dan menyarankan kontrol yang dihosting.
virtual HWND CreateControlWindow(
HWND hWndParent,
RECT& rcPos);
Parameter
hWndParent
Handel ke jendela induk kontrol.
rcPos
Persegi panjang posisi kontrol komposit dalam koordinat klien relatif terhadap hWndParent.
Tampilkan Nilai
Mengembalikan handel ke kotak dialog kontrol komposit yang baru dibuat.
Keterangan
Metode ini memanggil CComCompositeControl::Create dan CComCompositeControl::AdviseSinkMap.
CComCompositeControl::m_hbrBackground
Kuas latar belakang.
HBRUSH m_hbrBackground;
CComCompositeControl::m_hWndFocus
Handel jendela yang saat ini memiliki fokus.
HWND m_hWndFocus;
CComCompositeControl::SetBackgroundColorFromAmbient
Panggil metode ini untuk mengatur warna latar belakang kontrol komposit menggunakan warna latar belakang kontainer.
HRESULT SetBackgroundColorFromAmbient();
Tampilkan Nilai
Mengembalikan S_OK saat berhasil, atau kesalahan HRESULT saat gagal.
Baca juga
Kelas CComControl
Dasar-Dasar Kontrol Komposit
Gambaran Umum Kelas
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk