使用GDI+的MFC应用程序的文件打开和保存对话框
2007-03-17 21:58:43 来源:WEB开发网核心提示: o 文件格式的名称(如:" BMP ")o 已用扩展名(如:"*. BMP、*. DIB、*. RLE ")o 在保存对话框中使用的缺省扩展名(如:" BMP ")覆写CGdiplusFileDialog::ConstructMF
o 文件格式的名称(如:" BMP ")
o 已用扩展名(如:"*. BMP、*. DIB、*. RLE ")
o 在保存对话框中使用的缺省扩展名(如:" BMP ")
覆写CGdiplusFileDialog::ConstructMFCStyleFilter构建"MFC 样式"的过滤器(使用一个''|''作为分隔符)
覆写CFileDialog::OnInitDone 和 CFileDialog::OnTypeChange来设置缺省扩展名并装入缺省编码器标识码(m_clsid成员变量)
实现public方法GetCodecCLSID;codec(编码器/译码器)CLSID进一步被传递到Gdiplis::Image::Save函数
覆写CFileDialog::OnFileNameOK以实现文件扩展名检查:
o 如果文件名没有扩展名,使用缺省扩展名和CLSID
o 如果文件名有一个扩展名并且可以被codec信息数组找到,扩展名和相应的CLSID将用来代替缺省值
o 如果文件名有一个扩展名同时不能被codec信息数组找到,它返回TRUE同时对话框保持显示以便用户输入另一个文件名
举例
#include "GdiplusFileSaveAsDialog.h"
// ...
bool CFoo::SaveImage(Image* pImage)
{
bool bSaved = false;
CGdiplusFileSaveAsDialog dlgFile;
if(IDOK == dlgFile.DoModal())
{
CLSID clsid = dlgFile.GetCodecCLSID();
CString strPathName = dlgFile.GetPathName();
Status status = pImage->Save(strPathName.AllocSysString(),
&clsid);
if(Ok == status)
{
bSaved = true;
}
}
return bSaved;
}
Demo应用程序
更多精彩
赞助商链接