IMoniker::CommonPrefixWith-Methode (objidl.h)
Erstellt einen neuen Moniker basierend auf dem Präfix, das dieser Moniker mit dem angegebenen Moniker gemeinsam hat.
Syntax
HRESULT CommonPrefixWith(
[in] IMoniker *pmkOther,
[out] IMoniker **ppmkPrefix
);
Parameter
[in] pmkOther
Ein Zeiger auf die IMoniker-Schnittstelle auf einem anderen Moniker, der mit diesem verglichen werden soll, um zu bestimmen, ob ein gemeinsames Präfix vorhanden ist.
[out] ppmkPrefix
Die Adresse einer IMoniker*-Zeigervariable, die den Schnittstellenzeiger auf den Moniker empfängt, der das allgemeine Präfix dieses Monikers und pmkOther ist. Bei erfolgreicher Implementierung muss AddRef für den resultierenden Moniker aufgerufen werden. Es liegt in der Verantwortung des Aufrufers , Release aufzurufen. Wenn ein Fehler auftritt oder kein gemeinsames Präfix vorhanden ist, sollte die Implementierung *ppmkPrefix auf NULL festlegen.
Rückgabewert
Diese Methode kann die Standardrückgabewerte E_OUTOFMEMORY sowie die folgenden Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Es gibt ein gängiges Präfix, das weder dieser Moniker noch pmkOther ist. |
|
Es ist kein gemeinsames Präfix vorhanden. |
|
Das gesamte pmkOther ist ein Präfix dieses Monikers. |
|
Die beiden Moniker sind identisch. |
|
Dieser Moniker ist ein Präfix des pmkOther Monikers. |
|
Diese Methode wurde mit einem relativen Moniker aufgerufen. Es ist nicht sinnvoll, das allgemeine Präfix auf einen relativen Moniker zu nehmen. |
Hinweise
CommonPrefixWith erstellt einen neuen Moniker, der aus den allgemeinen Präfixen des Monikers für dieses Moniker-Objekt und einem anderen Moniker besteht. Wenn beispielsweise ein Moniker den Pfad "c:\projects\secret\art\pict1.bmp" und ein anderer Moniker den Pfad "c:\projects\secret\docs\chap1.txt" darstellt, wäre das allgemeine Präfix dieser beiden Moniker ein Moniker, der den Pfad "c:\projects\secret" darstellt.
Hinweise für Anrufer
Die CommonPrefixWith-Methode wird in erster Linie in der Implementierung der IMoniker::RelativePathTo-Methode aufgerufen. Clients, die einen Moniker zum Suchen eines Objekts verwenden, müssen diese Methode selten aufrufen.Rufen Sie diese Methode nur auf, wenn pmkOther und dieser Moniker beide absolute Moniker sind. Ein absoluter Moniker ist entweder ein Dateimoniker oder ein generischer Verbund, dessen linke Komponente ein Dateimoniker ist, der einen absoluten Pfad darstellt. Rufen Sie diese Methode nicht für relative Moniker auf, da sie keine aussagekräftigen Ergebnisse liefern würde.
Hinweise zu Implementierern
Ihre Implementierung sollte zunächst bestimmen, ob pmkOther ein Moniker einer Klasse ist, die Sie erkennen und für die Sie eine spezielle Behandlung bereitstellen können (z. B. wenn es sich um dieselbe Klasse wie dieser Moniker handelt). Wenn ja, sollte Ihre Implementierung das allgemeine Präfix der beiden Moniker bestimmen. Andernfalls sollten beide Moniker in einem Aufruf an die MonikerCommonPrefixWith-Funktion übergeben werden, die den generischen Fall ordnungsgemäß verarbeitet.Implementierungsspezifische Hinweise
Implementierung | Hinweise |
---|---|
Antimoniker | Wenn der andere Moniker ebenfalls ein Antimoniker ist, gibt die Methode MK_S_US zurück und legt ppmkPrefix auf diesen Moniker fest. Andernfalls ruft die -Methode die MonikerCommonPrefixWith-Funktion auf. Diese Funktion behandelt ordnungsgemäß den Fall, in dem der andere Moniker ein generischer Zusammengesetzter ist. |
Klassenmoniker | Wenn pmkOther diesem Moniker gleich ist, ruft einen Zeiger auf diesen Moniker ab und gibt MK_S_US zurück. Wenn pmkOther ein Klassenmoniker ist, aber nicht gleich diesem Moniker ist, gibt MK_E_NOPREFIX zurück. Andernfalls gibt das Ergebnis des Aufrufs von MonikerCommonPrefixWith mit sich selbst als pmkThis, pmkOther und ppmkPrefix zurück, wodurch der Fall behandelt wird, in dem pmkOther ein generischer zusammengesetzter Moniker ist. |
Dateimoniker |
Wenn beide Moniker Dateimoniker sind, gibt diese Methode einen Dateimoniker zurück, der auf den gemeinsamen Komponenten am Anfang von zwei Dateimonikern basiert. Komponenten eines Dateimonikers können folgende Typen aufweisen:
Diese Methode gibt MK_E_NOPREFIX zurück, wenn kein gemeinsames Präfix vorhanden ist. |
Generischer zusammengesetzter Moniker |
Wenn der andere Moniker ein Zusammengesetzter ist, vergleicht diese Methode die Komponenten der einzelnen Zusammengesetzten von links nach rechts. Der zurückgegebene moniker des allgemeinen Präfixes kann auch ein zusammengesetzter Moniker sein, je nachdem, wie viele der linkssten Komponenten für beide Moniker gemeinsam waren. Wenn der andere Moniker kein Zusammengesetzter ist, vergleicht die Methode ihn einfach mit der linken Komponente dieses Monikers.
Wenn die Moniker gleich sind, gibt die Methode MK_S_US zurück und legt ppmkPrefix auf diesen Moniker fest. Wenn der andere Moniker ein Präfix dieses Monikers ist, gibt die Methode MK_S_HIM zurück und legt ppmkPrefix auf den anderen Moniker fest. Wenn dieser Moniker ein Präfix des anderen ist, gibt diese Methode MK_S_ME zurück und legt ppmkPrefix auf diesen Moniker fest. Wenn kein allgemeines Präfix vorhanden ist, gibt diese Methode MK_E_NOPREFIX zurück und legt ppmkPrefix auf NULL fest. |
Elementmoniker | Wenn der andere Moniker ein Elementmoniker ist, der diesem Moniker entspricht, legt diese Methode *ppmkPrefix auf diesen Moniker fest und gibt MK_S_US zurück. Andernfalls ruft die -Methode die MonikerCommonPrefixWith-Funktion auf. Diese Funktion behandelt ordnungsgemäß den Fall, in dem der andere Moniker ein generischer Zusammengesetzter ist. |
OBJREF-Moniker |
Wenn die beiden Moniker gleich sind, gibt diese Methode MK_S_US zurück und legt *ppmkPrefix auf NULL fest. Wenn der andere Moniker kein OBJREF-Moniker ist, übergibt diese Methode beide Moniker an die MonikerCommonPrefixWith-Funktion . Diese Funktion behandelt ordnungsgemäß den Fall, in dem der andere Moniker ein generischer Zusammengesetzter ist.
Wenn kein allgemeines Präfix vorhanden ist, gibt diese Methode MK_E_NOPREFIX zurück. |
Zeigermoniker | Wenn die beiden Moniker gleich sind, gibt diese Methode MK_S_US zurück und legt *ppmkPrefix auf diesen Moniker fest. Andernfalls gibt die Methode MK_E_NOPREFIX zurück und legt *ppmkPrefix auf NULL fest. |
URL-Moniker | Diese Methode gibt E_NOTIMPL 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 |