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

相关文章
相关标签/搜索