Share via


關於剪貼簿

貼簿 是一組函式和訊息,可讓應用程式傳輸數據。 由於所有應用程式都可以存取剪貼簿,因此可以在應用程式或應用程式內輕鬆傳輸數據。

剪貼簿是用戶驅動。 窗口應該只會在回應使用者的命令時,將數據傳送至剪貼簿或從剪貼簿傳送。 視窗不得使用剪貼簿在使用者不知情的情況下傳輸數據。

剪貼簿上的記憶體物件可以是任何數據格式,稱為剪貼簿格式。 每個格式都是以不帶正負號的整數值來識別。 針對標準 (預先定義的) 剪貼簿格式,此值是 Winuser.h 中定義的常數;對於已註冊的剪貼簿格式,它是 RegisterClipboardFormat 函式的傳回值。

除了註冊剪貼簿格式之外,個別視窗會執行大部分的剪貼簿作業。 一般而言,視窗程式會將資訊傳送至剪貼簿或從剪貼簿傳回,以回應 WM_COMMAND 訊息。

本節討論下列事項:

剪貼簿命令

使用者通常會從應用程式的 [編輯 ] 選單選擇命令來執行剪貼簿作業。 以下是標準剪貼簿命令的簡短描述。

Command 描述
剪下 將目前選取範圍的複本放在剪貼簿上,並刪除檔中的選取範圍。 剪貼簿的先前內容會終結。
複製 將目前選取範圍的複本放在剪貼簿上。 檔保持不變。 剪貼簿的先前內容會終結。
貼上 以剪貼簿的內容取代目前的選取範圍。 剪貼簿的內容不會變更。
刪除 從檔案刪除目前的選取範圍。 剪貼簿的內容不會變更。 此命令不包含剪貼簿,但應該會出現在 [編輯] 功能表上的剪貼簿命令

 

剪貼簿序號

每個視窗月臺的剪貼簿都有相關聯的剪貼簿序號。 每當剪貼簿的內容變更時,這個數位就會遞增。 若要取得剪貼簿序號,請呼叫 GetClipboardSequenceNumber 函式。

剪貼簿查看器

剪貼簿查看器是顯示剪貼簿目前內容的視窗。 剪貼簿查看器視窗方便使用者,並不會影響剪貼簿的數據交易功能。

一般而言,剪貼簿查看器視窗至少可以顯示三種最常見的格式: CF_TEXTCF_BITMAPCF_METAFILEPICT。 如果視窗無法以這三種格式中的任何一種提供數據,則應該以顯示格式提供數據,或使用擁有者顯示格式。

貼簿查看器鏈結 是連結兩個或多個實體,以便彼此相依以進行作業。 這種相互依存性(鏈結)可讓所有執行中的剪貼簿查看器應用程式接收傳送至目前剪貼簿的訊息。

本節將討論下列主題。

剪貼簿查看器視窗

視窗會藉由呼叫 SetClipboardViewer 函式,將本身新增至剪貼簿查看器鏈結。 傳回值是鏈結中下一個視窗的句柄。 若要擷取鏈結中第一個視窗的句柄,請呼叫 GetClipboardViewer 函式。

每個剪貼簿查看器視窗都必須追蹤剪貼簿查看器鏈結中的下一個視窗。 當剪貼簿的內容變更時,系統會將WM_DRAWCLIPBOARD訊息傳送至鏈結中的第一個視窗。 更新其顯示之後,每個剪貼簿查看器視窗都必須將此訊息傳遞至鏈結中的下一個視窗。

關閉之前,剪貼簿查看器視窗必須藉由呼叫 ChangeClipboardChain 函式,從剪貼簿查看器鏈 結中移除本身。 然後,系統會將WM_CHANGECBCHAIN訊息傳送至鏈結中的第一個視窗。

如需處理WM_DRAWCLIPBOARD和WM_CHANGECBCHAIN訊息的詳細資訊,請參閱建立剪貼簿查看器視窗。

顯示格式

顯示格式是剪貼簿格式,用來在剪貼簿查看器視窗中顯示資訊。 使用私人或已註冊剪貼簿格式的剪貼簿擁有者,而且沒有最常見的標準格式,必須以顯示格式提供數據,才能在剪貼簿查看器視窗中檢視。 顯示格式僅供檢視,不得貼到檔中。

四種顯示格式包括: CF_DSPBITMAPCF_DSPMETAFILEPICTCF_DSPTEXTCF_DSPENHMETAFILE。 這些顯示格式會以與標準格式相同的方式轉譯,也就是:CF_BITMAP、CF_TEXT、CF_METAFILEPICT和CF_ENHMETAFILE。

擁有者顯示格式

對於不使用任何一般標準剪貼簿格式的剪貼簿擁有者,提供顯示格式的替代方式是使用擁有者顯示 (CF_OWNERDISPLAY) 剪貼簿格式。

藉由使用擁有者顯示格式,剪貼簿擁有者可以透過直接控制繪製剪貼簿查看器視窗,避免額外格式轉譯數據的額外負荷。 每當視窗的某個部分必須重繪或視窗捲動或重設大小時,剪貼簿查看器視窗就會將訊息傳送給剪貼簿擁有者。

標準剪貼簿格式