if(dlg.DoModal()==IDOK)
{
CString strFile = dlg.GetPathName(); //选择对应文件(txt)全路径
//CString strFile =dlg.GetFileName () ; //选择对应文件(txt)名称
m_choicetxt.SetWindowText(strFile); //将路径显示在对话框中
UpdateData(FALSE);
}
win7下,在VS2010中利用CFiledialog类选择文件的方法如下:
CString strFile;
CString defFilter("数据文档(*.txt)|*.txt|所有文件(*.*)|*.*|"); //默认为txt和所有文件
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,defFilter);
if(dlg.DoModal()==IDOK)
{
CString strFile = dlg.GetPathName(); //选择对应文件(txt)全路径
//CString strFile =dlg.GetFileName () ; //选择对应文件(txt)名称
m_choicetxt.SetWindowText(strFile); //将路径显示在对话框中
UpdateData(FALSE);
}
上述代码在win7上运行成功,但是将程序转移到XP系统后,会提示“数据库连接失败”。找了很多资料,后来听说,如果是利用ado方式在win7上开发系统,那么在将系统安装到XP系统后,会出现不兼容问题(确实会后这方面的可能,因为WIN7和vista将msado15.dll进行拓展,因而无法兼容XP系统中的msado15.dll)。但是,我开发的系统原先在打包的时候就已经将win7下的msado15.dll一起打包了,所以肯定不是这方面的原因。
后来看了网友评论(http://bbs.csdn.net/topics/390082021),问题终于解决了。
应该将:CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,defFilter);
改为:CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_NOCHANGEDIR,defFilter);