《2022年VC编程中在打开资料对话框上实现图象预览.docx》由会员分享,可在线阅读,更多相关《2022年VC编程中在打开资料对话框上实现图象预览.docx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、VC编程中在打开文件对话框上实现图象预览 图安全中国 更新时间 :2021-06-12 03:01:40责任编辑 : 池天热 点:前言:本文主要是介绍在打开文件对话框,实现对图象,文本等预览 在 VC+6.0 下实现 ;本人的水平有限,如有表达不清之处,请谅解,请各位提出看法与建议!正文:1、Win98 下预览对话框的实现:2、Win2000,XP 下预览对话框的实现:3、m_ofn 成及 OPENFILENAM的E 介绍: 4、定制个性的 CFileDialog 对话框: 5、怎么样把预览区,放在对话框的右边:6、多项问题的解决:7、对预览问题的收集,如对文本,声音等:26 / 261、Wi
2、n98 下预览对话框的实现:对常用格式的图片,在打开文件对话框中实现预览功能成效如下图:图一思路:从 CFileDialog派生 CFileDialogEx类,为对话框安装钩子,利用HOOK拦截我们感爱好的CDN_SELCHANG消E息,在其中加入我们的预览功能,原理就是这么简洁!使用方法:1):在 ResourView 中,加一个对话框, 其 ID 为 IDD_DIALOG_HOOK,留意其属性的设置: DialogProperties-styles下= style为Child 、Border 为 None, 选中 Clip siblings; More Styles下 =选中 3D-loo
3、k 、 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;CFile
4、DialogEx dlgTRUE;ifdlg.DoModal = IDOKPOSITION Pos;Pos = dlg.GetStartPosition;while Pos .= NULLstrPathName = dlg.GetNextPathNamePos;if.strPathName.IsEmptyMessageBoxstrPathName, _TGetNextPathName, MB_ICONINFORMATION;注:由于时间紧,在Debug 版本下,双击选中文件后,有暴停的现象(内存泄漏), 而且显示成效也没有进行处理!2、Win2000,XP 下预览对话框的实现:比图一多了左面的
5、快捷栏(便利用户查找);其实这个实现很简洁,只要判定一下系统的版本就可以了,但是 98 下只显示图一所示的对话框,2000 ,XP就显示图二的对话框,这是MS在 98 以后的版本,对这个东东重新进行了封装!详情请看链接 :利用 MFC的 CFileDialog怎么样生成 Win2000 的文件对话框 , 图二只要在 CFileDialogEX dlgTRUE后面,加上如下代码,就可以显示图2 成效;/-只要加上下面这段代码,就可以显示2000 下的打开文件对话框 -/-用来检测目前的操作系统的版本信息int nStructSize = 0;DWORD dwVersion, dwWindowsM
6、ajorVersion, dwWindwosMinorVersion;dwVersion = GetVersion;dwWindowsMajorVersion = DWORDLOBYTELOWORDdwVersion;dwWindwosMinorVersion = DWORDHIBYTELOWORDdwVersion;ifdwVersion m_hWnd, &chBuffer,1) ;nFolderSize = CommDlg_OpenSave_GetFolderPathGetParent-m_hWnd, &chBuffer,1;ifnFileSize + nFolderSize m_ofn.
7、nMaxFileifchFilesdelete chFiles;chFiles = new TCHARnFileSize + 1;CommDlg_OpenSave_GetSpecGetParent-m_hWnd, chFiles, nFileSize;ifchFolderdelete chFolder;chFolder = new TCHARnFolderSize + 1;CommDlg_OpenSave_GetSpecGetParent-m_hWnd, chFolder, nFolderSize;elseifchFilesdelete chFiles;chFiles = NULL;ifchFolderdelete chFolder;chFolder = NULL;7、对预览问题的收集,如对文本,声音等: 假如您看我的代码比较困难,请到以下链接处:1)、对文本文件实现预览: 2)、对图象文件(2D)实现预览: 3)、对位图文件实现预览: 4)、对声音文件实现预听:终止语:在这里我要感谢帮忙过我的伴侣们,期望您对我写的文章提出珍贵的看法!另外假如有时间我的另一篇文章将介绍在CFileDialog的打开文件对话框中,实现对3D 图形的预览,也就是对STL( CAD中常用的储备格式)格式的文件进行预览,这才是我的要做的. 假如表述不清之处,请Email 联系!
限制150内