在打开文件对话框上实现图象预览

__不言而喻

__不言而喻

2016-01-29 11:58

在打开文件对话框上实现图象预览,在打开文件对话框上实现图象预览

在打开文件对话框上实现图象预览


作者:井中月_VC

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/) 单位:  西京大学
下载源代码

前言:
本文主要是介绍在打开文件对话框,实现对图象,文本等预览(在VC++6.0下实现)。本人的水平有限,如有表达不清之处,请谅解,请各位提出意见与建议!

正文:
1、Win98下预览对话框的实现:
2、Win2000,XP下预览对话框的实现:
3、m_ofn成及OPENFILENAME的介绍:
4、定制个性的CFileDialog对话框:
5、怎么样把预览区,放在对话框的右边:
6、多选问题的解决:
7、对预览问题的收集,如对文本,声音等:


1、Win98下预览对话框的实现:对常用格式的图片,在打开文件对话框中实现预览功能效果如下图:

                                图一
思路:
从CFileDialog派生CFileDialogEx类,为对话框安装钩子,利用HOOK拦截我们感兴趣的CDN_SELCHANGE消息,在其中加入我们的预览功能,原理就是这么简单!

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)

使用方法:
1):在ResourView中,加一个对话框,其 ID为IDD_DIALOG_HOOK, 注意其属性的设置:Dialog Properties->styles下=> style为Child、Border为None, 选中Clip siblings。 More Styles下 => 选中3D-look、 Contol。
2):在对话框上加一个 Static Text控件,用来显示图片。ID为IDC_PIC,其属性的设置为:Text Properties下 => 选中Notify、Sunken。
3):将Picture.h,Picture.cpp;CFileDialogEx.h,CFileDialogEx.cpp添加到工程中。其中类CFileProcess是文件处理类,用于文件进行操作。类CPicture用于处理图片。(详见代码)
4)在应用处,只要包含头文件 #include”FileDialogEx.h”。

For example:
CString strPathName;
CFileDialogEx dlg(TRUE);
if(dlg.DoModal() == IDOK)
{
POSITION Pos;
Pos = dlg.GetStartPosition();
while (Pos != NULL)
{
strPathName = dlg.GetNextPathName(Pos);
if(!strPathName.IsEmpty())
{
MessageBox(strPathName, _T("GetNextPathName"), MB_ICONINFORMATION);
}
}
}
注:由于时间紧,在Debug版本下,双击选中文件后,有暴停的现象(内存泄漏),而且显示效果也没有进行处理!

2、Win2000,XP下预览对话框的实现:比图一多了左面的快捷栏(方便用户查找)。其实这个实现很简单,只要判断一下系统的版本就可以了,但是98下只显示图一所示的对话框,2000,XP则显示图二的对话框,这是MS在98以后的版本,对这个东东重新进行了封装!
详情请看链接: 利用MFC的CFileDialog怎么样生成Win2000的文件对话框,
http://www.chinaaspx.com/archive/VC/1068.htm

                            图二
只要在CFileDialogEX dlg(TRUE)后面,加上如下代码,就可以显示图2效果。


//--------只要加上下面这段代码,就可以显示2000下的打开文件对话框-------------
//------用来检测目前的操作系统的版本信息
int nStructSize = 0;
DWORD dwVersion, dwWindowsMajorVersion, dwWindwosMinorVersion;
dwVersion = GetVersion();
dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
dwWindwosMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
if(dwVersion < 0x80000000)
{
nStructSize = 88; //2k,xp下显示新的版本
}
else
{
nStructSize = 76; //98下显示老
展开更多 50%)
分享

猜你喜欢

在打开文件对话框上实现图象预览

C语言教程 C语言函数
在打开文件对话框上实现图象预览

VB中实现带预览的对话框

编程语言 网络编程
VB中实现带预览的对话框

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

再谈 Windows 2000 “打开”文件对话框

C语言教程 C语言函数
再谈 Windows 2000 “打开”文件对话框

使用Windows API函数显示打开文件对话框

电脑网络
使用Windows API函数显示打开文件对话框

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

对话框打印预览及打印

C语言教程 C语言函数
对话框打印预览及打印

改变打开对话框中打开按钮的标题

编程语言 网络编程
改变打开对话框中打开按钮的标题

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《格斗江湖》战力系统提升解析

《格斗江湖》战力系统提升解析

CSS 循序渐进(二)字的艺术

CSS 循序渐进(二)字的艺术
下拉加载更多内容 ↓