IMoniker::P arseDisplayName 方法 (objidl.h)
將顯示名稱轉換成Moniker。
語法
HRESULT ParseDisplayName(
[in] IBindCtx *pbc,
[in] IMoniker *pmkToLeft,
[in] LPOLESTR pszDisplayName,
[out] ULONG *pchEaten,
[out] IMoniker **ppmkOut
);
參數
[in] pbc
系結內容上要用於這個系結作業之 IBindCtx 介面的指標。 系結內容會在系結程式期間快取系結的物件、包含套用至所有作業的參數,並提供Moniker實作應該擷取其環境相關信息的方法。
[in] pmkToLeft
Moniker 上 IMoniker 介面的指標,此介面已從顯示名稱內建到此點為止。
[in] pszDisplayName
要剖析的其餘顯示名稱。
[out] pchEaten
變數的指標,這個變數會接收此步驟中已取用的 pszDisplayName 字元數。
[out] ppmkOut
IMoniker 指標變數的指標,會接收從 pszDisplayName 建置之 Moniker 的介面指標。 成功時,實作必須在新的Moniker上呼叫 AddRef ;呼叫者必須負責呼叫 Release。 如果發生錯誤,實作會將 *ppmkOut 設定為 NULL。
傳回值
這個方法可以傳回標準傳回valuesE_OUTOFMEMORY和E_UNEXPECTED,以及下列值。
傳回碼 | 描述 |
---|---|
|
已成功完成剖析作業。 |
|
輸入元件的語法錯誤, (pmkToLeft、此 Moniker 和 pszDisplayName) 。 例如,如果 pmkToLeft 為非 NULL,檔案 Moniker 會傳回此錯誤,如果 pmkToLeft 為 NULL,則專案 Moniker 會傳回此錯誤。 |
這個方法也可以傳回與 IMoniker::BindToObject 方法相關聯的錯誤。
備註
來電者的附註
Moniker 用戶端通常不會直接呼叫 ParseDisplayName 。 相反地,他們會在想要將顯示名稱轉換成Moniker (時呼叫 MkParseDisplayName 函式,例如,在實作容器應用程式的 [ 連結 ] 對話框中,或實作支援檔外部對象的參考的宏語言) 。 該函式會先剖析顯示名稱本身的初始部分。然後它會在剛建立的Moniker上呼叫 ParseDisplayName ,並傳遞顯示名稱的其餘部分,並在傳回時取得新的Moniker;此步驟會重複執行,直到剖析整個顯示名稱為止。
實作者的注意事項
如果您的Moniker類別設計為只指定特定類型的物件,您的實作可能會自行執行此剖析。 否則,您必須取得Moniker-so-far (所識別物件的 IParseDisplayName 介面指標,也就是 pmkToLeft 和這個 Moniker 的組合) ,然後傳回呼叫 IParseDisplayName::P arseDisplayName 的結果。取得 IParseDisplayName 指標有不同的策略,如下所示:
- 您可以嘗試在物件) 上呼叫 IPersist::GetClassID ,然後呼叫 CoGetClassObject 函式,在與該 CLSID 相關聯的類別處理站上要求 IParseDisplayName 介面,以嘗試取得物件的 CLSID (。
- 您可以嘗試系結至物件本身,以取得 IParseDisplayName 指標。
- 您可以嘗試系結至 pmkToLeft 所識別的物件,以取得 IOleItemContainer 指標,然後呼叫 IOleItemContainer::GetObject 以取得專案的 IParseDisplayName 指標。
實作特定附注
實作 | 備註 |
---|---|
反Moniker | 這個方法會傳回E_NOTIMPL。 |
類別Moniker |
此方法會藉由系結至 IParseDisplayName 本身來剖析顯示名稱,並要求系結物件將顯示名稱剖析成 Moniker,如下所示。
此方法會嘗試取得 IParseDisplayName 指標,首先系結至 Moniker 所識別物件的類別處理站,然後系結至物件本身。 如果其中一個系結作業成功,檔案Moniker會將顯示名稱的未剖析部分傳遞給 IParseDisplayName::P arseDisplayName 方法。 如果 pmkToLeft 為非 NULL,這個方法會傳回MK_E_SYNTAX。 |
檔案Moniker | 此方法會嘗試取得 IParseDisplayName 指標,首先系結至 Moniker 所識別物件的類別處理站,然後系結至物件本身。 如果其中一個系結作業成功,檔案Moniker會將顯示名稱的未剖析部分傳遞給 IParseDisplayName::P arseDisplayName 方法。 |
泛型複合Moniker | 這個方法會以遞歸方式在複合的最右邊元件上呼叫 IMoniker::P arseDisplayName ,傳遞所有其他專案做為該呼叫的 pmkToLeft 參數。 |
專案Moniker | 如果 pmkToLeft 為 NULL,這個方法會傳回MK_E_SYNTAX。 否則,方法會在 pmkToLeft 參數上呼叫 IMoniker::BindToObject,要求 IOleItemContainer 介面指標。 方法接著會呼叫 IOleItemContainer::GetObject,要求 Moniker 所識別物件的 IParseDisplayName 介面指標,並將顯示名稱傳遞至 IParseDisplayName::P arseDisplayName。 |
OBJREF Moniker | 如果 pmkToLeft 不是 NULL,這個方法會傳回MK_E_SYNTAX。 |
指標 Moniker | 此方法會查詢 IParseDisplayName 介面的包裝指標,並將顯示名稱傳遞至 IParseDisplayName::P arseDisplayName。 |
URL Moniker | 將完整或部分 URL 字串剖析為結果 Moniker (ppmkOut) 。 如果 szDisplayName 代表完整的 URL 字串 (例如 “http://foo.com/default.html”) ,結果就是新的完整 URL Moniker。 如果 szDisplayName 代表部分 URL 字串 (例如 “..\default.html“) ,結果是完整 URL,其內容取自系結內容的SZ_URLCONTEXT對象參數或來自此 URL Moniker。 例如,如果內容 Moniker 是 “http://foo.com/pub/list.html”, 而 szDisplayName 是 “..\default.html」,產生的URL Moniker 會代表“http://foo.com/default.html”。 |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | objidl.h |