//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中都成乱码了,有些编辑框是正常的。

解决方案 »

  1.   


    如何处理MBCS?我也不想用Unicode!
      

  2.   

    我不用Unicode怎么解决这个问题呢?
      

  3.   

    难道上面那段代码有问题?
    还是windows2000系统就有问题,连VC6的中文复制到记事本中都成乱码,好多地方都是如此!可不可在粘贴时,根据剪贴板中的数据再进行处理呢?
      

  4.   

    char* pBuffer = (char*)GlobalLock(hGlobal);
                               // 调用这个函数转换字符 ----------- 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;
    }
      

  5.   

    HGLOBAL hClipboardData = GlobalAlloc(GMEM_DDESHARE,cszWindowText.GetLength()+1);
    //改为HGLOBAL hClipboardData = GlobalAlloc(GMEM_DDESHARE,lstrlen(cszWindowText));
      

  6.   

    GlobalFree(hGlobal);
    最后要初始化
      

  7.   

    huwei001982(編程浪子):
    你这样做会导致异常,必须要再加一个字节,使用lstrlen也是同样的乱码啊~~gooyan(超级替补):问题还是解决不了。是windows2000的乱码问题吧!?!
      

  8.   

    看来很多人不知道windows2000系统本身的乱码问题