Bagikan melalui


Dasar-Dasar Objek ATL COM

Ilustrasi berikut menggambarkan hubungan di antara kelas dan antarmuka yang digunakan untuk menentukan objek ATL COM.

Diagram kelas dan antarmuka yang digunakan untuk menentukan objek A T L.

Catatan

Diagram ini menunjukkan bahwa CComObject berasal dari CYourClass sedangkan dan CComPolyObject disertakan CComAggObject CYourClass sebagai variabel anggota.

Ada tiga cara untuk menentukan objek ATL COM. Opsi standar adalah menggunakan CComObject kelas yang berasal dari CYourClass. Opsi kedua adalah membuat objek agregat dengan menggunakan CComAggObject kelas . Opsi ketiga adalah menggunakan CComPolyObject kelas . CComPolyObject bertindak sebagai hibrid: dapat berfungsi sebagai CComObject kelas atau sebagai CComAggObject kelas, tergantung pada bagaimana pertama kali dibuat. Untuk informasi selengkapnya tentang cara menggunakan CComPolyObject kelas, lihat Kelas CComPolyObject.

Saat Anda menggunakan ATL COM standar, Anda menggunakan dua objek: objek luar dan objek dalam. Klien eksternal mengakses fungsionalitas objek dalam melalui fungsi pembungkus yang ditentukan dalam objek luar. Objek luar berjenis CComObject.

Saat Anda menggunakan objek agregat, objek luar tidak menyediakan pembungkus untuk fungsionalitas objek dalam. Sebagai gantinya, objek luar menyediakan penunjuk yang langsung diakses oleh klien eksternal. Dalam skenario ini, objek luar berjenis CComAggObject. Objek dalam adalah variabel anggota dari objek luar, dan berjenis CYourClass.

Karena klien tidak perlu melalui objek luar untuk berinteraksi dengan objek dalam, objek agregat biasanya lebih efisien. Selain itu, objek luar tidak perlu mengetahui fungsionalitas objek agregat, mengingat bahwa antarmuka objek agregat tersedia langsung untuk klien. Namun, tidak semua objek dapat diagregasi. Agar objek diagregasi, objek perlu dirancang dengan pertimbangkan agregasi.

ATL mengimplementasikan IUnknown dalam dua fase:

Aspek lain dari objek ATL COM Anda ditangani oleh kelas lain:

  • CComCoClass mendefinisikan pabrik kelas default objek dan model agregasi.

  • IDispatchImpl menyediakan implementasi default dari IDispatch Interface bagian antarmuka ganda apa pun pada objek.

  • ISupportErrorInfoImpl mengimplementasikan ISupportErrorInfo antarmuka yang memastikan informasi kesalahan dapat disebarluaskan ke rantai panggilan dengan benar.

Di Bagian Ini

Menerapkan CComObjectRootEx
Tampilkan contoh entri peta COM untuk menerapkan CComObjectRootEx.

Menerapkan CComObject, CComAggObject, dan CComPolyObject
Membahas bagaimana makro DECLARE_*_AGGREGATABLE memengaruhi penggunaan CComObject, , CComAggObjectdan CComPolyObject.

Mendukung IDispatch dan IErrorInfo
Mencantumkan kelas implementasi ATL yang akan digunakan untuk mendukung IDispatch antarmuka dan IErrorInfo .

Mendukung IDispEventImpl
Membahas langkah-langkah untuk menerapkan titik koneksi untuk kelas Anda.

Mengubah Model Pabrik dan Agregasi Kelas Default
Perlihatkan makro apa yang akan digunakan untuk mengubah pabrik kelas default dan model agregasi.

Membuat Objek Agregat
Mencantumkan langkah-langkah untuk membuat objek agregat.

Membuat Proyek ATL
Menyediakan informasi tentang membuat objek ATL COM.

ATL
Menyediakan tautan ke topik konseptual tentang cara memprogram menggunakan Pustaka Templat Aktif.

Lihat juga

Konsep