鏈接的物件和Monikers
連結的物件,例如內嵌物件,依賴對象處理程式來與伺服器應用程式通訊。 不過,鏈接物件本身會管理連結來源的命名和追蹤。 連結的物件就像同進程伺服器一樣。 例如,啟用時,鏈接的物件會找出並啟動連結來源的 OLE 伺服器應用程式。
鏈接物件的處理程式是由兩個主要元件所組成:處理程式元件和連結元件。 處理程式元件包含控制和遠端片段和函式,與內嵌物件的處理程序類似。 鏈接元件有自己的控制器和快取,並提供對象的結構化記憶體存取權。 連結元件控制器透過使用Moniker支援來源命名,以及系結、尋找和執行連結來源的程式。 (如需Moniker和系結的詳細資訊,請參閱 元件物件模型。)
當使用者一開始建立連結的物件或從記憶體載入現有的物件時,容器會將連結元件的實例載入記憶體中,以及對象處理程式。 連結元件會提供介面,尤其是 IOleLink,以將對象識別為連結,並讓它管理其連結來源的命名、追蹤和更新。
藉由實作 IOleLink 介面,鏈接物件會為其容器提供支持連結的函式。 只有連結的物件會實 作 IOleLink,而且藉由查詢此介面,容器可以判斷指定的對像是內嵌還是連結。 IOleLink 所提供的最重要的函式可讓容器系結至連結物件的來源,也就是啟動與儲存連結物件原生數據之文件的連接。 IOleLink 也會定義函式來管理連結對象的相關信息,例如快取的簡報數據和連結來源的位置。
儲存包含連結對象的複合檔時,鏈接的數據會與連結來源一起儲存,而不是與容器一起儲存。 只有其名稱和位置的相關信息會連同複合檔一起儲存。 此行為與內嵌對象的行為相反,其數據會與其容器的數據一起儲存。
容器應用程式可以提供其內嵌物件的相關信息,讓後者或其部分可以做為連結來源。 藉由實作連結至容器內嵌物件的支援,您可以進行巢狀內嵌,減輕使用者必須追蹤連結所需之每個內嵌物件的原始專案。 例如,如果使用者想要在 Microsoft Word 中內嵌 Microsoft Excel 工作表,而且工作表包含在 小畫家 brush 中建立的位圖,用戶可以連結至工作表中包含的位圖複本,而不是原始的。
相關主題