MFC中对于剪切板的简单操作

以ASCII编码的文本为例:

复制操作:

char sc[]="要复制的文本";
HGLOBAL hmem=NULL;
if (OpenClipboard()) //是否成功打开剪帖板
{
    if (EmptyClipboard())//清空成功,则继续
    {
        hmem=GlobalAlloc(GHND,sizeof(sc));//memalloc strlen+1 \0
        char* pmem= (char*)GlobalLock(hmem);
        memcpy(pmem,sc,sizeof(sc));
        // SetClipboardData()
        SetClipboardData(CF_TEXT,hmem);
        GlobalUnlock(hmem);
    }
    //关闭剪贴板
    CloseClipboard();
}

粘贴操作:

//一、 判断剪贴数据格式是否是我们需要的
HGLOBAL hmem=NULL;
char s[256]="";
if (IsClipboardFormatAvailable(CF_TEXT)) //CF_UNICODETEXT
{
    //二、 打开剪贴板
    if (OpenClipboard())
    {
        //三、 获取剪贴板句柄
        hmem=GetClipboardData(CF_TEXT);
        if (hmem)
        {
             //四、 锁定全局内存获取缓冲区指针,
             char* ps=(char*)GlobalLock(hmem);
             //取出数据
             memcpy(s,ps,GlobalSize(hmem));
             //五、 关闭剪贴板,以使其它程序可以访问,释放掉内存锁
             GlobalUnlock(hmem);
        }
        CloseClipboard();
    }
}

MFC中对于剪切板的简单操作

时间: 2024-10-08 14:03:17

MFC中对于剪切板的简单操作的相关文章

Java中有关剪切板的操作

Java提供两种类型的剪贴板:系统的和本地的. 本地剪贴板只在当前虚拟机中有效.Java允许多个本地剪贴板同时存在,可以方便地通过剪贴板的名称来进行存取访问. 系统剪贴板与同等操作系统直接关连,允许应用程序与运行在该操作系统下的其它程序之间进行信息交换. 在进一步深入之前,先看看与剪贴板相同的java类,这些类主要包含在java.awt.datatransfer包中,主要有以下几种: Clipboard类: 此类实现一种使用剪切/复制/粘贴操作传输数据的机制. ClipboardOwner接口:

vue中使用剪切板插件 clipboard.js

vue中使用剪切板需要借助一个插件,clipboard,使用方法还是很简单的,先下载,然后引入: npm i clipboard -S //引入 import Clipboard from 'clipboard'; 下面就是使用了,比如说,比较常见的是,上面一行文字,下面有一个复制的按钮, <p id="share-code">{{init.code}}</p> <button class="copy-btn" data-clipboa

vSphere Client中虚拟机与客户机中的剪切板不能够拷贝、粘贴

现象 vSphere Client中的虚拟机不能够与本地电脑之间进行文字的复制.粘贴 原因 vSphere 4.1开始,处于安全考虑拷贝.粘贴选项是被禁用的 解决 保证客户机安装了VMware Tools 通过vSphere Clinet 登录vCenter Server系统并关闭虚拟机电源. 选中虚拟机点击 摘要(Summary) 点击编辑设置 (Edit Settings) 浏览导航条到 选项 > 高级 > 常规 (Options > Advanced > General )

vi中系统剪切板的设置

在vi中,如果编译时没有clipboard属性,将vi中的内容拷贝到系统剪切板有些麻烦.可以用如下的方法,查看vi 是否支持系统剪切板的功能: [email protected]:~$ vi --version | grep clipboard -clipboard +iconv +path_extra -toolbar +eval +mouse_dec +startuptime -xterm_clipboard 如果如上所示,不支持系统剪切板功能,可以如下在.vimrc中的设置,解决问题: "

MFC中Listbox控件的简单使用

MFC中listbox控件是为了显示一系列的文本,每个文本占一行.   Listbox控件可以设置属性为: LBS_CHILD   :(默认)子窗口 LBS_Visible :(默认)可视 LBS_Multiplesel :可选择多行 LBS_Extendedsel :可以使用shift或ctrl选择多行 LBS_SORT:所有行按字母顺序进行排序   对Listbox进行操作: Int listbox.AddString (  LPCTSTR     Str)   :对listbox的首行添加

浏览器中用JavaScript获取剪切板中的文件

本文转自我的个人网站  , 原文地址:http://www.zoucz.com/blog/2016/01/29/get-file-from-clipboard/  ,欢迎前往交流讨论 在网页上编辑内容时,有时候需要插入图片,一般的做法是: 从网络上下载图片至本地 or 截图保存至本地 在编辑器中点击图片上传按钮,选择本地文件,等待上传完成 将上传好的图片链接插入编辑器中 这样做太麻烦了,我比较喜欢的操作是开着QQ或者其他的一些截图工具,截图-粘贴 .为了这样做我们需要在浏览器中获取剪切板中的文件

使用clipboard.js复制页面内容到剪切板

最近在做一个的智能客服Web端浏览器应用,其中有一项需求是客户在获取系统返回的 答案后点击“复制答案”按钮将答案复制到系统剪切板.本以为这是一个小case,但是发现如果 要对各种主流浏览器都有良好的兼容性并不简单.原因在于出于安全原因,大多数现代浏览 器都未提供通用的剪贴板复制接口(或即便有,也默认被禁用). 上网搜索了一下,现有的方案大致有两种: 一:使用原生javascript中window.clipboardData实现复制到剪贴板功能: 二:使用Zero Clipboard库: 在尝试了

C# 线程间不能调用剪切板的问题

最近做一个项目,需要用到线程,而且要用到剪切板,创建了一个子线程之后发现在子线程中剪切板上获取不到数据,当时特别纳闷,上网查资料,最后终于搞定,现将解决方法归纳如下: 第一步: public void btnAutoFocus_Click(object sender,EventArgs e) { Thread myThread = new Thread(msc.AutoFocusArithmetic); //注意,一般启动一个线程的时候没有这句话,但是要操作剪切板的话这句话是必需要加上的,因为剪

# vim与系统剪切板交互

vim与系统剪切板交互 vim中拥有不少的剪切板(当然,现在的windows10也拥有不少的剪切板).但是有时候与系统 的剪切版的交互不太习惯,甚至都不知道如何与系统的剪切板交互. 因为毕竟在windows中的编辑器一般都只有一个剪切板,并且是系统剪切板.所以很容易的 就可以和系统中的其他软件交互. 然而,其实vim也可以很容易就和系统交互. vim中拥有多个剪切板.其中"为无名剪切板(默认剪切板),一般操作的内容都在这里.而0号剪切板为最近操作的内容,*剪切板关联着系统剪切板,我们就可以通过这