Windows剪贴板操作简单小例
2015-08-24 16:12
387 查看
1、复制文字到剪贴板
2、复制位图句柄到剪贴板
更多详细参数介绍可以参考MSDN说明
CString strText = L"需要复制到剪贴板的文字"; if ( ::OpenClipboard(m_hWnd) ) { if ( ::EmptyClipboard() )//清空剪贴板内数据 { int nSize = strText.GetLength()*2+1;//这里是字节数,UNICODE编码每个字符占2个字节,后面加上一个\0结尾符. HGLOBAL hMem = ::GlobalAlloc(GHND, nSize); byte* pData=(byte*)::GlobalLock(hMem); memcpy_s(pData, nSize, strData.GetData(), nSize-1); pData[nSize-1]='\0'; ::GlobalUnlock(hMem); ::SetClipboardData(CF_UNICODETEXT, hMem); ::CloseClipboard(); ::GlobalFree(hMem); } }
2、复制位图句柄到剪贴板
//保存截屏区域位图到剪切板 if( ::OpenClipboard(m_hWnd) ) { if( ::EmptyClipboard() ) { HBITMAP hBmp = GetBitmapRect(g_hScreenBmp, m_rect); ::SetClipboardData(CF_BITMAP, hBmp); DeleteObject(hBmp); ::CloseClipboard(); } }3、总的来说,你必须按照这个顺序来操作剪贴板:open ---- empty ---- setdata ----- close。(打开-清空-设置-关闭)
更多详细参数介绍可以参考MSDN说明
Remarks OpenClipboard fails if another window has the clipboard open. An application should call the CloseClipboard function after every successful call to OpenClipboard. The window identified by the hWndNewOwner parameter does not become the clipboard owner unless the EmptyClipboard function is called. If an application calls OpenClipboard with hwnd set to NULL, EmptyClipboard sets the clipboard owner to NULL; this causes SetClipboardData to fail.
相关文章推荐
- c++学习
- 简道云--外链与提醒功能
- 日常总结——JSP篇(补)
- jquery地址栏链接与a标签链接匹配之特效代码总结
- 大数据
- ImportError: No module named 'ConfigParser'
- Android 多线程处理之多线程用法大集合 第2页
- dojo的TabContainer竖排摆放tab标签
- [算法] 洗牌算法&随机算法
- unity加kinect2.0拍照和利用RPC图片传输制作照片墙问题
- Winsdows黑客技术入门---简介
- hdu 1875 畅通工程再续
- poj 3252 Round Numbers
- 使用CryptoAPI获取证书扩展属性之一:“基本约束”
- 2015-08-24
- UIActionSheet的常见用法
- Django项目 实例 日记
- springboot 开发入门,及问题汇总
- Apache 和 nginx 之间的配置
- 【其他】MySql常用命令