构建CFileDialog类对象后的路径

 CFileDialog(BOOL bOpenFileDialog,
            LPCTSTR lpszDefExt = NULL,
            LPCTSTR lpszFileName = NULL,
            DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
            LPCTSTR lpszFilter = NULL,
            CWnd* pParentWnd = NULL
           );
默认情况下,构建CFileDialog类对象后的,程序的路径就会改变为打开或保存的文件的路径了。
如果想要不改变路径:
1、dwFlags 设置为OFN_NOCHANGEDIR。但是此法仅对“打开”适用。因为如果在“另存为”中设置时,文件会始终另存在程序所在的路径,这显然不是我们所希望的。
例:

CFileDialog openDlg(TRUE, TEXT(".bmp"), 0, OFN_NOCHANGEDIR, strFilter,NULL);

2、在构造CFileDialog类对象之前,用win32API的GetCurrentDirectory()函数获取当前路径,并保存,然后在构造CFileDialog类对象后,用SetCurrentDirectory()再设置回来。
例:

GetCurrentDirectory(MAX_PATH, currentPath); CFileDialog saveDlg(FALSE, TEXT(".bmp"),NULL,NULL,strFilter); if( saveDlg.DoModal() == IDOK ) { // } SetCurrentDirectory(currentPath);

你可能感兴趣的:(构建CFileDialog类对象后的路径)