CFileDialog dlg(true );
if (dlg.DoModal()==IDOK)
{
path = dlg.GetPathName();
pLogFile = fopen("Log.txt", "wt+");
fprintf(pLogFile, "%s", (LPCSTR)path);
fclose(pLogFile);
pLogFile = NULL;
}
工程目录下有一个Log.txt的日志文件,我想弹出一个打开文件对话框,
选择一个文件后,想把选择的这个文件全路径记录到日志文件中。但是
我发现在工程目录下的Log.txt中根本没有写入,而是在刚才打开文件
对话框选择的路径下创建一个新的Log.txt。
也就是打开文件对话框修改了默认路径,使得默认路径不是当前工程目录了,
请问怎么让打开文件对话框的时候,不修改默认路径呢?
7 个解决方案
#1
自己用GetCurrentDirectory看一下当前目录
再说了,你都dlg.GetPathName了,就用返回的文件路径得了
再说了,你都dlg.GetPathName了,就用返回的文件路径得了
#2
你可以指定初始路径,OPENFILENAME结构体中的lpstrInitialDir成员
#3
在最开始获取当前路径,
CString strPath;
GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));
然后在文件打开设置这个绝对路径
CString strPath;
GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));
然后在文件打开设置这个绝对路径
#4
CFileDialog fd(TRUE);
//
if(strlen(m_KeptPath)==0) fd.m_ofn.lpstrInitialDir="D:\\";
else fd.m_ofn.lpstrInitialDir=m_KeptPath;
fd.m_ofn.lpstrDefExt=".arc";
fd.m_ofn.Flags|=OFN_PATHMUSTEXIST;//
fd.m_ofn.Flags|=OFN_NOCHANGEDIR;//keep same dir
//
if (fd.DoModal()==IDCANCEL) return;
#5
先获得,当前程序的目录和文件名
TCHAR szWorkPath[MAX_PATH];
DWORD nLen = GetModuleFileName(NULL, szWorkPath, sizeof(szWorkPath));
再去掉,文件名
*(_tcsrchr(szWorkPath,_T('\\'))+1)=NULL;
CString strDir = szWorkPath;
log文件名
CString strLog = strDir + _T("Log.txt");
TCHAR szWorkPath[MAX_PATH];
DWORD nLen = GetModuleFileName(NULL, szWorkPath, sizeof(szWorkPath));
再去掉,文件名
*(_tcsrchr(szWorkPath,_T('\\'))+1)=NULL;
CString strDir = szWorkPath;
log文件名
CString strLog = strDir + _T("Log.txt");
#6
重新获得路径
#7
找到答案了!!!
即再创建CFileDialog时这样设置:
CFileDialog fileDiaog(TRUE, NULL, NULL, OFN_NOCHANGEDIR);
#1
自己用GetCurrentDirectory看一下当前目录
再说了,你都dlg.GetPathName了,就用返回的文件路径得了
再说了,你都dlg.GetPathName了,就用返回的文件路径得了
#2
你可以指定初始路径,OPENFILENAME结构体中的lpstrInitialDir成员
#3
在最开始获取当前路径,
CString strPath;
GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));
然后在文件打开设置这个绝对路径
CString strPath;
GetCurrentDirectory(MAX_PATH,strPath.GetBuffer(MAX_PATH));
然后在文件打开设置这个绝对路径
#4
CFileDialog fd(TRUE);
//
if(strlen(m_KeptPath)==0) fd.m_ofn.lpstrInitialDir="D:\\";
else fd.m_ofn.lpstrInitialDir=m_KeptPath;
fd.m_ofn.lpstrDefExt=".arc";
fd.m_ofn.Flags|=OFN_PATHMUSTEXIST;//
fd.m_ofn.Flags|=OFN_NOCHANGEDIR;//keep same dir
//
if (fd.DoModal()==IDCANCEL) return;
#5
先获得,当前程序的目录和文件名
TCHAR szWorkPath[MAX_PATH];
DWORD nLen = GetModuleFileName(NULL, szWorkPath, sizeof(szWorkPath));
再去掉,文件名
*(_tcsrchr(szWorkPath,_T('\\'))+1)=NULL;
CString strDir = szWorkPath;
log文件名
CString strLog = strDir + _T("Log.txt");
TCHAR szWorkPath[MAX_PATH];
DWORD nLen = GetModuleFileName(NULL, szWorkPath, sizeof(szWorkPath));
再去掉,文件名
*(_tcsrchr(szWorkPath,_T('\\'))+1)=NULL;
CString strDir = szWorkPath;
log文件名
CString strLog = strDir + _T("Log.txt");
#6
重新获得路径
#7
找到答案了!!!
即再创建CFileDialog时这样设置:
CFileDialog fileDiaog(TRUE, NULL, NULL, OFN_NOCHANGEDIR);