大家好,我有一个非技术问题,就是VS2005老是出问题,不知道为什么?我今天编一个剪贴板的程序,总是出错,我在VC6.0上面都可以运行,为何在VS2005上就不能运行了呢?化码如下:if(OpenClipboard()) {
EmptyClipboard();
HANDLE hClip;
char *pBuf;
CString str;
hClip=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);
pBuf=(char *)GlobalLock(hClip);
strcpy(pBuf,str);
        GlobalUnlock(hClip);
SetClipboardData(CF_TEXT,hClip);
CloseClipboard(); }
将在剪贴板里写内容。strcpy(pBuf,str); 这儿就出现错误了,说: 不能将参数 2 从“CString”转换为“const char *”
这是什么原因呢,帮帮忙啊!!

解决方案 »

  1.   

    strcpy(pBuf,str.GetBuffer());
    str.ReleaseBuffer();
      

  2.   

    那是因为默认情况下,VS2005使用的是unicode字符编码,你在工程属性里改一下就可以了,改成多字符编码,
    或都你使用int WideCharToMultiByte(
      UINT CodePage,            // code page
      DWORD dwFlags,            // performance and mapping flags
      LPCWSTR lpWideCharStr,    // wide-character string
      int cchWideChar,          // number of chars in string.
      LPSTR lpMultiByteStr,     // buffer for new string
      int cbMultiByte,          // size of buffer
      LPCSTR lpDefaultChar,     // default for unmappable chars
      LPBOOL lpUsedDefaultChar  // set when default char used
    );
    转换一下,