由于从控件上得到的数据是宽字符,所以分配空间的时候需要
注意的是单行数据长度要乘以2作为GlobalAlloc分配的大小
void Show::OnLbnDblclkListResult()
{
int curSel = m_listResult.GetCurSel();
CString str;
m_listResult.GetText(curSel, str);
BOOL bret = OpenClipboard();
EmptyClipboard();
int len = str.GetLength() * 2;
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, len + 2);
wchar_t *p = (wchar_t*)GlobalLock(hGlobal);
wmemset(p, 0, str.GetLength()+1);
wmemcpy(p, str.GetBuffer(), str.GetLength()+1);
bret = GlobalUnlock(hGlobal);
HANDLE hResult = SetClipboardData(CF_UNICODETEXT, hGlobal);
w_return_if_fail(NULL!=hResult);
CloseClipboard();
str.Format(L"拷贝数据到剪切板成功, 长度:%d", str.GetLength());
MessageBox(str);
}
本文详细介绍了如何在控件中获取宽字符数据,并将其正确地复制到剪切板中,包括分配适当大小的内存、锁定和解锁全局内存块等关键步骤。
5362

被折叠的 条评论
为什么被折叠?



