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
S_OK
Emulasi berhasil dibuat atau dihapus.
REGDB_E_CLASSNOTREG
Parameter clsidOld tidak terdaftar dengan benar dalam database pendaftaran.
REGDB_E_READREGDB
Kesalahan membaca dari database pendaftaran.
REGDB_E_WRITEREGDB
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 kasus pertama adalah bahwa pengguna akhir mungkin ingin mengedit spreadsheet yang dibuat oleh satu aplikasi menggunakan aplikasi lain yang dapat membaca dan menulis format spreadsheet aplikasi asli. Untuk aplikasi yang mendukung emulasi, CoTreatAsClass dapat dipanggil untuk menerapkan opsi Perlakukan Sebagai dalam kotak dialog konversi.

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

Lihat juga

CoGetTreatAsClass