共用方式為


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

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

請參閱

概念

剪貼簿