MFC剪貼板通訊

一、創建一個基於對話框的應用程序,界面以下:ui

二、對兩個按鈕進行消息響應:this

 1 void CChipBoardOperateDlg::OnBnClickedBtnCopycb()
 2 {
 3     // TODO: 在此添加控件通知處理程序代碼
 4     if( !OpenClipboard() )
 5     {
 6         AfxMessageBox( _T("Cannot open the Clipboard!") );
 7         return;
 8     }
 9 
10     // 將剪貼板內容清空,釋放數據資源,而後指定當前打開剪貼板的窗口爲剪貼板的全部制
11     if( !EmptyClipboard() )        
12     {
13         AfxMessageBox( _T("Cannot empty the Clipboard!") );
14         return;
15     }
16 
17     // 取回當前控件的數據,hData開闢全局內存區域,存放數據
18     CStringW str;
19     this->GetDlgItemTextW( IDC_EDIT_COPYCB, str );
20     size_t cbStr = (str.GetLength()+1)*sizeof(TCHAR);
21     HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);
22     memcpy_s( GlobalLock(hData), cbStr, str.LockBuffer(), cbStr );
23     GlobalUnlock( hData );
24     str.UnlockBuffer();
25 
26     // 選擇合適的格式
27     UINT uiFormat = (sizeof(TCHAR)==sizeof(WCHAR)) ? CF_UNICODETEXT : CF_TEXT;
28     if(::SetClipboardData( uiFormat, hData ) == NULL )
29     {
30         AfxMessageBox(_T("Unable to set Clipboard data"));
31         CloseClipboard();
32         return;
33     }
34     CloseClipboard();
35 }
36 
37 
38 void CChipBoardOperateDlg::OnBnClickedBtnPastecb()
39 {
40     if( !OpenClipboard() )
41     {
42         AfxMessageBox( _T("Cannot open the Clipboard!") );
43         return;
44     }
45 
46     // 選擇合適的格式(讀取的時候不用得到剪貼板的擁有權)
47     UINT uiFormat = (sizeof(TCHAR)==sizeof(WCHAR) ? CF_UNICODETEXT : CF_TEXT );
48     HANDLE hData = ::GetClipboardData( uiFormat );
49     if( NULL == hData )
50     {
51         AfxMessageBox( _T("Unable to get Clipboard data!") );
52         CloseClipboard();
53         return;
54     }
55     CStringW str;
56     LPCTSTR lpdata = (LPCTSTR)GlobalLock(hData);
57     this->SetDlgItemTextW( IDC_EDIT_PASTECB, lpdata );
58     GlobalUnlock( hData );
59     CloseClipboard();
60 }

三、在上邊的文本框中輸入數據,而後單擊SetClipboardData按鈕打開剪貼板,將該文本框中數據寫入剪貼板,最後關閉剪貼板;spa

而單擊下面的GetClipboardData按鈕將打開剪貼板,從剪貼板內讀取數據,顯示到下面的文本框中,最後關閉剪貼板。code

爲了顯示操做結果的細節,能夠打開Word的剪貼板觀看過程,效果以下:orm

相關文章
相關標籤/搜索