zoukankan      html  css  js  c++  java
  • CFileDialog自动改变当前目录问题解决方案

    	// TODO: 在此添加控件通知处理程序代码
    	CString strSuffix=L"*.*";
    	CString strDefaultFile = L"C:\A\B.gif";
    	CString szFilterFDlg;
    	szFilterFDlg.Format(L"Suit Files (*.%s)|*.%s|", strSuffix, strSuffix);
    	CFileDialog f(TRUE, strSuffix, strDefaultFile , OFN_HIDEREADONLY, szFilterFDlg, NULL);
    	//CFileDialog f(TRUE);
    	f.m_ofn.lpstrInitialDir = L"C:\A"; //这写入初始目录
    	f.m_ofn.Flags |= OFN_NOCHANGEDIR;  
    	if( IDOK == f.DoModal() )
    	{
    		AfxMessageBox( f.GetPathName() );
    	}

    今天碰到一个奇怪的问题,代码如下

    1. // “文件对话框”执行前获取程序所在路径  
    2.     char szFilePath[MAX_PATH];  
    3.     GetCurrentDirectory(MAX_PATH, szFilePath);  
    4.     CString strFilePath = szFilePath;  
    5.     AfxMessageBox(strFilePath);  
    6.       
    7.     CFileDialog dlg(TRUE);  
    8.     dlg.DoModal();  
    9.   
    10.     // “文件对话框”执行后获取程序所在路径  
    11.     GetCurrentDirectory(MAX_PATH, szFilePath);  
    12.     strFilePath = szFilePath;  
    13.     AfxMessageBox(strFilePath);  

    我发现“文件对话框”执行前后,获取程序所在路径不一致,具体描述如下。假设我的可执行文件Test.exe

    位于D:下,则程序执行第一段得到的当前目录确实是D:,程序执行打开”文件对话框“时,我选择打开

    C:Debug1.txt后,再获取程序所在的路径,这时不再是D:,而是C:Debug了。

    下面说下2种解决方案

    (1)笨方法:打开”文件对话框“执行前先将可执行文件所在路径保存到一个变量中,这样即使执行了

    打开”文件对话框,也可以访问到执行打开”文件对话框“的那个路径

    (2)其实,可以设置打开”文件对话框“不让其改变当前路径,具体代码如下,不解释

    注意CFileDialog成员m_ofn中的Flags选项设置

    1. // “文件对话框”执行前获取程序所在路径  
    2.     char szFilePath[MAX_PATH];  
    3.     GetCurrentDirectory(MAX_PATH, szFilePath);  
    4.     CString strFilePath = szFilePath;  
    5.     AfxMessageBox(strFilePath);  
    6.       
    7.     CFileDialog dlg(TRUE);  
    8.     dlg.m_ofn.Flags |= OFN_NOCHANGEDIR;  
    9.     dlg.DoModal();  
    10.   
    11.     // “文件对话框”执行后获取程序所在路径  
    12.     GetCurrentDirectory(MAX_PATH, szFilePath);  
    13.     strFilePath = szFilePath;  
    14.     AfxMessageBox(strFilePath);  


  • 相关阅读:
    171. Excel Sheet Column Number (Easy)
    349. Intersection of Two Arrays (Easy)
    453. Minimum Moves to Equal Array Elements (Easy)
    657. Judge Route Circle (Easy)
    CSS笔记
    保存页面状态
    UI开发总结
    ubuntu 下配置munin
    反向代理配置
    JavaScript 高级程序设计第二版
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318285.html
Copyright © 2011-2022 走看看