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开辟全局内存区域,存放数据
CStringW str;
this->GetDlgItemTextW( IDC_EDIT_COPYCB, str );
size_t cbStr = (str.GetLength()+)*sizeof(TCHAR);
HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);
memcpy_s( GlobalLock(hData), cbStr, str.LockBuffer(), cbStr );
GlobalUnlock( hData );
str.UnlockBuffer(); // 选择合适的格式
UINT uiFormat = (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;
} // 选择合适的格式(读取的时候不用获得剪贴板的拥有权)
UINT uiFormat = (sizeof(TCHAR)==sizeof(WCHAR) ? CF_UNICODETEXT : CF_TEXT );
HANDLE hData = ::GetClipboardData( uiFormat );
if( NULL == hData )
{
AfxMessageBox( _T("Unable to get Clipboard data!") );
CloseClipboard();
return;
}
CStringW str;
LPCTSTR lpdata = (LPCTSTR)GlobalLock(hData);
this->SetDlgItemTextW( IDC_EDIT_PASTECB, lpdata );
GlobalUnlock( hData );
CloseClipboard();
}
3、在上边的文本框中输入数据,然后单击SetClipboardData按钮打开剪贴板,将该文本框中数据写入剪贴板,最后关闭剪贴板;
而单击下面的GetClipboardData按钮将打开剪贴板,从剪贴板内读取数据,显示到下面的文本框中,最后关闭剪贴板。
为了显示操作结果的细节,可以打开Word的剪贴板观看过程,效果如下:
MFC剪贴板通信的更多相关文章
- (转载)用vs2010开发基于VC++的MFC 串口通信一*****两台电脑同一个串口号之间的通信
此文章以visual C++数据採集与串口通信測控应用实战为參考教程 此文章适合VC++串口通信入门 一.页面布局及加入控件 1, 安装好vs2010如图 2, 新建一个基于VC++的MFC项目com ...
- VS2010之MFC串口通信的编写教程
http://wenku.baidu.com/link?url=K1XPdj9Dcf2of_BsbIdbPeeZ452uJqiF-s773uQyMzV2cSaPRIq6RddQQH1zr1opqVBM ...
- VS2010之MFC串口通信的编写教程--转
http://wenku.baidu.com/link?url=K1XPdj9Dcf2of_BsbIdbPeeZ452uJqiF-s773uQyMzV2cSaPRIq6RddQQH1zr1opqVBM ...
- MFC串口通信
1.串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式). 同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程) ...
- Visual C++2010开发权威指南 中文高清PDF - VC.NET
第一部分 Visual C++ 2010开发与新特性第1章 Visual C++ 2010开发环境简介 11.1 Visual C++ 2010简介 11.2 Visual C++ 2010下 ...
- [转]iOS设备唯一标识探讨
转自:http://www.jianshu.com/p/b83b0240bd0e iOS设备唯一标识探讨 为了统计和检测应用的使用数据,几乎每家公司都有获取唯一标识的业务需求,在iOS5以前获取唯一标 ...
- VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程
首先,在 vs2008 环境下创建 MFC 运用程序 设置项目名称为 ComTest(这个地方随意命名,根据个人习惯),点击确定后,点击下一步 出现如下界面 选择"基于对话框"模式 ...
- 基于MFC的socket编程(异步非阻塞通信)
对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手.许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等,初学者往往迷惑不清, ...
- OpenCV MFC 模块间通信
1. 新建MFC项目 点击完成. 2. 添加按钮 在"工具箱"中找到"Button"控件,添加至界面: 2. 配置opencv, 添加colordetecto ...
随机推荐
- Maven入门指南② :Maven 常用命令,手动创建第一个 Maven 项目
1.根据 Maven 的约定,我们在D盘根目录手动创建如下目录及文件结构: 2.打开pom.xml文件,添加如下内容: <project xmlns="http://maven.apa ...
- Jmeter自定义编写Java代码调用socket通信
一.前言 最近需要测试一款手机游戏的性能,找不到啥录制脚本的工具,然后,另外想办法.性能测试实际上就是对服务器的承载能力的测试,和各种类型的手机客户端没有啥多大关系,手机再好,服务器负载不了,也不能够 ...
- 使用MFC做一个简单的‘能自动生成小学生四则运算的软件’
这是软件工程的第一次作业!但由于我们python还没入门,所以这次的要求是‘语言不限’. 小学期做过一个关于MFC的‘资金管理系统’,也正好可以有界面,所以就选择了自己很熟悉的MFC来做这个作业! 1 ...
- Android深入浅出之Binder机制(转)
Android深入浅出之Binder机制 一 说明 Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的.所以搞明白B ...
- LPC43XX TQFP144 IO Pinout
- Visual Studio 2012使用NUnit单元测试实践01,安装NUnit并使用
在Visual Studio 2012中,默认使用Microsoft自带的MS-Test测试框架.但,Visual Studio同样允许使用第三方测试框架,比如NUnit,xUnit,MbUnit,等 ...
- Drectx 3D窗口后台截图
//GDI与DX截屏API操作 LPDIRECTDRAW lpDD = NULL; LPDIRECTDRAWSURFACE lpDDSPrime = NULL; LPDIRECTDRAWSURFACE ...
- 转:iOS应用程序生命周期(前后台切换,应用的各种状态)详解
iOS应用程序生命周期(前后台切换,应用的各种状态)详解 分类: iOS开发进阶2012-10-08 15:35 42691人阅读 评论(30) 收藏 举报 iosapplication任务anima ...
- IOS文件系统及其相关操作(NSFileManager,NSFileHandle)
How do you get the paths to these special sandbox directories? NSArray *NSSearchPathForDirectoriesIn ...
- Android 性能优化的一些方法
1.采用硬件加速,在androidmanifest.xml中application添加 android:hardwareAccelerated="true".不过这个需要在and ...