1、复制文字到剪贴板

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.

Windows剪贴板操作简单小例的更多相关文章

  1. webpack -- 多页面简单小例

    有时单页面并不能满足我们的业务需求,就需要去构建多页面应用,以下为简单小例: entry:{ index:'./src/module/index/index.js', student:'./src/m ...

  2. 开源:矿Android新闻client,快、小、支持离线阅读、操作简单、内容丰富,形式多样展示、的信息量、全功能 等待(离开码邮箱)

    分享:矿Android新闻client.快.小.支持离线阅读.操作简单.内容丰富,形式多样展示.的信息量.全功能 等待(离开码邮箱) 历时30天我为了开发这个新闻clientAPP,下面简称觅闻 ht ...

  3. windows集群简单介绍

    windows集群简单介绍仔细看过以前网友发表的一些文章,总觉得对windows集群没有详细介绍,我也是借花献佛,引用了一些技术性文档.目前应用最为广泛的集群计算技术可以分为三大类:高可用性集群技术. ...

  4. windows剪贴板

    0x01  Windows剪贴板 Windows剪贴板是一种比较简单同时也是开销比较小的IPC(InterProcess Communication,进程间通讯)机制.Windows系统支持剪贴板IP ...

  5. c# BackGroundWorker 多线程操作的小例子

    在我们的程序中,经常会有一些耗时较长的运算,为了保证用户体验,不引起界面不响应,我们一般会采用多线程操作,让耗时操作在后台完成,完成后再进行处理或给出提示,在运行中,也会时时去刷新界面上的进度条等显示 ...

  6. extern外部方法使用C#简单样例

    外部方法使用C#简单样例 1.添加引用using System.Runtime.InteropServices; 2.声明和实现的连接[DllImport("kernel32", ...

  7. 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)

    经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...

  8. 老司机实战Windows Server Docker:4 单节点Windows Docker服务器简单运维(下)

    上篇中,我们主要介绍了使用docker-compose对Windows Docker单服务器进行远程管理,编译和部署镜像,并且设置容器的自动启动.但是,还有一些重要的问题没有解决,这些问题不解决,就完 ...

  9. C#利用事件与委托进行窗体间传值简单小例子

    本篇博客是利用C#委托与事件进行窗体间传值的简单小例子 委托与事件的详细解释大家可以参照张子阳的博客: http://www.tracefact.net/CSharp-Programming/Dele ...

随机推荐

  1. 多个Mapper和Reducer的Job

    多个Mapper和Reducer的Job @(Hadoop) 对于复杂的mr任务来说,只有一个map和reduce往往是不能够满足任务需求的,有可能是需要n个map之后进行reduce,reduce之 ...

  2. 不敢想象!Vim使用者的“大脑”竟是这样

    原始状态 我曾经观看过小提琴家非常有激情地拉弦演奏,我有了这种想法:也许我投入到文本编辑器中的脑细胞数量和他为投入所喜好的乐器的演奏中差不多吧.我还有种奇异的想象,当他独奏的时候,脑中的核磁共振图和我 ...

  3. 使用Js获取和更改FCKeditor编辑器里的内容

    之前在一个系统里使用了FCKeditor编辑器,由于项目需求需要在FCKeditor里添加一个自定义的按钮用于实现自己的需求 主要是在点击该按钮时删除或添加FCKeditor编辑器里的内容 其实是一个 ...

  4. 更改DNS轻松访问google.com,FaceBook,Youtube等

    将默认的Dns更改为42.120.21.30即可打开 https://www.google.com/ https://www.facebook.com/ https://www.youtube.com ...

  5. SpringMVC基于代码的配置方式(零配置,无web.xml)直接继承WebMvcConfigurerAdapter

    基于配置文件的web项目维护起来可能会更方便,但是有时候我们会有一些特殊的需求,比如防止客户胡乱更改配置,这时候我们需要给配置隐藏到代码中. 1.创建一个动态web项目(无需web.xml) 2.右键 ...

  6. [NPM] Avoid Duplicate Commands by Calling one NPM Script from Another

    We can get a lot of utility through CLI tools invoked via npm scripts. Many of these tools have APIs ...

  7. [AngularJS] $scope.$warchCollection

    For the $watch in last article, we watch 'user.password', actually it is a string. If you watch 'use ...

  8. ejs和swig对比的问题之一

    本来想测试下两者在nodejs中得执行速度,设置了一个测试数据,如下 var testData = { title:'测试标题', description: '<p>这是一个描述,里面用很 ...

  9. 使用Visual Studio 2017编译opencv 3.2版本

    一.背景介绍 opencv是一个很强大的开源的计算机视觉库,应用领域如人机互动,图像处理,人脸识别,和现实生活中智能设计的关系很紧密.现在官方提供的编译包中,c++的只提供了x64位的library, ...

  10. 14.2 事务的ACID属性

    14.2 事务的ACID属性正在更新内容.请稍后