imagedemoview.cpp
来自「VC.net 的一些有用的技巧」· C++ 代码 · 共 155 行
CPP
155 行
// ImageDemoView.cpp : CImageDemoView 类的实现
//
#include "stdafx.h"
#include "ImageDemo.h"
#include "ImageDemoDoc.h"
#include "ImageDemoView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CImageDemoView
IMPLEMENT_DYNCREATE(CImageDemoView, CView)
BEGIN_MESSAGE_MAP(CImageDemoView, CView)
ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
END_MESSAGE_MAP()
// CImageDemoView 构造/销毁
CImageDemoView::CImageDemoView()
{
// TODO: 在此处添加构造代码
}
CImageDemoView::~CImageDemoView()
{
}
BOOL CImageDemoView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
return CView::PreCreateWindow(cs);
}
// CImageDemoView 绘制
void CImageDemoView::OnDraw(CDC* pDC)
{
CImageDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: 在此处为本机数据添加绘制代码
if(!myImage.IsNull())
{
myImage.Draw(pDC->m_hDC,0,0);
}
}
// CImageDemoView 诊断
#ifdef _DEBUG
void CImageDemoView::AssertValid() const
{
CView::AssertValid();
}
void CImageDemoView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CImageDemoDoc* CImageDemoView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CImageDemoDoc)));
return (CImageDemoDoc*)m_pDocument;
}
#endif //_DEBUG
// CImageDemoView 消息处理程序
void CImageDemoView::OnFileOpen()
{
// TODO: 在此添加命令处理程序代码
CString strFilter;
CSimpleArray<GUID> aguidFileTypes;
HRESULT hResult;
hResult=myImage.GetExporterFilterString(strFilter,aguidFileTypes,_T("所有图像文件"));
if(FAILED(hResult))
{
MessageBox("GetExporterFilter调用失败");
return;
}
CFileDialog dlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST,strFilter);
if(dlg.DoModal()!=IDOK)
return;
myImage.Destroy();
hResult=myImage.Load(dlg.GetFileName());
if(FAILED(hResult))
{
MessageBox("打开图像文件失败");
return;
}
CString str;
str.LoadString(AFX_IDS_APP_TITLE);
AfxGetMainWnd()->SetWindowText(str+"-"+dlg.GetFileName());
Invalidate();
}
void CImageDemoView::OnFileSaveAs()
{
// TODO: 在此添加命令处理程序代码
if(myImage.IsNull())
{
MessageBox("无可保存的图像文件");
return;
}
CString strFilter;
strFilter="位图(*.bmp)|*.bmp|JPEG(*.jpg)|*.jpg|GIF(*.gif)|*.gif|PNG(*.png)|*.png||";
CFileDialog dlg(FALSE,NULL,NULL,NULL,strFilter);
if(dlg.DoModal()!=IDOK)
return;
CString strFileName;
CString strExtension;
strFileName=dlg.m_ofn.lpstrFile;
if(dlg.m_ofn.nFileExtension==0)
{
switch (dlg.m_ofn.nFilterIndex)
{
case 1:
strExtension="bmp";
break;
case 2:
strExtension="jpg";
break;
case 3:
strExtension="gif";
break;
case 4:
strExtension="png";
break;
}
strFileName=strFileName+'.'+strExtension;
}
HRESULT hResult=myImage.Save(strFileName);
if(FAILED(hResult))
MessageBox("无法保存当前图像文件");
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?