MFC 是不是提供了一种在剪贴板上快速放置文本的方法?

Posted

技术标签:

【中文标题】MFC 是不是提供了一种在剪贴板上快速放置文本的方法?【英文标题】:Does MFC provide a quick way to throw text on the clipboard?MFC 是否提供了一种在剪贴板上快速放置文本的方法? 【发布时间】:2010-02-12 16:47:50 【问题描述】:

我们的代码库中的添加到剪贴板代码是相当低级的——分配全局内存等等。对于简单的情况,我只想在剪贴板上放一些纯文本,有没有可以包装所有内容的例程?

一个例子是 CRichEditCtrl 具有 Copy() 和 Cut() 方法,可以自动将当前选择放在剪贴板上。 MFC 是否使这种功能单独可用?

更新:根据 mwigdahl 的回复创建了 new question

【问题讨论】:

我知道的只有一个msdn.microsoft.com/en-us/library/sze892zx%28VS.80%29.aspx,我认为这是您已经在使用的。即使不是,它也几乎不会给您带来太多额外的好处,因为您几乎可以肯定仍然需要调用 GlobalAlloc 或类似方法。 【参考方案1】:

不,但自己包装并不难。改编自Frost Code(未经测试):

void SetClipboardText(CString & szData)

    HGLOBAL h;
    LPTSTR arr;

    h=GlobalAlloc(GMEM_MOVEABLE, szData.GetLength()+1);
    arr=(LPTSTR)GlobalLock(h);
    strcpy_s((char*)arr, szData.GetLength()+1, szData.GetBuffer());
    szData.ReleaseBuffer();
    GlobalUnlock(h);

    ::OpenClipboard (NULL);
    EmptyClipboard();
    SetClipboardData(CF_TEXT, h);
    CloseClipboard();

【讨论】:

我调整了您的代码以编译并且不会在 Unicode(次要)上崩溃并遇到另一个问题。请看这里:***.com/questions/2265382/…

以上是关于MFC 是不是提供了一种在剪贴板上快速放置文本的方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何粘贴而不覆盖寄存器

Java on Truffle:实现真正的元循环

一种在 numpy 数组中查找最大 N 个元素的快速方法

粘贴前更新剪贴板数据(不是“粘贴”事件)

VB如何利用剪贴板复制、粘贴文件,用到啥API

MFC程序怎样实现“复制”“粘贴”功能,我做了一个程序,在窗口客户区显示表格和文字,但不能复制粘贴