IMoniker::Inverse 方法 (objidl.h)
建立這個Moniker的反轉Moniker。 當撰寫到這個Moniker或其中一個類似的結構右邊時,Moniker將撰寫為 nothing。
語法
HRESULT Inverse(
[out] IMoniker **ppmk
);
參數
[out] ppmk
IMoniker 指標變數的位址,該變數會接收這個Moniker反轉的Moniker介面指標。 成功時,實作必須在新的反向Moniker上呼叫 AddRef 。 呼叫者必須負責呼叫 Release。 如果發生錯誤,實作應該將 *ppmk 設定為 NULL。
傳回值
這個方法可以傳回標準傳回值E_OUTOFMEMORY,以及下列值。
傳回碼 | 描述 |
---|---|
|
反向Moniker已成功傳回。 |
|
Moniker 類別沒有反轉。 |
備註
Moniker 的反向類似於 MS-DOS 檔案系統中的 “..” 目錄;“..” 目錄會做為任何其他目錄名稱的反轉,因為將 “..” 附加至目錄名稱會導致空路徑。 同樣地,Moniker 的反轉通常也是相同類別中所有Moniker的反轉。 不過,它不一定是不同類別的Moniker反轉。
複合Moniker的反函數是由原始Moniker元件的反轉所組成,以反向順序排列。 例如,如果 A 的反函數是 Inv ( A ) ,而 A、B 和 C 的複合則為 Comp ( A、B、C ) ,則
Inv ( Comp ( A、B、C ) ) 等於 Comp ( Inv ( C ) 、Inv ( B ) 、Inv ( A ) ) 。
並非所有Moniker都有反轉。 大部分本身為反轉的Moniker,例如反Moniker,則沒有反向。 沒有反轉的Moniker不能從其識別給外部其他物件的物件內形成相對Moniker。
來電者附註
使用Moniker尋找另一個物件的物件通常不知道它所使用的Moniker類別。 若要取得Moniker的反函數,您應該一律呼叫 IMoniker::Inverse 而不是 CreateAntiMoniker 函式,因為您無法確定您使用的Moniker會將反Moniker視為其反向。Inverse 方法也會由 IMoniker::RelativePathTo 方法的實作呼叫,以協助建構相對 Moniker。
實作者的注意事項
如果您的Moniker沒有內部結構,您可以在 中呼叫 CreateAntiMoniker 函式,以取得 IMoniker::Inverse 實作中的反 Moniker。 在 IMoniker::ComposeWith 的實作中,您必須檢查 您在反向實作中提供的反轉。實作特定附注
實作 | 備註 |
---|---|
反Moniker | 此方法會傳回MK_E_NOINVERSE,並將 *ppmk 設定為 NULL。 |
類別Moniker | 這個方法會傳回反Moniker (,也就是呼叫 CreateAntiMoniker) 的結果。 |
檔案Moniker | 這個方法會傳回反Moniker (,也就是呼叫 CreateAntiMoniker) 的結果。 |
泛型複合Moniker | 這個方法會傳回復合Moniker,其中包含原始複合的每個元件反轉,以反向順序儲存。 例如,如果 A 的反函數是 Inv ( A ) ,則 A、B 和 C 的複合為 Comp (Inv ( C ) 、Inv ( B ) 、Inv ( A ) ) 。 |
專案Moniker | 這個方法會傳回反Moniker (,也就是呼叫 CreateAntiMoniker) 的結果。 |
OBJREF Moniker | 這個方法會傳回反Moniker (,也就是呼叫 CreateAntiMoniker) 的結果。 |
指標 Moniker | 這個方法會傳回反Moniker (,也就是呼叫 CreateAntiMoniker) 的結果。 |
URL Moniker | 此方法會傳回MK_E_NOINVERSE,並將 *ppmk 設定為 NULL。 |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | objidl.h |