MFC中使用CFileDialog后,默认路径没有变成选中文件的路径,是什么原因呢?

我想新建一个项目文件夹,运行程序生成文件后直接存入该文件夹,看了很多cfiledialog的说明,都说会直接改变默认路径到这个生成的文件夹下,刚好满足要求。但是实际操作后发现默认路径并没有改变。
cfiledialog不是在MFC主对话框cpp内使用的,而是在其他对话框内调用,是不是因为这个原因,才导致默认路径是MFC程序所在路径?


CFileDialog   FileDlg(TRUE,_T("*.exe"),NULL,OFN_HIDEREADONLY   |   OFN_OVERWRITEPROMPT,_T("Exe   files(*.exe)|*.exe|All   files   (*.*)|*.*||"));  
    FileDlg.m_ofn.lpstrInitialDir=_T("D:\\");  //设置默认目录
   
    if(FileDlg.DoModal()==IDOK)  
    {  

    }


void StartDlg::OnBnClickedButton2()
{
    // TODO: 在此添加控件通知处理程序代码
    //////////////使用CFileDialog后,程序当前路径会变为选中文件的路径????????????????////////////////////////////////////
    BOOL isOpen = TRUE;        //是否打开(否则为保存)
    CString defaultDir = L"";    //默认的文件扩展名
    CString fileName = L"Label.dddd";            //默认的文件名
    CString filter = L"LabelFile (*.dddd)|*.dddd||";    //可选择文件的类型
    CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, filter, NULL);
    openFileDlg.m_ofn.lpstrInitialDir = _T("G:\\Project");  //////////默认文件路径设置    
    if(openFileDlg.DoModal() == IDOK) 
    {
        defaultDir = openFileDlg.GetPathName();
        FolderPath = openFileDlg.GetFolderPath();
    }
    if (PathFileExists(defaultDir))
    {
        /////////////////////////符合项目要求(有Label.dddd文件)则保存其所在文件夹路径至编辑框
        CWnd::SetDlgItemTextW(IDC_Path, defaultDir);
        
    }
    else
    {
           /////////////////不符合项目要求(没有Label.dddd文件)则报错
        ErrorReportDlg1 m_errordlg1;
        m_errordlg1.DoModal();
    }

}

在这个Button2里面调用了CFileDialog..就是想打开一个已有项目,然后在这个已有项目文件夹下进行读取和存储txt文件,在每个项目下我放了Label.dddd这个文件作为标识,如果有这个文件说明符合项目要求,没有则说明不是项目文件。
这样打开一个已有项目后,就是说CFileDialog函数已经调用过了,但是通过验证我发现此时的路径仍然是主程序所在的路径,并非打开的项目文件所在路径,这到底是什么原因啊·············

另外,如果不能改变当前程序路径的话,我想通过GetFolderPath获得打开的项目所在文件夹路径,一个CString形式的路径。在后面的程序中,我用的是指针来打开文件,即

    FILE *fp1;
    fp1 = fopen("SetData.txt","r");

通过这样打开SetData.txt这个文件,但是这个文件必须放在程序根目录下才能被打开,如果想要打开项目文件夹里的txt文件,怎样才能在文件名前面加上刚才CString形式的项目路径呢?

那个默认路径是一直会变化的,你应该做一个保存,下次打开对话框,每次把那个地址传进去,设成默认的地址。