使用GDI+的MFC应用程序的文件打开和保存对话框
2007-03-17 21:58:43 来源:WEB开发网核心提示: 去掉调用基类信息处理器的ID_FILE_OPEN命令的缺省映射并将该命令映射到在一个CWinApp派生类中处理(译注:即Demo程序中的CDemoApp类),void CDemoApp::OnFileOpen(){CGdiplusFileOpenDialog dlgFile;if(IDOK
去掉调用基类信息处理器的ID_FILE_OPEN命令的缺省映射并将该命令映射到在一个CWinApp派生类中处理(译注:即Demo程序中的CDemoApp类)。
void CDemoApp::OnFileOpen()
{
CGdiplusFileOpenDialog dlgFile;
if(IDOK == dlgFile.DoModal())
{
OpenDocumentFile(dlgFile.GetPathName());
}
}
覆写CDocument::OnOpenDocument虚函数。
class CDemoDoc : public CDocument
{
// ...
// Attributes
protected:
Image* m_pImage;
// Operations
public:
Image* GetImage() {return m_pImage;}
// ...
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDemoDoc)
public:
virtual BOOL OnOpenDocument(LPCTSTR pszPathName);
//}}AFX_VIRTUAL
// ...
};
BOOL CDemoDoc::OnOpenDocument(LPCTSTR pszPathName)
{
SafeDeleteImage();
m_pImage = Image::FromFile(CString(pszPathName).AllocSysString());
return (Ok == m_pImage->GetLastStatus());
}
使用CGdiplusFileSaveAsDialog
在CDocument派生类(译注:即Demo程序中的CDemoDoc类)中映射ID_FILE_SAVE_AS命令。在CGdiplusFileSaveAsDialog::DoModal返回后,调用GetPathName和GetCodecCLSID以传递(路径、文件名、Codec CLSID)到Image::Save方法。
更多精彩
赞助商链接