1)在mfc中想按照自己设定的路径来打开fileDialog,其实CFileDialog有自己的变量 m_ofn,该变量为OPENFILENAME的结构体,用户可自己定义一些内容
例如 打开窗体的名字:
dlg.m_ofn.lpstrTitle = _T("遥测图片加载");
按照自己设定的路径打开dlg:
dlg.m_ofn.lpstrInitialDir = _T("C:\\Documents and Settings\\Administrator\\桌面\\2012.4.16\\DrawProgram1\\YCPicture");
在这里想说的是,使用相对路径
dlg.m_ofn.lpstrInitialDir = _T("res\\YCPicture");
总体代码如下:
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("图片文件(*.bmp;*.jpg;*.gif)|*.bmp;*.jpg;*.gif| 位图文件 (*.bmp)|*.bmp"),NULL);
//dlg.m_ofn.lpstrInitialDir = _T("C:\\Documents and Settings\\Administrator\\桌面\\2012.4.16\\DrawProgram1\\YCPicture");/*CString abc = GetSysPath(); 获得系统的绝对路径
dlg.m_ofn.lpstrInitialDir = GetSysPath();*/
dlg.m_ofn.lpstrInitialDir = _T("res\\YCPicture");
dlg.m_ofn.lpstrTitle = _T("遥测图片加载");
if (dlg.DoModal() == IDOK)
{
m_state0Str = dlg.GetPathName();
}
以上代码中的相对路径是有问题的,后来拿到另一台机子上测试,发现不正常,后来修改,根据以下获得的绝对路径来完成的:
代码如下:
也就是获得当前的路径后,根据自己的需要做些修改。
CString CYxPropertyDialog::GetSysPath(CString fileName)
{
TCHAR exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath, MAX_PATH);
CString szfolder = exeFullPath;
int pos = szfolder.ReverseFind('\\');
szfolder = szfolder.Left(pos);
pos = szfolder.ReverseFind('D');
szfolder = szfolder.Left(pos);
szfolder += fileName;
//在没遇到一个\ 符号添加一个\
/*CString str;
while(szfolder.GetLength()!= fileName.GetLength())
{
int xPos = szfolder.Find('\\');
str += szfolder.Left(xPos+1);
str += '\\';
int xx = szfolder.GetLength();
szfolder = szfolder.Right(szfolder.GetLength()-xPos-1);
}
str += fileName;*/
//szfolder = _T("C:\\Documents and Settings\\Administrator\\桌面\\DrawProgram1\\Debug");
return szfolder;
}
在调用该函数的部分:
CString strTemp = GetSysPath(_T("YCPicture"));
dlg.m_ofn.lpstrInitialDir = strTemp;
dlg.m_ofn.lpstrTitle = _T("遥测图片加载");
2)获得系统的绝对路径:
这个是摘自网络:
CString dlg::GetSysPath(void)
{
//CString szFile(_T(""));
TCHAR exeFullPath[MAX_PATH];
GetModuleFileName(NULL,exeFullPath, MAX_PATH);
CString szfolder = exeFullPath;
int pos = szfolder.ReverseFind('\\');
szfolder = szfolder.Left(pos+1);
return szfolder;
}
来源:CSDN
作者:zhoxier
链接:https://blog.csdn.net/zhoxier/article/details/7484116