我是这么写的:(strTmp是CString类型, 前面已经有了有效值)if (OpenClipboard())
{
EmptyClipboard(); HANDLE hClip = (HANDLE)GlobalAlloc(GMEM_MOVEABLE, (strTmp.GetLength() + 1) * 2); WCHAR* pBuf = (WCHAR* )GlobalLock(hClip);
pBuf = strTmp.GetBuffer();
GlobalUnlock(hClip);
SetClipboardData(CF_UNICODETEXT, hClip);
CloseClipboard();
}请问这段代码哪里有问题?
{
EmptyClipboard(); HANDLE hClip = (HANDLE)GlobalAlloc(GMEM_MOVEABLE, (strTmp.GetLength() + 1) * 2); WCHAR* pBuf = (WCHAR* )GlobalLock(hClip);
pBuf = strTmp.GetBuffer();
GlobalUnlock(hClip);
SetClipboardData(CF_UNICODETEXT, hClip);
CloseClipboard();
}请问这段代码哪里有问题?
这句是把指针pBuf重新赋值了一下, 但是你新申请的内存依然是随机值, 自然就是乱码了
如果想将字符串拷贝到新内存, 用strncpy_s 或者 sprintf_s等函数