用CFileDialog类对象产生一个文件对话框,打开之后会有一个原始的地址。比如我在D盘abc目录下打开一个图像,那么在下次打开文件对话框的时候,初始目录就定位在D:\abc我想问,如何设置文件对话框打开时的初始目录,比如我希望每次打开对话框,目录都定位在D:\ijk还有,我手动改变了文件对话框的大小,那么在以后不论如何编译运行,文件对话框初始都是这个大小了。这些对话框大小之类的信息Windows是保存在哪里的?(在注册表里我找不到)CFileDialogMFC初始目录

解决方案 »

  1.   

    CFileDialog fileDlg( TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, _T("场景文件 (*.sce)|*.sce|") );CString strOPenPath = _T("D:\\ijk");strOPenPath +=  _T("\\Scene\\");fileDlg.m_ofn.lpstrInitialDir = strOPenPath;//设置路径fileDlg.m_ofn.lpstrTitle = _T("打开场景文件");//设置标题if( fileDlg.DoModal() == IDOK)
    {

    }
      

  2.   

    lpstrInitialDir 初始目录
    大小,你可能需要自己重载实现
      

  3.   

    初始目录已经解决了
    第二句我不是太明白,我说的“手动改变了文件对话框的大小,那么在以后不论如何编译运行,文件对话框初始都是这个大小了”MFC已经预先实现了,不管我怎么编译,改变过大小的对话框弹出时总是被我改变之后的大小。我是想问问文件对话框的大小信息是保存在哪里的。您的意思是如果要消除这个功能就需要重载?
      

  4.   

    程序的界面,菜单的布局一般放在注册表上HKEY_CURRENT_USER,在里面找到你工程的注册表信息,看删除,文件对话框会不会还是和以前一样大小
      

  5.   

    删了,发现还是没变化
    而且初始目录这个问题,我有一次改代码,去掉了一个对话框风格(OFN_NOCHANGEDIR),然后编译运行,初始目录就变成了D:\ijk,但是后来不知道又怎么回事,初始目录又不能保持在ijk下了感觉Windows真特么让人抓狂
      

  6.   

    那你自己定制一个CFileDialog吧
      

  7.   

    前辈,这楼有点歪了,问到现在我比刚开始的时候都迷糊了,我最后再问一次吧,完了就结帖:
    1、如果需要每次打开文件对话框的时候都将初始目录定位在某个地址下(比如D:\ijk),除了
    fileDlg.m_ofn.lpstrInitialDir = "D:\\ijk\\" ;这一句之外还需要做什么,需要什么特殊的对话框风格吗?2、我并不是想要实现这种“每次打开对话框都保持上一次使用对话框时的大小的功能”,而是这个功能已经存在了,如果我想消除这种功能,也许只能自己定制对话框了。
    我只是很好奇,对话框在被销毁之后,其大小信息是保存在哪里的,因为我即使是删掉了程序的注册表键值,这个大小还是被保存着。
      

  8.   

    保存在哪里我也不知道,不过我知道怎么找到它在哪里。你打开Regmon工具,把条件设置好,对应进程,然后设置打开CFileDialog,涉及的注册表就会列出
    另外Regmon是针对XP系统的,Vista之后的版本请用Sysinternal Process Monitor