MFC学习笔记——剪贴板通信

【这是之前学习MFC的时候找到的一篇关于剪贴板简单应用的文章,具体出处当时没有记录,抱歉。。。】

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


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

void CChipBoardOperateDlg::OnBnClickedBtnCopycb()

{

    // TODO: 在此添加控件通知处理程序代码

    if(!OpenClipboard() )

    {

       AfxMessageBox( _T("Cannot open the Clipboard!") );

        return;

    }

 

    // 将剪贴板内容清空,释放数据资源,然后指定当前打开剪贴板的窗口为剪贴板的所有制

    if(!EmptyClipboard() )       

    {

       AfxMessageBox( _T("Cannot empty the Clipboard!") );

        return;

    }

 

    // 取回当前控件的数据,hData开辟全局内存区域,存放数据

    CStringWstr;

   this->GetDlgItemTextW( IDC_EDIT_COPYCB, str );

    size_tcbStr = (str.GetLength()+1)*sizeof(TCHAR);

    HGLOBALhData = GlobalAlloc(GMEM_MOVEABLE, cbStr);

    memcpy_s(GlobalLock(hData), cbStr, str.LockBuffer(), cbStr );

   GlobalUnlock( hData );

   str.UnlockBuffer();

 

    // 选择合适的格式

    UINTuiFormat = (sizeof(TCHAR)==sizeof(WCHAR)) ? CF_UNICODETEXT : CF_TEXT;

   if(::SetClipboardData( uiFormat, hData ) == NULL )

    {

       AfxMessageBox(_T("Unable to set Clipboard data"));

       CloseClipboard();

        return;

    }

    CloseClipboard();

}

 

 

void CChipBoardOperateDlg::OnBnClickedBtnPastecb()

{

    if(!OpenClipboard() )

    {

       AfxMessageBox( _T("Cannot open the Clipboard!") );

        return;

    }

 

    // 选择合适的格式(读取的时候不用获得剪贴板的拥有权)

    UINTuiFormat = (sizeof(TCHAR)==sizeof(WCHAR) ? CF_UNICODETEXT : CF_TEXT );

    HANDLEhData = ::GetClipboardData( uiFormat );

    if( NULL ==hData )

    {

       AfxMessageBox( _T("Unable to get Clipboard data!") );

       CloseClipboard();

        return;

    }

    CStringWstr;

    LPCTSTRlpdata = (LPCTSTR)GlobalLock(hData);

   this->SetDlgItemTextW( IDC_EDIT_PASTECB, lpdata );

   GlobalUnlock( hData );

   CloseClipboard();

}


3、  测试:

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

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

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


 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值