使用GDI+的MFC应用程序的文件打开和保存对话框

(译注:原文代码的Demo_VC7没有在同Demo_VC6一样显示滚动条视图,修改之)

开发环境:Windows XP/Server 2003/2000/NT4.0-SP6/98/Me, MS Visual Sudio 6.0/2003, GDI+

介绍

CGdiplusFileOpenDialog和CGdiplusFileSaveAsDialog类提供了一个在GDI+的MFC应用程序轻松实现文件打开和保存对话框的方法。

主要特点是:

它们可以动态地装入关于支持图像的解码器/编码器和构建文件过滤清单。

它们可以获得当前图像编码器标识码(CLSID)以供需要将其作为一个参数的GDI+函数使用。

它们可以检查和验证文件名和扩展名。

你可以在类的描述和demo应用程序中找到更多的详情。

(类的)层次表

CGdiplusFileDialog类

CGdiplusFileDialog继承于MFC CFileDialog类,同时也是CGdiplusFileOpenDialog和CGdiplusFileSaveAsDialog的抽象基类。

封装一个包含所支持的解码器/编码器的数组(m_arrCodecInfo)

实现基函数TranslateFilter:转换一个MFC-like文件过滤器(使用一个''|''作为分隔符)到一个OPENFILENAME结构文件过滤器(使用''\0''作为分隔符)

声明两个纯虚函数:FillCodecInfoArray 和ConstructMFCStyleFilte;在派生类中,覆写函数实现特定操作。

覆写CFileDialog::DoModal;在调用基类函数之前调用,它

o 检查GDI+库是否被初始化

o 调用FillCodecInfoArray、 ConstructMFCStyleFilter 和 TranslateFilter函数

CGdiplusFileOpenDialog类

CGdiplusFileOpenDialog实现文件打开命令对话框。

覆写CGdiplusFileDialog::FillCodecInfoArray并调用Gdiplus::GetImageDecoders填充关于可用译码器的信息数组。

o 文件格式的名称(如:"JPEG")

o 已用扩展名(如:"*.JPG、*.JPEG、*.JPE、*.JFIF")

o 在打开对话框(译注:原文为Save As dialog,应该是Open dialog,笔误了)中使用的缺省扩展名(如:"JPG")

o 解码器标识码

覆写CGdiplusFileDialog::ConstructMFCStyleFilter构建一个"MFC 样式"的过滤器(使用一个''|''作为分隔符);一个附加的"All GDI+ supported"(所有GDI+支持)的过滤项被添入

时间: 2024-08-01 18:41:19

使用GDI+的MFC应用程序的文件打开和保存对话框的相关文章

VC菜单命令详解(文件打开、保存与关闭)

第一部分: 五个命令ID: 处理函数 ID_FILE_NEW CWinApp::OnFileNew ID_FILE_OPEN CWinApp::OnFileOpen ID_FILE_SAVE CDocument::OnFileSave ID_FILE_SAVEAS CDocument::OnFileSaveAs ID_FILE_CLOSE CDocument::OnFileClose1.ID_FILE_NEW CWinApp::OnFileNew调用CDocManager::OnFileNew.

实现一个mdi多窗体tex文件 打开及保存的问题。(希望各位高手帮忙解答 谢谢~)

问题描述 实现一个mdi多窗体打开及保存的问题.首先有一个主窗体菜单第一项文件-下设"打开""保存"2个选项.可以在主窗体中连续打开本地多个TXT文件(副窗体)查看.(其中有子窗体布局功能(层叠,纵向,横向))现在想实现:假设打开C盘下的3个TXT文件,鼠标点击其中的一个TXT文件(激活)然后点击主窗体菜单-"保存"选项把当前处于激活窗台的副窗体中的TXT文件另存为自己想要保存的地方.打开文件的功能已经完成,可是保存的功能不懂怎么编写,请各位高手

在你的MFC应用程序中显示一个JPG文件

在VB中,我可以通过创建一个图像控件来显示一个JPG或GIF文件,但是我如何在我的MFC应用程序中显示一个JGP文件呢? 好问题!有时使用VB的程序员觉得这个很容易.只要往你的表中拖入一个图像控件,然后你就可以往下做了--然而C++程序员就不得不感到烦恼和头疼.那我们要做些什么呢,编写我们自己的JPG解压函数吗? 当然不是这样的!事实上,C/C++程序员能够使用与VB程序员所使用的非常类似(可以说是差不多)的图像控件.我并没有开玩笑.VB图像控件是基于一个叫"IPicture"的系统C

MFC的程序如何通过注册表修改文件的图标

问题描述 MFC的程序如何通过注册表修改文件的图标 MFC编程实现通过修改注册表来改变文档文件的图标?不通过注册表的方法也可以. 解决方案 通过修改hkey_classes_root里的文件关联即可换图标

程序-vs2008写mfc无法生成exe文件

问题描述 vs2008写mfc无法生成exe文件 刚开始用vs2008写mfc程序,编译什么的都通过了,却无法生成exe文件,请问有没有遇到这种情况的,是配置没有配好么? 解决方案 应该是没有编译成功,或者你的输出目录被修改过了,首先检查下输出目录是不是在bindebug下面,然后编译,看输出有没有什么错误,有没有提示成功,最后看文件夹下有没有产生exe. 解决方案二: 先仔细看看编译的输出确认是否编译成功?再看看工程设置,肯定是哪里有问题才会导致你所说的现象. 解决方案三: 看一下你VS配置的

MFC程序对文件的处理方法_C 语言

对文件的处理是MFC程序设计中非常常见的应用.本文就以实例形式做一简单叙述.具体方法如下: 1.CFileDialog的应用 格式如下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter =

MFC框架程序中全屏显示特性的实现

在开发图像显示程序以及视频应用程序时,常常需要全屏显示特性,比如ACD See和豪杰解霸等应用都有全屏显示功能.本文将介绍如何在MFC框架程序中实现视图的全屏显示,也就是说将标题.菜单.工具栏.状态栏以及窗口的所有边框全部被隐藏,视图充满整个屏幕.并提供全屏显示与框架窗口之间的快捷切换操作. 大家知道,在MFC框架中并没有提供现成的类或者函数来实现全屏显示特性,至少我到目前为止是没有发现.但是要实现这个特性也并不难.其基本思路是调整主窗口的大小和位置,使视图的显示充满屏幕.它需要以屏幕左上角为原

mfc win7 权限-MFC应用程序在win7下管理员权限的问题

问题描述 MFC应用程序在win7下管理员权限的问题 MFC开发的程序我知道可以通过配置清单文件的UAC执行级别来提示程序的权限.但问题时这样的配置在win7一定会提示UAC的对话框很不友好.在不关闭系统UAC的情况下有没有办法不弹出UAC对话框或者不设置UAC级别依旧可以拥有管理员权限呢? 解决方案 创建windows服务程序.

mfc-记事本的文件打开问题,关于MFC

问题描述 记事本的文件打开问题,关于MFC Windous中的记事本程序,不需要启动,直接就能点击打开文件,请问这是怎么做到的?用MFC编写的记事本怎么才能做到? 解决方案 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); if (!ProcessShellCommand(cmdInfo)) { return FALSE; } //// 应该放在上面的语句之后 LPTSTR cmd = ::GetCommandLine(); int arg