共用方式為


剪貼簿:使用 Windows 剪貼簿

本主題描述如何使用在 MFC 應用程式內的標準 Windows 剪貼簿應用程式開發介面。

對視窗的大部分應用程式支援剪下或複製資料到 Windows 剪貼簿和從剪貼簿中貼上資料。 剪貼簿資料格式在應用程式中變更。 架構支援有限數目的剪貼簿格式只能執行在有限數量類別。 您通常會實作剪貼簿相關命令—剪下,複製,然後貼上—在檢視的編輯功能表。 類別庫定義了這些命令的命令 ID: ID_EDIT_CUTID_EDIT_COPYID_EDIT_PASTE。 其訊息行提示也會定義。

訊息和命令在 Framework 說明如何藉由將功能表命令管理應用程式的功能表命令加入至處理函式。 只要您的應用程式未定義函式為剪貼簿在編輯功能表命令的處理常式,則會保持停用。 進行剪下和複製命令要撰寫處理常式函式,請實作在應用程式中的選取範圍。 要用於貼上命令要撰寫處理常式函式,請查詢剪貼簿查看是否在您的應用程式可以接受的格式的資料。 例如,若要複製命令,您可以類似下列來撰寫處理常式:

void CMyListView::OnEditCopy()
{
   if ( !OpenClipboard() )
   {
      AfxMessageBox( _T("Cannot open the Clipboard") );
      return;
   }
   // Remove the current Clipboard contents 
   if( !EmptyClipboard() )
   {
      AfxMessageBox( _T("Cannot empty the Clipboard") );
      return;
   }
   // 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... 
   if ( ::SetClipboardData( CF_TEXT, hGlob ) == NULL )
   {
      CString msg;
      msg.Format(_T("Unable to set Clipboard data, error: %d"), GetLastError());
      AfxMessageBox( msg );
      CloseClipboard();
      GlobalFree(hGlob);
      return;
   }
   CloseClipboard();
}

剪下、複製和貼上在特定內容中命令才有意義。 只有在項目被選取時應該啟用剪下和複製命令,且在存在剪貼簿時貼上命令才會有效。 您可以藉由定義更新根據內容啟用或停用這些命令的處理常式函式提供這個行為。 如需詳細資訊,請參閱 如何更新使用者介面物件

MFC 程式庫為文字編輯提供剪貼簿支援以 CEditCEditView 類別。 OLE 類別也簡化了實作包含 OLE 項目的剪貼簿作業。 如需 OLE 類別的詳細資訊,請參閱 剪貼簿:使用 OLE 剪貼簿機制

實作其他編輯功能表命令,例如復原 (ID_EDIT_UNDO) 和重新作業 (ID_EDIT_REDO),或保留給您。 如果您的應用程式不支援這些命令,使用 Visual C++ 資源編輯器,您可以輕鬆地刪除它們從您的資源檔。

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

請參閱

概念

剪貼簿