使用GDI+的MFC应用程序的文件打开和保存对话框2010-09-29 Ovidiu Cucu (译注:原文代码的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结构文件过滤器(使用"" ""作为分隔符)声明两个纯虚函数: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+支持)的过滤项被添入