IMoniker::Reduce-Methode (objidl.h)

Reduziert einen Moniker auf seine einfachste Form.

Syntax

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

Parameter

[in] pbc

Ein Zeiger auf die IBindCtx-Schnittstelle im Bindungskontext, der in diesem Bindungsvorgang verwendet werden soll. Der Bindungskontext zwischenspeichert Objekte, die während des Bindungsprozesses gebunden sind, enthält Parameter, die für alle Vorgänge gelten, die den Bindungskontext verwenden, und stellt die Mittel bereit, mit denen die moniker-Implementierung Informationen zu ihrer Umgebung abrufen soll.

[in] dwReduceHowFar

Gibt an, in welchem Umfang dieser Moniker reduziert werden soll. Dieser Parameter muss einer der Werte aus der MKRREDUCE-Enumeration sein.

[in, out] ppmkToLeft

Beim Einstieg ein Zeiger auf eine IMoniker-Zeigervariable , die den Schnittstellenzeiger auf den Moniker links von diesem Moniker enthält. Dieser Parameter wird hauptsächlich von Moniker-Implementierern verwendet, um die Zusammenarbeit zwischen den verschiedenen Komponenten eines zusammengesetzten Monikers zu ermöglichen; moniker-Clients können normalerweise NULL übergeben.

Bei der Rückgabe wird *ppmkToLeft normalerweise auf NULL festgelegt, was angibt, dass sich der ursprüngliche Moniker links nicht ändert. In seltenen Fällen gibt *ppmkToLeft einen Moniker an, der angibt, dass der vorherige Moniker links ignoriert werden sollte und der moniker, der über *ppmkToLeft zurückgegeben wird, der Ersatz ist. In einer solchen Situation muss die Implementierung Release auf dem alten Moniker links von diesem Moniker aufrufen und addRef für den neuen zurückgegebenen Moniker aufrufen; Der Aufrufer muss ihn später freigeben. Wenn ein Fehler auftritt, kann die Implementierung den Schnittstellenzeiger unverändert lassen oder auf NULL festlegen.

[out] ppmkReduced

Ein Zeiger auf eine IMoniker-Zeigervariable , die den Schnittstellenzeiger auf die reduzierte Form dieses Monikers empfängt, die NULL sein kann, wenn ein Fehler auftritt oder wenn dieser Moniker auf nichts reduziert ist. Wenn dieser Moniker nicht reduziert werden kann, wird *ppmkReduced einfach auf diesen Moniker festgelegt, und der Rückgabewert ist MK_S_REDUCED_TO_SELF. Wenn *ppmkReduced nicht NULL ist, muss die Implementierung AddRef für den neuen Moniker aufrufen. Es liegt in der Verantwortung des Aufrufers , Release aufzurufen. (Dies gilt auch dann, wenn *ppmkReduced auf diesen Moniker festgelegt ist.)

Rückgabewert

Diese Methode kann die Standardrückgabewerte E_OUTOFMEMORY und E_UNEXPECTED sowie die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich abgeschlossen.
MK_S_REDUCED_TO_SELF
Dieser Moniker konnte nicht weiter reduziert werden, sodass ppmkReduced diesen Moniker angibt.
MK_E_EXCEEDEDDEADLINE
Der Vorgang konnte nicht innerhalb des durch die BIND_OPTS Struktur des Bindungskontexts angegebenen Zeitlimits abgeschlossen werden.

Hinweise

Diese Methode ist für die folgenden Verwendungszwecke vorgesehen:

  • Aktivieren Sie die Erstellung benutzerdefinierter Makros oder Aliase als neue Arten von Monikerklassen. Wenn er reduziert wird, wird der Moniker zurückgegeben, für den das Makro ausgewertet wird.
  • Aktivieren Sie die Erstellung einer Art Moniker, der Daten nachverfolgt, während sie sich bewegen. Wenn er reduziert wird, wird der Moniker der Daten an ihrem aktuellen Speicherort zurückgegeben.
  • Auf Dateisystemen, die eine bezeichnerbasierte Methode für den Zugriff auf Dateien unterstützen, die unabhängig von Dateinamen ist; ein Dateimoniker könnte auf einen Moniker reduziert werden, der einen dieser Bezeichner enthält.
Die Absicht der MKRREDUCE-Flags , die im dwReduceHowFar-Parameter übergeben werden, besteht darin, die Möglichkeit zu bieten, einen Moniker programmgesteuert auf ein Formular zu reduzieren, dessen Anzeigename für den Benutzer erkennbar ist. Beispielsweise sind Pfade im Dateisystem, Lesezeichen in Textverarbeitungsdokumenten und Bereichsnamen in Kalkulationstabellen für Benutzer erkennbar. Im Gegensatz dazu sind ein Makro oder ein Alias, der in einem Moniker gekapselt ist, für Benutzer nicht erkennbar.

Hinweise für Anrufer

Die oben beschriebenen Szenarien werden derzeit nicht von den vom System bereitgestellten Monikerklassen implementiert.

Sie sollten Reduce aufrufen, bevor Sie zwei Moniker mit der IMoniker::IsEqual-Methode vergleichen, da ein reduzierter Moniker seine spezifischste Form hat. IsEqual kann S_FALSE auf zwei Monikern zurückgeben, bevor sie reduziert werden und S_OK zurückgeben, nachdem sie reduziert wurden.

Hinweise zu Implementierern

Wenn der aktuelle Moniker reduziert werden kann, darf Ihre Implementierung den Moniker nicht an Ort und Stelle reduzieren. Stattdessen muss ein neuer Moniker zurückgegeben werden, der den reduzierten Zustand des aktuellen darstellt. Auf diese Weise hat der Aufrufer weiterhin die Möglichkeit, den nicht gekürzten Moniker zu verwenden (z. B. die Aufzählung seiner Komponenten). Ihre Implementierung sollte den Moniker mindestens so weit reduzieren, wie dies erforderlich ist.

Implementierungsspezifische Hinweise

Implementierung Hinweise
Antimoniker Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück.
Klassenmoniker Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück.
Dateimoniker Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück.
Generischer zusammengesetzter Moniker Diese Methode ruft Rekursiv Reduce für jeden ihrer Komponentenmoniker auf. Wenn sich eine der Komponenten selbst reduziert, gibt die Methode S_OK zurück und gibt einen Verbund der reduzierten Komponenten zurück. Wenn keine Reduzierung aufgetreten ist, gibt die Methode denselben Moniker zurück und gibt MK_S_REDUCED_TO_SELF zurück.
Elementmoniker Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück.
OBJREF-Moniker Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück.
Zeigermoniker Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück.
URL-Moniker Diese Methode gibt MK_S_REDUCED_TO_SELF zurück und gibt denselben Moniker zurück.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile objidl.h

Weitere Informationen

Imoniker