如何将CString对象放到剪切板SetClipboardData

//如何将CString  宽字节对象放到剪切板
CString str =  _T("欢迎来到东东博客!");

if (::OpenClipboard(m_hWnd))
    {
::EmptyClipboard();
//int n = str.GetLength()*2 +2;//多字符集实际字符长度
HANDLE hData = ::GlobalAlloc(GMEM_MOVEABLE,str.GetLength()*2 +2);
LPWSTR pData = (LPWSTR)::GlobalLock(hData);
::lstrcpy(pData,str);
::GlobalUnlock(hData);
//CF_UNICODETEXT
::SetClipboardData(CF_UNICODETEXT,hData); //多字符集
::CloseClipboard();
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 CString 对象的内容设置到剪贴中,可以使用 CWnd 类的 OpenClipboard() 和 CloseClipboard() 函数以及剪贴函数 SetClipboardData()。 以下是一个示例代码: ```cpp CString strData = _T("Hello, Clipboard!"); // 假设有一个 CString 对象 strData // 打开剪贴 if (OpenClipboard(NULL)) { // 清空剪贴内容 EmptyClipboard(); // 分配全局内存并复制 CString 数据 HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, (strData.GetLength() + 1) * sizeof(TCHAR)); if (hMem != NULL) { LPWSTR pMem = (LPWSTR)GlobalLock(hMem); if (pMem != NULL) { wcscpy_s(pMem, strData.GetLength() + 1, strData.GetBuffer()); GlobalUnlock(hMem); // 将数据设置到剪贴 SetClipboardData(CF_UNICODETEXT, hMem); } } // 关闭剪贴 CloseClipboard(); } ``` 在上述代码中,我们首先创建了一个名为 strData 的 CString 对象,并将要设置到剪贴的内容赋值给它。然后,我们使用 OpenClipboard() 函数打开剪贴,并使用 EmptyClipboard() 函数清空剪贴内容。 接下来,我们分配了全局内存,并使用 GlobalLock() 函数锁定内存,以便可以将 CString 数据复制到内存中。然后,我们使用 wcscpy_s() 函数将 CString 数据复制到内存中,并使用 GlobalUnlock() 函数解锁内存。 最后,我们使用 SetClipboardData() 函数将内存中的数据设置到剪贴,并使用 CloseClipboard() 函数关闭剪贴。 请注意,上述代码假设你正在使用 Unicode 字符集。如果你使用的是 ANSI 字符集,应将 CF_UNICODETEXT 更改为 CF_TEXT,并相应地调整内存分配和复制操作。 希望这能帮助到你!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值