VC编程中在打开文件对话框上实现图象预览.doc_第1页
VC编程中在打开文件对话框上实现图象预览.doc_第2页
VC编程中在打开文件对话框上实现图象预览.doc_第3页
VC编程中在打开文件对话框上实现图象预览.doc_第4页
VC编程中在打开文件对话框上实现图象预览.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VC编程中在打开文件对话框上实现图象预览(图)安全中国 更新时间:2009-06-12 03:01:40责任编辑:池天热 点:前言:本文主要是介绍在打开文件对话框,实现对图象,文本等预览(在VC+6.0下实现)。本人的水平有限,如有表达不清之处,请谅解,请各位提出意见与建议! 正文:1、Win98下预览对话框的实现: 2、Win2000,XP下预览对话框的实现:3、m_ofn成及OPENFILENAME的介绍:4、定制个性的CFileDialog对话框:5、怎么样把预览区,放在对话框的右边:6、多选问题的解决:7、对预览问题的收集,如对文本,声音等:1、Win98下预览对话框的实现:对常用格式的图片,在打开文件对话框中实现预览功能效果如下图: 图一思路:从CFileDialog派生CFileDialogEx类,为对话框安装钩子,利用HOOK拦截我们感兴趣的CDN_SELCHANGE消息,在其中加入我们的预览功能,原理就是这么简单!使用方法: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的文件对话框,/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 m_hWnd, &chBuffer, 1); nFolderSize = CommDlg_OpenSave_GetFolderPath(GetParent()-m_hWnd, &chBuffer, 1); if(nFileSize + nFolderSize) m_ofn.nMaxFile) if(chFiles) delete chFiles; chFiles = new TCHARnFileSize + 1; CommDlg_OpenSave_GetSpec(GetParent()-m_hWnd, chFiles, nFileSize); if(chFolder) delete chFolder; chFolder = new TCHARnFolderSize + 1; CommDlg_OpenSave_GetSpec(GetParent()-m_hWnd, chFolder, nFolderSize); else if(chFiles) delete chFiles; chFiles = NULL; if(chFolder) delete chFolder; chFolder = NULL; 7、对预览问题的收集,如对文本,声音等:如果您看我的代码比较困难,请到以下链接处:1)、对文本文件实现预览:/document/viewdoc/?id=4172)、对图象文件(2D)实现预览:/dialog/imagepreviewdialog.asp3)、对位图文件实现预览:/file_show.php?id=8914)、对声音文件实现预听:/file_show.php?id=895结束语:在这里我要感谢

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论