首页 > 其他 > 详细

MFC剪贴板通信

时间:2014-04-16 19:27:10      阅读:474      评论:0      收藏:0      [点我收藏+]

1、建立一个基于对话框的应用程序,界面如下:

bubuko.com,布布扣

2、对两个按钮进行消息响应:

bubuko.com,布布扣
 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 }
bubuko.com,布布扣

3、在上边的文本框中输入数据,然后单击SetClipboardData按钮打开剪贴板,将该文本框中数据写入剪贴板,最后关闭剪贴板;

而单击下面的GetClipboardData按钮将打开剪贴板,从剪贴板内读取数据,显示到下面的文本框中,最后关闭剪贴板。

为了显示操作结果的细节,可以打开Word的剪贴板观看过程,效果如下:

bubuko.com,布布扣

MFC剪贴板通信,布布扣,bubuko.com

MFC剪贴板通信

原文:http://www.cnblogs.com/dongsheng/p/3668921.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!