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的那种打开文件对话框?
13 个解决方案
#1
从CFileDialog派生子类来完成就可以了。
#2
请问能具体讲讲吗?我用模板的办法是不行的,参见问题2.
#3
你把打开按钮去掉,添加个选择文件夹按钮上去,再自己处理这个点击消息
#4
那个可以用CFolderPickerDialog来做,这个类在Vista下面会和CFileDialog一样用IFileDialog,不过加了个FOS_PICKFOLDERS风格。在之前版本的Windows上(实际上MFC10也只支持Windows XP SP2或更高版本)会调用SHBrowseForFolder
#5
回复3楼:
忘了说明一点,我用的是vc6....
我试验了一下,如果用CFileDialog的话,无论如何也没法在win7下使用Explorer风格的新式对话框...就算继承了也不行,想用如图所示的新式对话框只能用OpenFileName。
忘了说明一点,我用的是vc6....
我试验了一下,如果用CFileDialog的话,无论如何也没法在win7下使用Explorer风格的新式对话框...就算继承了也不行,想用如图所示的新式对话框只能用OpenFileName。
#6
回复4楼:
因为我用的是VC6,所以没法用CFolderPickerDialog.....
我以为用底层的OpenFileName也能实现呢.....
因为我用的是VC6,所以没法用CFolderPickerDialog.....
我以为用底层的OpenFileName也能实现呢.....
#7
你的图片看不到
#8
回复7楼:
我试了一下,图片在其他地方没有问题的。
我试了一下,图片在其他地方没有问题的。
#9
用这个,可以空出一块来显示你的子对话框,在子对话框里,你可以模仿你需要的效果,添加相应的控件和数据。
那种带图片预览效果的就是这样做出来的
#10
VC6也不支持Vista的Windows SDK的。你可以考虑在高版本的VC里写个COM的DLL给VC6的程序用。
#11
在高版本的VC里写个COM的DLL给VC6的程序用,
这个怎么用,COM的DLL需要静态编译么?
这个怎么用,COM的DLL需要静态编译么?
#12
动态编译也可以,不过这样的话需要发布两个版本的C++运行库
#13
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法
#1
从CFileDialog派生子类来完成就可以了。
#2
请问能具体讲讲吗?我用模板的办法是不行的,参见问题2.
#3
你把打开按钮去掉,添加个选择文件夹按钮上去,再自己处理这个点击消息
#4
那个可以用CFolderPickerDialog来做,这个类在Vista下面会和CFileDialog一样用IFileDialog,不过加了个FOS_PICKFOLDERS风格。在之前版本的Windows上(实际上MFC10也只支持Windows XP SP2或更高版本)会调用SHBrowseForFolder
#5
回复3楼:
忘了说明一点,我用的是vc6....
我试验了一下,如果用CFileDialog的话,无论如何也没法在win7下使用Explorer风格的新式对话框...就算继承了也不行,想用如图所示的新式对话框只能用OpenFileName。
忘了说明一点,我用的是vc6....
我试验了一下,如果用CFileDialog的话,无论如何也没法在win7下使用Explorer风格的新式对话框...就算继承了也不行,想用如图所示的新式对话框只能用OpenFileName。
#6
回复4楼:
因为我用的是VC6,所以没法用CFolderPickerDialog.....
我以为用底层的OpenFileName也能实现呢.....
因为我用的是VC6,所以没法用CFolderPickerDialog.....
我以为用底层的OpenFileName也能实现呢.....
#7
你的图片看不到
#8
回复7楼:
我试了一下,图片在其他地方没有问题的。
我试了一下,图片在其他地方没有问题的。
#9
用这个,可以空出一块来显示你的子对话框,在子对话框里,你可以模仿你需要的效果,添加相应的控件和数据。
那种带图片预览效果的就是这样做出来的
#10
VC6也不支持Vista的Windows SDK的。你可以考虑在高版本的VC里写个COM的DLL给VC6的程序用。
#11
在高版本的VC里写个COM的DLL给VC6的程序用,
这个怎么用,COM的DLL需要静态编译么?
这个怎么用,COM的DLL需要静态编译么?
#12
动态编译也可以,不过这样的话需要发布两个版本的C++运行库
#13
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知
见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法