Я использую CFileDialog, я установил начальный путь, как показано ниже, как показано в коде. Это не работает . Поправь меня, если я допустил ошибку.
CFileDialog* filedlg = new CFileDialog(TRUE,(LPCTSTR)NULL , (LPCTSTR)NULL , OFN_HIDEREADONLY| OFN_ENABLESIZING , (LPCTSTR)NULL , FromHandle (hImgDlg) ,0 , FALSE );
filedlg ->m_ofn.lpstrInitialDir = "C:\\" ;
if ( filedlg ->DoModal() == IDOK )
{
/*** do somthing here *****/
}
Если вы видите ссылку на OPENFILENAME
структура, вы увидите, что для lpstrInitialDir
В поле говорится, что:
Если
lpstrInitialDir
имеет то же значение, которое было передано в первый раз, когда приложение использовалоOpen
или жеSave As
В диалоговом окне в качестве исходного каталога используется последний выбранный пользователем путь.
Это означает, что lpstrInitialDir
Поле действительно может использоваться только при первом использовании диалогового окна в программе. В остальное время он будет использовать последний каталог, выбранный пользователем.
Если вы установите местоположение файла, вы можете открыть диалоговое окно в определенном месте. Я бы использовал это только в том случае, если вам действительно нужно открывать папку или если у вас есть имя файла по умолчанию, которое вы используете.
CFileDialog* filedlg = new CFileDialog(TRUE, (LPCTSTR)NULL, (LPCTSTR)_T("C:\\MyFolder\\DefaultFileName.ext"), OFN_HIDEREADONLY | OFN_ENABLESIZING, (LPCTSTR)NULL, FromHandle (hImgDlg), 0, FALSE);
или вы можете использовать функцию Windows GetModuleFileName
:
CString csAppFolder;
TCHAR szPath[MAX_PATH];
// form the path to where we want to store the file
if (GetModuleFileName(NULL, szPath, MAX_PATH))
{
PathRemoveFileSpec(szPath);
csAppFolder = szPath;
}
CFileDialog* filedlg = new CFileDialog(TRUE, (LPCTSTR)NULL, (LPCTSTR)(csAppFolder + _T("\\DefaultFileName.ext")), OFN_HIDEREADONLY | OFN_ENABLESIZING, (LPCTSTR)NULL, FromHandle (hImgDlg), 0, FALSE);
Два варианта:
1. Старомодный стиль диалога с указанием OFN :: lpstrInitialDir
CFileLatinDialog dlg (TRUE, "", "" /*lpszFileName */,
OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY,
"All Files(*.*)|*.*||", this, 0,
FALSE /*bVistaStyle*/);
dlg.m_ofn.lpstrInitialDir = "C:\\Models\\";
CFileLatinDialog dlg (TRUE, "", "C: \\ Models \\" / * lpszFileName * /, OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, "Все файлы (*. *) | *. * ||", это);