剪貼簿: 使用 OLE 剪貼簿機制

OLE 使用標準格式和某些 OLE 特定格式傳送資料到剪貼簿。

當您剪下或複製應用程式中的資料時,資料儲存在剪貼簿],以供稍後貼上作業。此資料是在不同的格式。當使用者選擇要貼上剪貼簿的資料時,應用程式可以選擇哪一種格式使用。除非使用者特別要求某種特定的格式,使用 [選擇性貼上,選擇的格式來提供最多的資訊,應該寫入應用程式。在繼續之前,您可能要閱讀資料物件與資料來源 (OLE) 主題。它們會說明如何資料傳輸的工作,以及如何在應用程式中實作它們的基礎。

Windows 會定義數個可用於傳送資料到剪貼簿的標準格式。其中包括中繼檔、 文字、 點陣圖和其他人。許多 OLE 特定格式,也會定義 OLE。對於需要更多的詳細資訊,比這些標準格式所指定的應用程式,它會登錄自己自訂的剪貼簿格式是個好主意。使用 Win32 API 函式 RegisterClipboardFormat 來執行這項操作。

比方說,Microsoft Excel 會註冊自訂試算表的格式。這種格式提供更多的資訊,比,比方說,點陣圖。當這份資料貼到支援試算表格式的應用程式時,所有公式和試算表中的值被保留,並可以在必要時才進行更新。Microsoft Excel 還可讓資料在剪貼簿格式,讓它可以貼成一個 OLE 項目。任何 OLE 文件容器可以此資訊貼上成為內嵌項目。使用 Microsoft Excel 可以變更這個內嵌項目。剪貼簿也包含了試算表的選取範圍的影像之組合點陣圖。此外,這也可以貼到 OLE 文件容器或點陣圖編輯器,例如 [小畫家]。如果是一個點陣圖,不過,沒有方法處理為試算表的資料。

若要從剪貼簿擷取資訊的最大數量,應用程式前應該檢查這些自訂格式從剪貼簿貼上資料。

比方說,若要啟用 [剪下] 命令,您可以撰寫處理常式如下所示的項目:

void CMyListView::OnEditCut()
{
   // Create an OLE data source on the heap
   COleDataSource* pData = new COleDataSource;
   // Get the currently selected data
   HGLOBAL hGlob = GlobalAlloc(GMEM_FIXED, 64);
   strcpy_s((char*)hGlob, 64, "Current selection\r\n");
   // For the appropriate data formats...
   pData->CacheGlobalData( CF_TEXT, hGlob );
   // The Clipboard now owns the allocated memory
   // and will delete this data object
   // when new data is put on the Clipboard
   pData->SetClipboard();
}

您還想知道關於哪些方面的詳細資訊?

請參閱

概念

剪貼簿