Bagikan melalui


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 CComCompositeControlditerapkan 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

CComControlBase

CComControl

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