SetClipboardData 函式 (winuser.h)

以指定的剪貼簿格式將資料放在剪貼簿上。 視窗必須是目前的剪貼簿擁有者,而且應用程式必須已呼叫 OpenClipboard 函式。 (回應WM_RENDERFORMAT訊息時,剪貼簿擁有者在呼叫SetClipboardData.) 之前,不得呼叫OpenClipboard

語法

HANDLE SetClipboardData(
  [in]           UINT   uFormat,
  [in, optional] HANDLE hMem
);

參數

[in] uFormat

類型: UINT

剪貼簿格式。 此參數可以是已註冊的格式或任何標準剪貼簿格式。 如需詳細資訊,請參閱 標準剪貼簿格式已註冊的剪貼簿格式

[in, optional] hMem

類型: HANDLE

指定格式之資料的控制碼。 這個參數可以是 Null,表示視窗會以指定的剪貼簿格式提供資料, (在要求時呈現格式) ;這稱為 延遲轉譯。 如果視窗延遲轉譯,它必須處理 WM_RENDERFORMATWM_RENDERALLFORMATS 訊息。

如果 SetClipboardData 成功,系統就會擁有 hMem 參數所識別的物件。 一旦擁有權傳輸至系統,應用程式可能不會寫入或釋放資料,但可以在呼叫 CloseClipboard 函式之前鎖定和讀取資料。 (剪貼簿關閉之前必須先解除鎖定記憶體。) 如果 hMem 參數識別記憶體物件,則必須使用具有 GMEM_MOVEABLE 旗標的函式來設定物件。

傳回值

類型: HANDLE

如果函式成功,傳回值就是資料的控制碼。

如果函式失敗,傳回值為 Null。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

Windows 8: 要與 Windows 市集應用程式共用的點陣圖必須採用 CF_BITMAP格式, ( 裝置相依點陣圖) 。

如果應用程式呼叫 SetClipboardData 以回應 WM_RENDERFORMATWM_RENDERALLFORMATS,則應用程式不應該在 呼叫 SetClipboardData 之後使用控制碼。

如果應用程式呼叫將 hwnd 設為NullOpenClipboardEmptyClipboard會將剪貼簿擁有者設定為Null;這會導致SetClipboardData失敗。

當應用程式呼叫 GetClipboardData 函式時,系統會在特定剪貼簿格式之間執行隱含的資料格式轉換。 例如,如果 CF_OEMTEXT 格式位於剪貼簿上,視窗可以 擷取CF_TEXT 格式的資料。 剪貼簿上的格式會視需要轉換成要求的格式。 如需詳細資訊,請參閱 合成剪貼簿格式

範例

如需範例,請參閱 將資訊複製到剪貼簿

規格需求

   
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 winuser.h (包含 Windows.h)
程式庫 User32.lib
Dll User32.dll
API 集合 ext-ms-win-ntuser-misc-l1-2-0 (Windows 8.1)

另請參閱

剪貼簿

CloseClipboard

概念

GetClipboardData

OpenClipboard

參考

RegisterClipboardFormat

WM_RENDERALLFORMATS

WM_RENDERFORMAT