共用方式為


剪貼簿: 使用 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();
}

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

請參閱

概念

剪貼簿