各位好!在做一个程序,其中ATL的windows shell调用MFC的DLL,DLL用的是标准C接口,传递用的是CString。
windows shell里的CString用的是ATL的,DLL接收值用的是MFC的CString。
查了资料,ATL和MFC中CString是通用的啊,我用的是VS2008.如:在windows shell里获得一个文件地址:“C:\1.TXT”
而在DLL里,接到的是“C”。其余的没有了。谢谢各位帮助。

解决方案 »

  1.   

    atl中的string类型,可以这样:string str;
    mfc中的CString,可以这样:CString mfcstr;
    mfcstr = str.c_str();
    str = mfcstr.GetBuffer(0);
      

  2.   

    DLL标准C接口用char*等,然后自己的CString来做转换.
      

  3.   

    只是名称相同,ATL跟MFC的CString完全是不同的类,虽然它们共享相同的模板类,但模板参数不同
      

  4.   

    谢谢各位了,问题我已经解决了,确实ATL和MFC之间可以用CString传递值,我是因为字符集的原因错了。ATL用的是UNCODE,而MFC用的是ASC。统一起来就好了。
    非常感谢各位。