小弟根据《VC++技术内幕》一书中对FileDialog的介绍,在一对话框内加入了一个FileDialog,现在想动态改变这个FileDialog的当前路径,不知道应该怎么做?各位请指教!

解决方案 »

  1.   

    对话框打开前设定
    m_ofn.lpstrInitialDir = "c:\\mydoc"
      

  2.   

    CFileDialog file(TRUE,NULL,NULL);
    file.m_ofn.lpstrInitialDir = "c:\\";
    file.DoModal();
      

  3.   

    去看看OPENFILENAME结构,里面的lpstrInitialDir:Pointer to a NULL terminated string that can specify the initial directory. The algorithm for selecting the initial directory varies on different platforms.
      

  4.   

    CFileDialog类封装了一个结构,叫做m_ofn。是OPENFILENAME类型,这个类型的定义如下:
    typedef struct tagOFNA {
       DWORD        lStructSize;
       HWND         hwndOwner;
       HINSTANCE    hInstance;
       LPCSTR       lpstrFilter;
       LPSTR        lpstrCustomFilter;
       DWORD        nMaxCustFilter;
       DWORD        nFilterIndex;
       LPSTR        lpstrFile;
       DWORD        nMaxFile;
       LPSTR        lpstrFileTitle;
       DWORD        nMaxFileTitle;
       LPCSTR       lpstrInitialDir;
       LPCSTR       lpstrTitle;
       DWORD        Flags;
       WORD         nFileOffset;
       WORD         nFileExtension;
       LPCSTR       lpstrDefExt;
       LPARAM       lCustData;
       LPOFNHOOKPROC lpfnHook;
       LPCSTR       lpTemplateName;
    #ifdef _MAC
       LPEDITMENU   lpEditInfo;
       LPCSTR       lpstrPrompt;
    #endif
    } OPENFILENAMEA, *LPOPENFILENAMEA;
    这个类型决定了打开和保存对话框中需要初始显示的信息和设置。
      

  5.   

    各位大大,在对话框没打开之前当然是可以这么做啦!但现在问题是我想在对话框打开之后动态改变对话框中显示的路径,好象这个结构没什么用吧!难道叫我设置完参数后Update一下?
      

  6.   

    laiyiling(最熟悉的陌生人),楼主的意思是默认的打开路径
      

  7.   

    比如在对话框里有一个按键,按下后就到一个INI文件里读取一个路径,然后把这个路径设置为当前路径!
      

  8.   

    使用一个挂钩函数,在CDN_INITDONE或者点击按钮的时候,可以发送
    WM_GETISHELLBROWSER到对话框获得对话框中的文件列表的IShellBrowser接口,然后用IShellBrowser::BrowseObject浏览指定的目录
      

  9.   

    《VC++技术内幕》中有讲如何改变CFileDialog类和其资源的。