本帖最后由 qq496683952 于 2010-05-18 16:23:22 编辑

解决方案 »

  1.   

    str = m_sourcelist.GetItemText(i,0); str1,你是怎么定义的。
       MultiByteToWideChar (CP_ACP,0,strd[i],-1,str.GetBuffer(),dwMinSize); 
    这个你修改了没有???
      

  2.   

    str1的定义是CString 红色部分也修改了str1和str的定义是相同的 只是名称不同
      

  3.   

    能不用GetBuffer最好别用
    如果用的话记住这个和ReleaseBuffer是一一对应的
    你在循环里调用了i_num次GetBuffer
    就应该释放i_num次
      

  4.   


    在后面的循环里面调用ReleaseBuffer直接出错了。。呵呵 不过还是听你的意见 在后面的for循环没使用GetBuffer。直接定义了LPWSTR str1 = new TCHAR [128]然后定义一个CString str11 = str1 这样之后正常了。 呵呵
      

  5.   

    突然明白:Unicode环境下面LPCWSTR 与CString 之间是不用转换的。能够直接赋值。GetBuffer折腾了我大半天,原来可以避免不用 呵呵  
      

  6.   

    GetBuffer不可靠
    CString什么都好
    就是这个我极不推荐
      

  7.   

    觉悟:
            LPCWSTR 其实就是TCHAR * 类型 
            CString 其实就是TCHAR 类型

    就如同:int x = 0;
           int *p = x;

    一样