MFC程序在含有中文目录的情况下打不开的问题 我的MFC程序中调用CDialog::Create()函数初始化子对话框,子对话框中要用到查找文件目录的函数,在没有中文目录的情况下程序可以正常打开,但是只要程序所在的目录中含有中文汉字时就不能打开,而且显示占用CPU还不小求高人指点,在线急等,解决马上给分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 怎么使用?我的程序在项目属性中字符集使用的是“使用多字节字符集”,是将这个改成“使用Unicode字符集”吗,要是这样改的话原先很多函数的使用和定义就都报错了 都修改了吧,最好使用Unicode编码 用宽字符串加载路径,wstring等. 查找文件目录的函数 哪个??::SHBrowseForFolder么?还是CFileDialog?我一直多字符集开发的,至今没出过问题。 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); http://blog.csdn.net/zhoujielunzhimi/article/details/8082286先把unicode转换为ascii,然后载比较,可行否? 有点怪,既然提示“没有可用于当前位置的源代码”,那试试Clean之后重新编译一下试试,看看还有问题不。 程序本身是多字节字符集的,不是unicode转成ascii有什么用? 楼主你所说的情况,我前天也犯过,不过我错误的原因是主工程用了多字符。DLL却用了Unicode 编码。楼主这个是DLL么??另外contactDlg = new CcontactBooks(this->config);这个构造函数和Create函数先看看里面内容 我也有引用的第三方DLL库contactDlg = new CcontactBooks(this->config);这个构造函数和Create函数先看看里面内容这三句代码只是为了初始化一个子对话框,和内容有什么关系? m_iPosIndex = m_FilePath.ReverseFind('\\'); 类似这样的这么改试试:m_iPosIndex = m_FilePath.ReverseFind(_T('\\'));另外把字符串值赋给一个CString类型的变量,也就是如果你没赋给CString类型的变量,就再赋给CString类型变量,然后再把这个CString类型的值赋给相应的函数 用_T,_TEXT,TEXT,任意一个宏即可,比如TEXT("测试用") m_FilePath本身就是一个CString类型的变量啊。而且我在'\\'前加上_T也不行,程序还是运行到create()那停住,然后程序就会占用大量的CPU 这个如果要修改字符集为unicode的话要改的东西太多了,没法改难道就没有别的办法吗? 最好还是采用Unicode,之前也是为了省事每次都改成多字节,后来发现很多问题不好解决。当然也遇到过楼主同样的问题,同样是多字节下的中文路径的问题,采用以下3种方法都能解决。1.路径前面加上加 L"你的中文路径"2.打开文件的代码之前加上 setlocale(LC_ALL,"Chinese-simplified");3. #include <tchar.h> _T("你的中文路径") 就想问一个问题,有多少人是自学编程的? 有什么方法获取音频文件的基本信息 如何在程序等待一个程序的多个实例? 救助各位大哥 dll中能不能以FILE *作为输入参数? 请教高手:再一个简单的问题,再线等待 音频编程及录音高手看一看,如何控制音频接口?????一个复杂的问题 大家来讨论OICQ,联机对站游戏的实现 请教创建切分窗口的问题,急 用VC++编译C++程序?? VS2010莫名其妙的产生了错误 如何解决这个错误:_WIN32_WINNT settings conflicts with _WIN32_IE setting
我的程序在项目属性中字符集使用的是“使用多字节字符集”,是将这个改成“使用Unicode字符集”吗,要是这样改的话原先很多函数的使用和定义就都报错了
还是CFileDialog?我一直多字符集开发的,至今没出过问题。
{
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);
先把unicode转换为ascii,然后载比较,可行否?
转成ascii有什么用?
另外contactDlg = new CcontactBooks(this->config);这个构造函数和Create函数先看看里面内容
contactDlg = new CcontactBooks(this->config);这个构造函数和Create函数先看看里面内容这三句代码只是为了初始化一个子对话框,和内容有什么关系?
类似这样的这么改试试:
m_iPosIndex = m_FilePath.ReverseFind(_T('\\'));
另外把字符串值赋给一个CString类型的变量,也就是如果你没赋给CString类型的变量,就再赋给CString类型变量,然后再把这个CString类型的值赋给相应的函数
难道就没有别的办法吗?
当然也遇到过楼主同样的问题,同样是多字节下的中文路径的问题,采用以下3种方法都能解决。1.路径前面加上加 L"你的中文路径"2.打开文件的代码之前加上 setlocale(LC_ALL,"Chinese-simplified");3. #include <tchar.h>
_T("你的中文路径")