IOleLink::BindToSource 方法 (oleidl.h)
系結儲存在連結物件內的Moniker,以啟動連結來源的連接。
語法
HRESULT BindToSource(
[in] DWORD bindflags,
[in] IBindCtx *pbc
);
參數
[in] bindflags
指定連結來源上次系結時,如果鏈接來源有不同的 CLSID,則如何繼續進行。 如果此參數為零,而且CLSID不同,則方法會失敗並傳回OLE_E_CLASSDIFF。 如果指定 OLELINKBIND 列舉中的OLELINKBIND_EVENIFCLASSDIFF值,而且 CLSID 不同,則方法會成功系結並更新儲存在連結物件中的 CLSID。
[in] pbc
系結內容上要用於這個系結作業之 IBindCtx 介面的指標。 此參數可以是 Null。 系結內容會在系結程式期間快取系結的物件、包含使用系結內容套用至所有作業的參數,並提供系結實作應該擷取其環境相關信息的方法。 如需詳細資訊,請參閱 IBindCtx。
傳回值
此方法會在成功時傳回S_OK。 其他可能的傳回值包括下列專案。
傳回碼 | Description |
---|---|
|
連結來源未系結,因為其CLSID已變更。 只有在 bindflags 參數中未指定OLELINKBIND_EVENIFCLASSDIFF旗標時,才會傳回此錯誤。 |
|
如果連結來源的Moniker是複合) 找不到在複合中識別的某些中繼物件,則找不到連結來源或 (。 |
|
連結的Moniker為 NULL。 |
系結Moniker可能需要呼叫 CreateBindCtx 函式;因此,此方法可能會傳回 CreateBindCtx 所產生的錯誤。
備註
來電者的附註
一般而言,您的容器應用程式不需要直接呼叫 IOleLink::BindToSource 方法。 當您必須啟用連結來源的連線時,您的容器通常會呼叫 IOleObject::D oVerb、 IOleObject::Update 或 IOleLink::Update。 鏈接物件的這些方法實作會呼叫 IOleLink::BindToSource。 您的容器也可以呼叫 OleRun 函式,在鏈接物件上呼叫時呼叫 IOleLink::BindToSource 。在先前所列的每個範例中, IOleLink::BindToSource 間接呼叫時,bindflags 參數會設定為零。 因此,如果連結來源的類別與上次鏈接物件系結時的內容不同,這些呼叫可能會因為OLE_E_CLASSDIFF錯誤而失敗。 例如,如果原始連結來源是使用者後續使用 [變更類型] 對話框) 轉換 (至 Excel 電子表格的內嵌 Lotus 電子表格,就會發生這種情況。
如果您想要讓容器系結,即使鏈接來源現在有不同的 CLSID,您可以直接呼叫 IOleLink::BindToSource ,並指定 bindflags 參數的OLELINKBIND_EVENIFCLASSDIFF。 此呼叫會系結至連結來源,並更新連結物件的CLSID。 或者,您的容器可以刪除現有的連結,並使用 OleCreateLink 函式來建立新的連結物件。
實作者的注意事項
鏈接物件會快取系結期間取得之連結來源的介面指標。鏈接物件的 IOleLink::BindToSource 實作會先嘗試使用由連結來源相對 Moniker 所組成的複合檔的 Moniker 進行系結。 如果成功,它會更新鏈接的絕對Moniker。 否則,它會嘗試使用絕對Moniker進行系結,如果成功,則會更新相對Moniker。
如果 IOleLink::BindToSource 系結至連結來源,它會呼叫複合檔的 IOleContainer::LockContainer 實作,讓包含的複合文件在連結來源執行時保持運作。 IOleLink::BindToSource 也會呼叫連結來源的 IOleObject::Advisor 和 IDataObject::D Advise 實作來設定諮詢連線。 IOleLink::UnbindSource 實作會解除鎖定容器,並刪除諮詢連線。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | oleidl.h |