VC++ 剪贴板编程

亦凉 2022-11-16 15:14 247阅读 0赞

新建一个对话框工程;

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70

  1. 双击按钮,让你输入单击的成员函数名称,然后进入代码编辑;
  2. void CJieqieDlg::OnButton1()
  3. {
  4. // TODO: Add your control notification handler code here
  5. if( !OpenClipboard() )
  6. {
  7. AfxMessageBox( _T("Cannot open the Clipboard!") );
  8. return;
  9. }
  10. if( !EmptyClipboard() )
  11. {
  12. AfxMessageBox( _T("Cannot empty the Clipboard!") );
  13. return;
  14. }
  15. // 取回当前控件的数据,hData开辟全局内存区域,存放数据
  16. CString str;
  17. this->GetDlgItemText( IDC_EDIT1, str );
  18. size_t cbStr = (str.GetLength()+1)*sizeof(TCHAR);
  19. HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);
  20. //memcpy_s( GlobalLock(hData), cbStr, str.LockBuffer(), cbStr );
  21. memcpy( GlobalLock(hData), str.LockBuffer(), cbStr );
  22. GlobalUnlock( hData );
  23. str.UnlockBuffer();
  24. UINT uiFormat = (sizeof(TCHAR)==sizeof(WCHAR)) ? CF_UNICODETEXT : CF_TEXT;
  25. if(::SetClipboardData( uiFormat, hData ) == NULL )
  26. {
  27. AfxMessageBox(_T("Unable to set Clipboard data"));
  28. CloseClipboard();
  29. return;
  30. }
  31. CloseClipboard();
  32. }
  33. void CJieqieDlg::OnButton2()
  34. {
  35. // TODO: Add your control notification handler code here
  36. if( !OpenClipboard() )
  37. {
  38. AfxMessageBox( _T("Cannot open the Clipboard!") );
  39. return;
  40. }
  41. // 选择合适的格式,读取的时候不用获得剪贴板的拥有权
  42. UINT uiFormat = (sizeof(TCHAR)==sizeof(WCHAR) ? CF_UNICODETEXT : CF_TEXT );
  43. HANDLE hData = ::GetClipboardData( uiFormat );
  44. if( NULL == hData )
  45. {
  46. AfxMessageBox( _T("Unable to get Clipboard data!") );
  47. CloseClipboard();
  48. return;
  49. }
  50. CString str;
  51. LPCTSTR lpdata = (LPCTSTR)GlobalLock(hData);
  52. this->SetDlgItemText( IDC_EDIT2, lpdata );
  53. GlobalUnlock( hData );
  54. CloseClipboard();
  55. }

运行如下;在第一个框随便输入,单击按钮1,然后单击按钮2,内容拷贝到第二个框;在二个程序之间也可以操作;先打开剪贴板,然后操作,然后关闭剪贴板;剪贴板编程通常会用到GlobalAlloc函数;

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JjYm9ibzIxY24_size_16_color_FFFFFF_t_70 1

发表评论

表情:
评论列表 (有 0 条评论,247人围观)

还没有评论,来说两句吧...

相关阅读

    相关 QClipboard 剪贴板

    在Qt中,我们可以使用QClipboard类来访问窗口系统的剪贴板对象。剪贴板为我们在不同的应用间拷贝粘贴数据提供了一种简单的机制。并且,其所支持的数据类型和Qt中的拖放操作所

    相关 VC++ 输入法编程

    一直想写一点关于输入法编程的东西,今天终于有点时间,希望对后来者有点帮助。在此要特别感谢“自由拼音”的作者李振春,我刚开始的几个问题都是在他的帮助下才解决。 首先我们需要明白