Bagikan melalui


Menggunakan IConnectionPointContainer

Objek yang dapat dihubungkan mengimplementasikan IConnectionPointContainer (dan mengeksposnya melaluiQueryInterface) untuk menunjukkan adanya antarmuka keluar. Untuk setiap antarmuka keluar, objek yang dapat dihubungkan mengelola sub-objek titik koneksi, yang mengimplementasikan IConnectionPoint. Oleh karena itu, objek yang dapat dihubungkan berisi titik koneksi, oleh karena itu penamaan IConnectionPointContainer dan IConnectionPoint.

Melalui IConnectionPointContainer, klien dapat melakukan dua operasi. Pertama, jika klien sudah memiliki IID untuk antarmuka keluar yang didukungnya, klien dapat menemukan titik koneksi yang sesuai untuk IID menggunakan IConnectionPointContainer::FindConnectionPoint. Klien tidak dapat meminta titik koneksi secara langsung karena hubungan kontainer/terkandung antara objek yang dapat dihubungkan dan titik koneksi yang terkandung. Pada dasarnya, FindConnectionPoint adalah QueryInterface untuk antarmuka keluar ketika IID sudah diketahui oleh klien.

Kedua, klien dapat menghitung semua titik koneksi dalam objek yang dapat dihubungkan melalui IConnectionPointContainer::EnumConnectionPoints. Metode ini mengembalikan penunjuk antarmuka IEnumConnectionPoints untuk objek enumerator terpisah. Melalui IEnumConnectionPoints::Next, klien dapat memperoleh IConnectionPoint penunjuk antarmuka ke setiap titik koneksi.

Setelah klien mendapatkan antarmukaIConnectionPoint, klien harus memanggil IConnectionPoint::GetConnectionInterface untuk menentukan IID antarmuka keluar yang didukung oleh setiap titik koneksi. Jika klien sudah mendukung antarmuka keluar tersebut, klien dapat membuat koneksi. Jika tidak, mungkin masih dapat mendukung antarmuka keluar dengan menggunakan informasi dari pustaka jenis objek yang dapat dihubungkan untuk memberikan dukungan saat waktu eksekusi. Teknik ini mengharuskan objek yang dapat dihubungkan mendukung antarmukaIProvideClassInfo. (Lihat Menggunakan IProvideClassInfo.)

Karena enumerator adalah objek terpisah, klien harus memanggil IEnumConnectionPoints::Release ketika enumerator tidak lagi diperlukan. Selain itu, setiap titik koneksi adalah objek dengan jumlah referensi yang terpisah dari objek yang dapat dihubungkan. Oleh karena itu, klien juga harus memanggil IConnectionPoint::Release untuk setiap titik koneksi yang diakses baik melalui enumerator atau melalui FindConnectionPoint.

Antarmuka Objek yang Dapat Dihubungkan