//copy to clipboard Turelies 2004-7-31 20:03:26
HGLOBAL hClipboardData = GlobalAlloc(GMEM_DDESHARE,cszWindowText.GetLength()+1);
char* pchData = (char*)GlobalLock(hClipboardData);
_tcscpy(pchData,(char*)(LPCTSTR)cszWindowText);
GlobalUnlock(hClipboardData); ::OpenClipboard(NULL);
::EmptyClipboard();
::SetClipboardData(CF_TEXT,hClipboardData);
::CloseClipboard();
复制中文后,粘贴到记事本和VS.net中都成乱码了,有些编辑框是正常的。
如何处理MBCS?我也不想用Unicode!
还是windows2000系统就有问题,连VC6的中文复制到记事本中都成乱码,好多地方都是如此!可不可在粘贴时,根据剪贴板中的数据再进行处理呢?
// 调用这个函数转换字符 ----------- 1
if(0 == MultiByteToWideChar(CP_ACP, 0,
(LPCTSTR)Item .m_sFolderPath , Item .m_sFolderPath .GetLength() + 1,
(WCHAR*)pBuffer, iBufferLenInBytes ))
{
GlobalUnlock(hGlobal);
CloseClipboard();
GlobalFree(hGlobal);
return;
}
然后是:
// Set Clipboard Data
// 用CF_UNICODETEXT,而不是CF_TEXT ----------------- 2
if(NULL == SetClipboardData(CF_UNICODETEXT, hGlobal))
{
GlobalUnlock(hGlobal);
CloseClipboard();
GlobalFree(hGlobal);
return;
}
//改为HGLOBAL hClipboardData = GlobalAlloc(GMEM_DDESHARE,lstrlen(cszWindowText));
最后要初始化
你这样做会导致异常,必须要再加一个字节,使用lstrlen也是同样的乱码啊~~gooyan(超级替补):问题还是解决不了。是windows2000的乱码问题吧!?!