zoukankan      html  css  js  c++  java
  • 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的剪贴板观看过程,效果如下:

  • 相关阅读:
    函数式编程
    go语言中strings包常用方法
    Go--实现两个大数相乘
    谷歌插件
    函数的防抖---js
    函数截流---js
    函数的记忆----函数性能优化
    word-break、word-wrap、white-space区别
    overflow属性
    利用边框写一个三角形
  • 原文地址:https://www.cnblogs.com/dongsheng/p/3668921.html
Copyright © 2011-2022 走看看