Fungsi CoTreatAsClass (objbase.h)
Menetapkan atau menghapus emulasi, di mana objek dari satu kelas diperlakukan sebagai objek dari kelas yang berbeda.
Sintaks
HRESULT CoTreatAsClass(
[in] REFCLSID clsidOld,
[in] REFCLSID clsidNew
);
Parameter
[in] clsidOld
CLSID objek yang akan ditiru.
[in] clsidNew
CLSID objek yang harus meniru objek asli. Ini menggantikan emulasi yang ada untuk clsidOld. Parameter ini dapat CLSID_NULL, dalam hal ini emulasi yang ada untuk clsidOld dihapus.
Nilai kembali
Fungsi ini dapat mengembalikan nilai pengembalian standar E_INVALIDARG, serta nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Emulasi berhasil dibuat atau dihapus. |
|
Parameter clsidOld tidak terdaftar dengan benar dalam database pendaftaran. |
|
Kesalahan membaca dari database pendaftaran. |
|
Kesalahan saat menulis ke database pendaftaran. |
Keterangan
Fungsi ini mengatur entri TreatAs dalam registri untuk objek yang ditentukan, memungkinkan objek ditiru oleh aplikasi lain. Emulasi memungkinkan aplikasi untuk membuka dan mengedit objek dengan format yang berbeda, sambil mempertahankan format asli objek. Setelah entri ini diatur, setiap kali fungsi seperti CoGetClassObject menentukan CLSID asli objek (clsidOld), secara transparan diteruskan ke CLSID baru (clsidNew), sehingga meluncurkan aplikasi yang terkait dengan TreatAs CLSID. Ketika objek disimpan, objek dapat disimpan dalam format aslinya, yang dapat mengakibatkan hilangnya pengeditan yang tidak didukung oleh format aslinya.
Jika aplikasi Anda mendukung emulasi, hubungi CoTreatAsClass dalam situasi berikut:
- Menanggapi permintaan pengguna akhir (melalui kotak dialog konversi) bahwa objek tertentu diperlakukan sebagai objek dari kelas yang berbeda (objek yang dibuat di bawah satu aplikasi dijalankan di bawah aplikasi lain, sambil mempertahankan informasi format asli).
- Dalam program penyiapan, untuk mendaftarkan bahwa satu kelas objek diperlakukan sebagai objek dari kelas yang berbeda.
Contoh penggunaan CoTreatAsClass dalam program penyiapan akan berada dalam versi aplikasi yang diperbarui. Ketika aplikasi diperbarui, objek yang dibuat dengan versi sebelumnya dapat diaktifkan dan diperlakukan sebagai objek dari versi baru, sambil mempertahankan informasi format sebelumnya. Ini akan memungkinkan Anda untuk memberi pengguna opsi untuk mengonversi ketika mereka menyimpan, atau menyimpannya dalam format sebelumnya, mungkin kehilangan informasi format yang tidak tersedia di versi yang lebih lama.
Salah satu hasil dari pengaturan emulasi adalah bahwa ketika Anda menghitung kata kerja, seperti dalam implementasi metode IOleObject::EnumVerbs di handler default, ini akan menghitung kata kerja dari clsidNew alih-alih clsidOld.
Untuk memastikan bahwa informasi emulasi yang ada dihapus saat Anda menginstal aplikasi, program penyiapan Anda harus memanggil CoTreatAsClass, mengatur parameter clsidNew ke CLSID_NULL untuk menghapus emulasi yang ada untuk kelas yang mereka instal.
Jika tidak ada CLSID yang ditetapkan ke kunci AutoTreatAs di registri, mengatur clsidNew dan clsidOld ke nilai yang sama akan menghapus entri TreatAs , sehingga tidak ada emulasi. Jika ada CLSID yang ditetapkan ke kunci AutoTreatAs , CLSID tersebut ditetapkan ke kunci TreatAs .
CoTreatAsClass tidak memvalidasi apakah entri registri yang sesuai untuk clsidNew saat ini ada.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | objbase.h |
Pustaka | Ole32.lib |
DLL | Ole32.dll |