【VC开源代码栏目提醒】:网学会员鉴于大家对VC开源代码十分关注,论文会员在此为大家搜集整理了“IProcessPDoc.cpp”一文,供大家参考学习
// IProcessPDoc.cpp : CIProcessPDoc 类的实现
//
#include "stdafx.h"
#include "IProcessP.h"
#include "IProcessPDoc.h"
#include ".\iProcessPdoc.h"
#include "IProcessPView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CIProcessPDoc
IMPLEMENT_DYNCREATE(CIProcessPDoc, CDocument)
BEGIN_MESSAGE_MAP(CIProcessPDoc, CDocument)
ON_COMMAND(ID_OPEN_IMAGE, OnOpenImage)
ON_COMMAND(ID_SAVE_IMAGE, OnSaveImage)
ON_UPDATE_COMMAND_UI(ID_SAVE_IMAGE, OnUpdateSaveImage)
END_MESSAGE_MAP()
// CIProcessPDoc 构造/析构
CImage SaveCanvus,WorkCanvus,DibCopy,img3,img4,img5,img6,img7,img8,WindowCanvus;
CImage* pImg[10];
CString m_FileName;
int m_nFilterLoad;
int m_nFArea;
CIProcessPDoc::CIProcessPDoc()
{
// TODO: 在此添加一次性构造代码
pImg[0]=&SaveCanvus;
pImg[1]=&WorkCanvus;
pImg[2]=&DibCopy;
pImg[3]=&img3;
pImg[4]=&img4;
pImg[5]=&img5;
pImg[6]=&img6;
pImg[7]=&img7;
pImg[8]=&img8;
pImg[9]=&WindowCanvus;
for (int i=0;i<10;i++)
pImg[i]->Destroy();
m_nFilterLoad=0;
m_nFArea=0;
}
CIProcessPDoc::~CIProcessPDoc()
{
for (int i=0;i<10;i++)
pImg[i]->Destroy();
}
BOOL CIProcessPDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: 在此添加重新初始化代码
// (SDI 文档将重用该文档)
return TRUE;
}
// CIProcessPDoc 序列化
void CIProcessPDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
}
else
{
// TODO: 在此添加加载代码
}
}
// CIProcessPDoc 诊断
#ifdef _DEBUG
void CIProcessPDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CIProcessPDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
// CIProcessPDoc 命令
BOOL CIProcessPDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO: 在此添加您专用的创建代码
if (!SaveCanvus.IsNull())
SaveCanvus.Destroy();
SaveCanvus.Load(lpszPathName);
SetPathName(lpszPathName);
SetModifiedFlag(FALSE);
if (ImageType(pImg[0])<2)
LowTypeToIndex(pImg[1],pImg[0]);
else
ImageCopy(pImg[1],pImg[0]);
m_FileName=lpszPathName;
return TRUE;
}
void CIProcessPDoc::OnOpenImage()
{
CString strFilter;
CSimpleArray<GUID> aguidFileTypes;
HRESULT hResult;
hResult = pImg[0]->GetExporterFilterString(strFilter,aguidFileTypes);
if (FAILED(hResult))
return;
CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST, strFilter);
dlg.m_ofn.nFilterIndex = m_nFilterLoad;
hResult = (int)dlg.DoModal();
if(hResult != IDOK)
return;
m_nFilterLoad = dlg.m_ofn.nFilterIndex;
m_FileName = dlg.GetFileName();
if (!SaveCanvus.IsNull())
SaveCanvus.Destroy();
hResult = SaveCanvus.Load(m_FileName);
if (FAILED(hResult))
return;
if (ImageType(pImg[0])<2)
LowTypeToIndex(pImg[1],pImg[0]);
else
ImageCopy(pImg[1],pImg[0]);
SetPathName(m_FileName,1);
UpdateAllViews(NULL);
m_nFArea=0;
}
void CIProcessPDoc::OnSaveImage()
{
// TODO: 在此添加命令处理程序代码
CString strFilter;
CSimpleArray<GUID> aguidFileTypes;
CString strFileName;
CString strExtension;
HRESULT hResult;
hResult = pImg[1]->GetExporterFilterString(strFilter,aguidFileTypes);
if (FAILED(hResult)) return;
CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT | OFN_EXPLORER,strFilter);
dlg.m_ofn.nFilterIndex = m_nFilterLoad;
hResult = (int)dlg.DoModal();
if (hResult != IDOK) return;
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 = "tif";
break;
case 5:
strExtension = "png";
break;
default:
break;
}
strFileName = strFileName + '.' + strExtension;
}
if (ImageType(pImg[1])<2)
IndexToLowType(pImg[1],pImg[1]);
hResult = pImg[1]->Save(strFileName);
if (FAILED(hResult))
return;
SetPathName(strFileName,1);
}
void CIProcessPDoc::OnUpdateSaveImage(CCmdUI *pCmdUI)
{
pCmdUI->Enable(!pImg[1]->IsNull());
}
上一篇:
IProcessP.cpp
下一篇:
法律专业开题报告范文