怎么修改文档打开保存的初始路径
如何修改文档打开保存的初始路径
文档打开保存时,修改初始目录:
如下代码,当第一次保存时,可以;
第二次另存为,如果上次的保存路径不是设置的初始路径,初始路径会变为上次的路径
其中注释是添加的内容
CMyDocManger 继承自CDocManager
BOOL CMyDocManager::DoPromptFileName(CString& fileName, UINT nIDSTitle, DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate)
{
CFileDialog dlgFile(bOpenFileDialog);
CString title;
VERIFY(title.LoadString(nIDSTitle));
dlgFile.m_ofn.Flags |= lFlags;
CString strFilter;
CString strDefault;
if (pTemplate != NULL)
{
ASSERT_VALID(pTemplate);
_AfxAppendFilterSuffix(strFilter, dlgFile.m_ofn, pTemplate, &strDefault);
}
else
{
// do for all doc template
POSITION pos = m_templateList.GetHeadPosition();
BOOL bFirst = TRUE;
while (pos != NULL)
{
CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetNext(pos);
_AfxAppendFilterSuffix(strFilter, dlgFile.m_ofn, pTemplate,
bFirst ? &strDefault : NULL);
bFirst = FALSE;
}
}
// append the "*.*" all files filter
CString allFilter;
VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER));
strFilter += allFilter;
strFilter += (TCHAR)'\0'; // next string please
strFilter += _T("*.*");
strFilter += (TCHAR)'\0'; // last string
dlgFile.m_ofn.nMaxCustFilter++;
dlgFile.m_ofn.lpstrFilter = strFilter;
dlgFile.m_ofn.lpstrTitle = title;
dlgFile.m_ofn.lpstrFile = fileName.GetBuffer(_MAX_PATH);
// TCHAR szMyDocPath[256];
// _tcscpy(szMyDocPath, _T("C:\\"));
// dlgFile.m_ofn.lpstrInitialDir = szMyDocPath;
int nResult = dlgFile.DoModal();
fileName.ReleaseBuffer();
return nResult == IDOK;
}
------解决方案--------------------
这个问题是这个样子的,以前我也郁闷过一次
CFileDialog的问题,它和GetCurrentDirectory是联动的。
GetCurrentDirectory会随着CFileDialog打开使用而改变。
给某个Cstring附个初始值,打开CFileDialog后,如果Cstring是初始值则把路径附上,如果不是则不附。
------解决方案--------------------
CFileDialog里设置初始路径(参数lpstrInitialDir
------解决方案--------------------
如果你在CFileDialog对话框中改变了目录,那么当前目录也改了,可以在CFileDialog的dwFlags 设置标志OFN_NOCHANGEDIR就可以了,不会改变目录的。
------解决方案--------------------
CFileDialog的dwFlags 设置标志OFN_NOCHANGEDIR
文档打开保存时,修改初始目录:
如下代码,当第一次保存时,可以;
第二次另存为,如果上次的保存路径不是设置的初始路径,初始路径会变为上次的路径
其中注释是添加的内容
CMyDocManger 继承自CDocManager
BOOL CMyDocManager::DoPromptFileName(CString& fileName, UINT nIDSTitle, DWORD lFlags, BOOL bOpenFileDialog, CDocTemplate* pTemplate)
{
CFileDialog dlgFile(bOpenFileDialog);
CString title;
VERIFY(title.LoadString(nIDSTitle));
dlgFile.m_ofn.Flags |= lFlags;
CString strFilter;
CString strDefault;
if (pTemplate != NULL)
{
ASSERT_VALID(pTemplate);
_AfxAppendFilterSuffix(strFilter, dlgFile.m_ofn, pTemplate, &strDefault);
}
else
{
// do for all doc template
POSITION pos = m_templateList.GetHeadPosition();
BOOL bFirst = TRUE;
while (pos != NULL)
{
CDocTemplate* pTemplate = (CDocTemplate*)m_templateList.GetNext(pos);
_AfxAppendFilterSuffix(strFilter, dlgFile.m_ofn, pTemplate,
bFirst ? &strDefault : NULL);
bFirst = FALSE;
}
}
// append the "*.*" all files filter
CString allFilter;
VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER));
strFilter += allFilter;
strFilter += (TCHAR)'\0'; // next string please
strFilter += _T("*.*");
strFilter += (TCHAR)'\0'; // last string
dlgFile.m_ofn.nMaxCustFilter++;
dlgFile.m_ofn.lpstrFilter = strFilter;
dlgFile.m_ofn.lpstrTitle = title;
dlgFile.m_ofn.lpstrFile = fileName.GetBuffer(_MAX_PATH);
// TCHAR szMyDocPath[256];
// _tcscpy(szMyDocPath, _T("C:\\"));
// dlgFile.m_ofn.lpstrInitialDir = szMyDocPath;
int nResult = dlgFile.DoModal();
fileName.ReleaseBuffer();
return nResult == IDOK;
}
------解决方案--------------------
这个问题是这个样子的,以前我也郁闷过一次
CFileDialog的问题,它和GetCurrentDirectory是联动的。
GetCurrentDirectory会随着CFileDialog打开使用而改变。
给某个Cstring附个初始值,打开CFileDialog后,如果Cstring是初始值则把路径附上,如果不是则不附。
------解决方案--------------------
CFileDialog里设置初始路径(参数lpstrInitialDir
------解决方案--------------------
如果你在CFileDialog对话框中改变了目录,那么当前目录也改了,可以在CFileDialog的dwFlags 设置标志OFN_NOCHANGEDIR就可以了,不会改变目录的。
------解决方案--------------------
CFileDialog的dwFlags 设置标志OFN_NOCHANGEDIR