關於剪貼簿
剪貼簿 是一組函式和訊息,可讓應用程式傳輸數據。 由於所有應用程式都可以存取剪貼簿,因此可以在應用程式或應用程式內輕鬆傳輸數據。
剪貼簿是由用戶控制的。 窗口應在使用者發出指令後才將數據傳送至或從剪貼簿傳送。 視窗不得使用剪貼簿在使用者不知情的情況下傳輸數據。
剪貼簿上的記憶體物件可以是任何數據格式,稱為剪貼簿格式。 每個格式都是以不帶正負號的整數值來識別。 針對標準 (預先定義的) 剪貼簿格式,此值是 Winuser.h 中定義的常數;對於已註冊的剪貼簿格式,它是 registerClipboardFormat 函式的傳回值。
除了註冊剪貼簿格式之外,個別視窗會執行大部分的剪貼簿作業。 一般而言,視窗程式會將資訊傳送至剪貼簿或從剪貼簿傳輸,以回應 WM_COMMAND 訊息。
本節討論下列事項:
剪貼簿命令
使用者通常會從應用程式的 [編輯] 功能選單選擇命令來執行剪貼簿作業。 以下是標準剪貼簿命令的簡短描述。
命令 | 描述 |
---|---|
剪下 | 將目前選取範圍的複本放在剪貼簿上,並刪除檔中的選取範圍。 剪貼簿的先前內容已被清除。 |
複製 | 將目前選取範圍的複本放在剪貼簿上。 這份檔案保持不變。 剪貼簿的先前內容已被刪除。 |
貼上 | 以剪貼簿的內容取代目前的選取範圍。 剪貼簿的內容不會變更。 |
刪除 | 從文件中刪除目前的選取範圍。 剪貼簿的內容不會變更。 此命令不包含剪貼簿,但應該會出現在 [編輯 ] 功能表上 剪貼簿命令。 |
剪貼簿序號
每個視窗站的剪貼簿都有相關聯的剪貼簿序號。 每當剪貼簿的內容變更時,這個數位就會遞增。 若要取得剪貼簿序號,請呼叫 getClipboardSequenceNumber 函式。
剪貼簿查看器
剪貼簿查看器是顯示剪貼簿目前內容的視窗。 剪貼簿查看器視窗方便使用者,並不會影響剪貼簿的數據交易功能。
一般而言,剪貼簿查看器視窗至少可以顯示三種最常見的格式:CF_TEXT、CF_BITMAP和 CF_METAFILEPICT。 如果視窗無法以這三種格式中的任何一種提供數據,則應該以顯示格式提供數據,或使用擁有者顯示格式。
剪貼簿查看器鏈結 是連結兩個或多個實體,讓它們彼此相依以進行作業。 這種相互依存性(鏈結)可讓所有執行中的剪貼簿查看器應用程式接收傳送至目前剪貼簿的訊息。
本節將討論下列主題。
剪貼簿查看器視窗
視窗會藉由呼叫 setClipboardViewer 函式,將本身新增至剪貼簿查看器鏈結。 傳回值是鏈結中下一個視窗的控制代碼。 若要取得鏈結中第一個視窗的控制代碼,請呼叫 GetClipboardViewer 函式。
每個剪貼簿查看器視窗都必須追蹤剪貼簿查看器鏈結中的下一個視窗。 當剪貼簿的內容變更時,系統會將 WM_DRAWCLIPBOARD 訊息傳送至鏈結中的第一個視窗。 更新其顯示之後,每個剪貼簿查看器視窗都必須將此訊息傳遞至鏈結中的下一個視窗。
關閉之前,剪貼簿查看器視窗必須藉由呼叫 ChangeClipboardChain 函式,從剪貼簿查看器鏈中移除本身。 然後,系統會將 WM_CHANGECBCHAIN 訊息傳送至鏈結中的第一個視窗。
如需處理 WM_DRAWCLIPBOARD 和 WM_CHANGECBCHAIN 訊息的詳細資訊,請參閱 建立剪貼簿查看器視窗。
顯示格式
顯示格式是剪貼簿格式,用來在剪貼簿查看器視窗中顯示資訊。 使用私人或註冊格式的剪貼簿擁有者必須在沒有提供最常見標準格式的情況下,以顯示格式提供數據,以便在剪貼簿查看器視窗中檢視。 顯示格式僅供檢視,不得貼到檔中。
四種顯示格式包括:CF_DSPBITMAP、CF_DSPMETAFILEPICT、CF_DSPTEXT和 CF_DSPENHMETAFILE。 這些顯示格式會以與標準格式相同的方式轉譯,例如:CF_BITMAP、CF_TEXT、CF_METAFILEPICT和 CF_ENHMETAFILE。
擁有者顯示格式
對於不使用任何一般標準剪貼簿格式的剪貼簿擁有者,提供顯示格式的替代方法是使用擁有者顯示 (CF_OWNERDISPLAY) 剪貼簿格式。
藉由使用擁有者顯示格式,剪貼簿擁有者可以透過直接控制繪製剪貼簿查看器視窗,避免額外格式轉譯數據的額外負荷。 每當視窗的某個部分需要重新繪製或視窗捲動或調整大小時,剪貼簿查看器視窗會向剪貼簿擁有者傳送訊息。
相關主題