初始目录不适合CFileDialog
Initial directory is not working for CFileDialog
本文关键字:不适合 CFileDialog 更新时间:2023-10-16
我使用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
字段实际上只能在程序中第一次使用对话框时使用。其余时间,它将使用用户选择的最后一个目录。
两个选项: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\";
- Vista样式对话框,指定lpszFileName参数 <>之前CFileLatinDialog dlg (TRUE, ", "C:\Models\"/*lpszFileName */,Ofn_pathmustexist | ofn_filemustexist | ofn_hidereadonly;所有文件(* . *)| *。* | |",这);
如果您设置了文件名位置,则可以将对话框打开到特定位置。如果你真的需要打开文件夹的位置,或者你有一个默认的文件名,我只会使用这个
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);
相关文章:
- 我适合在我的构建系统中使用 shell 脚本而不是AX_CHECK_COMPILE_FLAG吗?
- 指数近似不适合小输入或大输入
- 使用"JSON for Modern C++"库检测整数不适合指定类型?
- 为什么 std:: setw 和 std::hex 不适合下面的代码?
- 将 32 位浮点数和不强制转换的 32 位整数与双精度进行比较,当其中一个值可能太大而无法完全适合另一种类型时
- 此方法是否不适合在 std::unordered_map 中使用 2D 坐标作为键
- 在x86_64模式下,64 位数字不适合寄存器整数
- 为什么我的数据不适合CUDA纹理对象
- 以下等级表达式不适合Boost Regex
- C 尺寸不适合模板
- QTableView长标题字符串不适合
- 建设者的设计模式不适合我
- 从一个程序到另一个程序的管道输出不适合这个特定的程序
- QSortFilterProxyModel不适合我
- 不适合设备的ioctl
- c++ - OOP实现链表,我不知道为什么添加到末尾不适合我,请建议
- 初始目录不适合CFileDialog
- 重定位值不适合24位
- 为什么内联SQL不适合包含在应用程序中
- OpenCV中的视频显示窗口大小不适合视频