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

2016-01-29 11:58 72 1 收藏

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

【 tulaoshi.com - C语言心得技巧 】

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


作者:井中月_VC

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

前言:
本文主要是介绍在打开文件对话框,实现对图象,文本等预览(在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://www.tulaoshi.com)

使用方法:
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下显示老

来源:https://www.tulaoshi.com/n/20160129/1484096.html

延伸阅读
标签: windows 操作系统
用户在Windows下与打开文件对话框打交道的次数一定不少,我们在一些软件的使用过程中,免不了要使用Windows的标准打开对话框来打开文件。但是,我们在使用Windows 2000打开文件对话框是还有一些小小的技巧,充分地利用这些小技巧,能够提高我们使用计算机的效率,同时还可以达到一些意想不到的功能。 1、快速加入特定的文件 ...
前一阵有人在VB专家门诊中提出一个问题,如何在VB中实现打开图像文件的预览,虽然给出了300分的高分,回答着却寥寥无几。我在参照了DELPHI的源代码后在VB中实现了其部分图像预览功能,在中文WINDOWS98 SE下测试通过。 从MSDN中可以知道调用文件打开通用对话框需调用API 函数GetOpenFileName,原形如下: BOOL GetOpenFileName( LP...
不规则对话框的又一实现 作者:河北唐山 吕建欣 下载本文示例代码 代码运行效果图如下: 此不规则对话框的实现应用了一个重要的位图对话框类——CBitmapDialog ,通过灵活运用,可以实现任意形状的对话框。 一、CBitmapDialog ...
import java.io.File; import javax.swing.*; import javax.swing.filechooser.*; /**  * pTitle: 文件过滤器演示/p  * pDescription: FileChooserDemo文件使用的文件过滤器/p  * pCopyright: Copyright (c) 2003/p  * pFilename: MyFilter.java/p  * @version 1.0  */ public class MyFilter extends Fil...
标签: Web开发
模态对话框是,当弹出对话框时后面的内容无法操作。本次利用ajax制作的模太对话框并不是浏览器提供的模太对话框,而是通过层和ajax技术实现的虚拟的模太对话框. 样式表,css代码: .abc{          position:absolute;          left:1px;  &n...

经验教程

761

收藏

53
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部