Bagikan melalui


IMoniker::Kurangi metode (objidl.h)

Mengurangi moniker ke bentuk yang paling sederhana.

Sintaks

HRESULT Reduce(
  [in]      IBindCtx *pbc,
  [in]      DWORD    dwReduceHowFar,
  [in, out] IMoniker **ppmkToLeft,
  [out]     IMoniker **ppmkReduced
);

Parameter

[in] pbc

Penunjuk ke antarmuka IBindCtx pada konteks ikatan yang akan digunakan dalam operasi pengikatan ini. Konteks ikatan menyimpan objek yang terikat selama proses pengikatan, berisi parameter yang berlaku untuk semua operasi menggunakan konteks ikatan, dan menyediakan cara di mana implementasi moniker harus mengambil informasi tentang lingkungannya.

[in] dwReduceHowFar

Menentukan seberapa jauh moniker ini harus dikurangi. Parameter ini harus menjadi salah satu nilai dari enumerasi MKRREDUCE .

[in, out] ppmkToLeft

Pada entri, penunjuk ke variabel penunjuk IMoniker yang berisi penunjuk antarmuka ke moniker di sebelah kiri moniker ini. Parameter ini digunakan terutama oleh pelaksana moniker untuk memungkinkan kerja sama antara berbagai komponen moniker komposit; klien moniker biasanya dapat melewati NULL.

Saat kembali, *ppmkToLeft biasanya diatur ke NULL, menunjukkan tidak ada perubahan pada moniker asli di sebelah kiri. Dalam situasi yang jarang terjadi, *ppmkToLeft menunjukkan moniker, menunjukkan bahwa moniker sebelumnya di sebelah kiri harus diabaikan dan moniker yang dikembalikan melalui *ppmkToLeft adalah penggantinya. Dalam situasi seperti itu, implementasi harus memanggil Rilis pada moniker lama di sebelah kiri moniker ini dan harus memanggil AddRef pada moniker yang baru dikembalikan; penelepon harus merilisnya nanti. Jika terjadi kesalahan, implementasi dapat membiarkan pointer antarmuka tidak berubah atau mengaturnya ke NULL.

[out] ppmkReduced

Penunjuk ke variabel pointer IMoniker yang menerima penunjuk antarmuka ke bentuk pengurangan moniker ini, yang dapat berupa NULL jika terjadi kesalahan atau jika moniker ini dikurangi menjadi apa-apa. Jika moniker ini tidak dapat dikurangi, *ppmkReduced hanya diatur ke moniker ini dan nilai yang dikembalikan MK_S_REDUCED_TO_SELF. Jika *ppmkReducednon-NULL, implementasi harus memanggil AddRef pada moniker baru; adalah tanggung jawab pemanggil untuk memanggil Rilis. (Ini benar meskipun *ppmkReduced diatur ke moniker ini.)

Nilai kembali

Metode ini dapat mengembalikan nilai pengembalian standar E_OUTOFMEMORY dan E_UNEXPECTED, serta nilai berikut.

Menampilkan kode Deskripsi
S_OK
Metode berhasil diselesaikan.
MK_S_REDUCED_TO_SELF
Moniker ini tidak dapat dikurangi lebih lanjut, sehingga ppmkReduced menunjukkan moniker ini.
MK_E_EXCEEDEDDEADLINE
Operasi tidak dapat diselesaikan dalam batas waktu yang ditentukan oleh struktur BIND_OPTS konteks ikat.

Keterangan

Metode ini ditujukan untuk penggunaan berikut:

  • Aktifkan konstruksi makro atau alias yang ditentukan pengguna sebagai jenis kelas moniker baru. Ketika dikurangi, moniker yang dievaluasi makro dikembalikan.
  • Aktifkan konstruksi semacam moniker yang melacak data saat bergerak. Ketika dikurangi, moniker data di lokasinya saat ini dikembalikan.
  • Pada sistem file yang mendukung metode berbasis pengidentifikasi untuk mengakses file yang independen dari nama file; moniker file dapat dikurangi menjadi moniker yang berisi salah satu pengidentifikasi ini.
Tujuan dari bendera MKRREDUCE yang diteruskan dalam parameter dwReduceHowFar adalah untuk memberikan kemampuan untuk secara terprogram mengurangi moniker ke formulir yang nama tampilannya dapat dikenali oleh pengguna. Misalnya, jalur dalam sistem file, marka buku dalam dokumen pemrosesan kata, dan nama rentang di spreadsheet semuanya dapat dikenali oleh pengguna. Sebaliknya, makro atau alias yang dienkapsulasi dalam moniker tidak dapat dikenali oleh pengguna.

Catatan untuk Penelepon

Skenario yang dijelaskan di atas saat ini tidak diterapkan oleh kelas moniker yang disediakan sistem.

Anda harus memanggil Kurangi sebelum membandingkan dua moniker menggunakan metode IMoniker::IsEqual karena moniker yang berkurang dalam bentuk yang paling spesifik. IsEqual dapat mengembalikan S_FALSE pada dua moniker sebelum dikurangi dan mengembalikan S_OK setelah dikurangi.

Catatan untuk Pelaksana

Jika moniker saat ini dapat dikurangi, implementasi Anda tidak boleh mengurangi moniker di tempat. Sebaliknya, ia harus mengembalikan moniker baru yang mewakili status berkurang dari yang saat ini. Dengan cara ini, penelepon masih memiliki opsi untuk menggunakan moniker yang tidak tereduksi (misalnya, menghitung komponennya). Implementasi Anda harus mengurangi moniker setidaknya sejauh yang diminta.

Catatan khusus implementasi

Implementasi Catatan
Anti-moniker Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama.
Moniker kelas Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama.
Moniker file Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama.
Moniker komposit generik Metode ini secara rekursif memanggil Reduce untuk setiap moniker komponennya. Jika salah satu komponen mengurangi dirinya sendiri, metode mengembalikan S_OK dan meneruskan kembali komposit komponen yang dikurangi. Jika tidak ada pengurangan yang terjadi, metode meneruskan kembali moniker yang sama dan mengembalikan MK_S_REDUCED_TO_SELF.
Moniker item Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama.
Moniker OBJREF Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama.
Penunjuk moniker Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama.
Moniker URL Metode ini mengembalikan MK_S_REDUCED_TO_SELF dan meneruskan kembali moniker yang sama.

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 objidl.h

Lihat juga

IMoniker