我的MFC程序中调用CDialog::Create()函数初始化子对话框,子对话框中要用到查找文件目录的函数,在没有中文目录的情况下程序可以正常打开,但是只要程序所在的目录中含有中文汉字时就不能打开,而且显示占用CPU还不小
求高人指点,在线急等,解决马上给分

解决方案 »

  1.   

    怎么使用?
    我的程序在项目属性中字符集使用的是“使用多字节字符集”,是将这个改成“使用Unicode字符集”吗,要是这样改的话原先很多函数的使用和定义就都报错了
      

  2.   

    都修改了吧,最好使用Unicode编码
      

  3.   

    用宽字符串加载路径,wstring等.
      

  4.   

    查找文件目录的函数  哪个??::SHBrowseForFolder么?
    还是CFileDialog?我一直多字符集开发的,至今没出过问题。
      

  5.   

    static CString GetFilePath()
    {   
          CString m_FilePath;      GetModuleFileName(NULL,m_FilePath.GetBufferSetLength(MAX_PATH),MAX_PATH);      m_FilePath.ReleaseBuffer();      int m_iPosIndex;      m_iPosIndex = m_FilePath.ReverseFind('\\');       m_FilePath = m_FilePath.Left(m_iPosIndex);   m_FilePath = (_TEXT( m_FilePath+"\\"));      return m_FilePath;
    }
    这是我的文件目录查找函数,我单独写了个查找的小程序,输出查找路径,有中文也没事
    但是在项目中我单步跟踪,发现有中文目录的时候会在
            contactDlg = new CcontactBooks(this->config);
    contactDlg->Create(IDD_D_contact, this);//(会在这一句停住,提示“没有可用于当前位置的源代码”)
    ShowWindow(SW_SHOWNORMAL);
      

  6.   

    http://blog.csdn.net/zhoujielunzhimi/article/details/8082286
    先把unicode转换为ascii,然后载比较,可行否?
      

  7.   

    有点怪,既然提示“没有可用于当前位置的源代码”,那试试Clean之后重新编译一下试试,看看还有问题不。
      

  8.   

    程序本身是多字节字符集的,不是unicode
    转成ascii有什么用?
      

  9.   

    楼主你所说的情况,我前天也犯过,不过我错误的原因是主工程用了多字符。DLL却用了Unicode 编码。楼主这个是DLL么??
    另外contactDlg = new CcontactBooks(this->config);这个构造函数和Create函数先看看里面内容
      

  10.   

    我也有引用的第三方DLL库
    contactDlg = new CcontactBooks(this->config);这个构造函数和Create函数先看看里面内容这三句代码只是为了初始化一个子对话框,和内容有什么关系?
      

  11.   

    m_iPosIndex = m_FilePath.ReverseFind('\\');  
    类似这样的这么改试试:
    m_iPosIndex = m_FilePath.ReverseFind(_T('\\'));
    另外把字符串值赋给一个CString类型的变量,也就是如果你没赋给CString类型的变量,就再赋给CString类型变量,然后再把这个CString类型的值赋给相应的函数  
      

  12.   

    用_T,_TEXT,TEXT,任意一个宏即可,比如TEXT("测试用")
      

  13.   

    m_FilePath本身就是一个CString类型的变量啊。而且我在'\\'前加上_T也不行,程序还是运行到create()那停住,然后程序就会占用大量的CPU
      

  14.   

    这个如果要修改字符集为unicode的话要改的东西太多了,没法改
    难道就没有别的办法吗?
      

  15.   

    最好还是采用Unicode,之前也是为了省事每次都改成多字节,后来发现很多问题不好解决。
    当然也遇到过楼主同样的问题,同样是多字节下的中文路径的问题,采用以下3种方法都能解决。1.路径前面加上加 L"你的中文路径"2.打开文件的代码之前加上 setlocale(LC_ALL,"Chinese-simplified");3. #include <tchar.h> 
    _T("你的中文路径")