一般的文件打开对话框是这样的:http://hiphotos.baidu.com/doomsdayer/pic/item/2080e3af8b6c3ab4faed5051.jpg一般的目录选择对话框是这样的:http://hiphotos.baidu.com/doomsdayer/pic/item/2080e3af8bd13ab4faed50d4.jpg 我看到有把这两者结合起来的新式的目录选择对话框:http://hiphotos.baidu.com/doomsdayer/pic/item/a8c44b1f3de51a2cf724e4db.jpg 请问这种对话框是怎么做出来的呢?我研究了很久CFileDialog, OPENFILENAME, SHBrowseForFolder可还是得不到答案.... 还有一个问题,我看到有些自定义风格的CFileDialog/GetOpenFileName,比如notapad的打开文件对话框:http://hiphotos.baidu.com/doomsdayer/pic/item/d10f10777c1bc154b051b9b8.jpg下面添加了ComboBox,我研究了一下,发现可以考虑对OPENFILENAME设置OFN_ENABLETEMPLATEHANDLE或OFN_ENABLEHOOK。但问题是,这两个标记位都不能和OFN_EXPLORER共存,一旦设置上面的两个标记位,对话框就会变为这个样子:http://hiphotos.baidu.com/doomsdayer/pic/item/249a8f7a919b38a22f73b366.jpg请问应该怎样才能做出notepad的那种打开文件对话框?

解决方案 »

  1.   

    从CFileDialog派生子类来完成就可以了。
      

  2.   

    那个可以用CFolderPickerDialog来做,这个类在Vista下面会和CFileDialog一样用IFileDialog,不过加了个FOS_PICKFOLDERS风格。在之前版本的Windows上(实际上MFC10也只支持Windows XP SP2或更高版本)会调用SHBrowseForFolder
      

  3.   

    回复3楼:
    忘了说明一点,我用的是vc6....
    我试验了一下,如果用CFileDialog的话,无论如何也没法在win7下使用Explorer风格的新式对话框...就算继承了也不行,想用如图所示的新式对话框只能用OpenFileName。
      

  4.   

    回复4楼:
    因为我用的是VC6,所以没法用CFolderPickerDialog.....
    我以为用底层的OpenFileName也能实现呢.....
      

  5.   

    VC6也不支持Vista的Windows SDK的。你可以考虑在高版本的VC里写个COM的DLL给VC6的程序用。
      

  6.   

    在高版本的VC里写个COM的DLL给VC6的程序用,
    这个怎么用,COM的DLL需要静态编译么?