MFC剪贴板通信

来源:互联网 发布:python 汉字转unicode 编辑:程序博客网 时间:2024/06/06 00:54
MFC剪贴板通信

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

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

复制代码
 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 }
复制代码

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

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

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

0 0
原创粉丝点击