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 是不是提供了一种在剪贴板上快速放置文本的方法?的主要内容,如果未能解决你的问题,请参考以下文章