📄 convertdoc.cpp
字号:
// convertDoc.cpp : implementation of the CConvertDoc class
//
#include "stdafx.h"
#include "convert.h"
#include "convertDoc.h"
#include "SaveDialog.h"
#include "DialogGetImg.h"
#include "Image.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CConvertDoc
IMPLEMENT_DYNCREATE(CConvertDoc, CDocument)
BEGIN_MESSAGE_MAP(CConvertDoc, CDocument)
//{{AFX_MSG_MAP(CConvertDoc)
ON_COMMAND(ID_IMAGE_SAVEAS, OnImageSaveas)
ON_COMMAND(ID_IMAGE_GET, OnImageGet)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CConvertDoc construction/destruction
CConvertDoc::CConvertDoc()
{
// TODO: add one-time construction code here
}
CConvertDoc::~CConvertDoc()
{
}
BOOL CConvertDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CConvertDoc serialization
void CConvertDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CConvertDoc diagnostics
#ifdef _DEBUG
void CConvertDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CConvertDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CConvertDoc commands
BOOL CConvertDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
// TODO: Add your specialized creation code here
myImage.ReadImageData((CString)lpszPathName);
return TRUE;
}
//DEL BOOL CConvertDoc::OnSaveDocument(LPCTSTR lpszPathName)
//DEL {
//DEL // TODO: Add your specialized code here and/or call the base class
//DEL myImage.WriteImageFile((CString)lpszPathName,myImage.m_ImageHeight,
//DEL myImage.m_ImageWidth,myImage.imagedata); //row,col
//DEL return TRUE;
//DEL // return CDocument::OnSaveDocument(lpszPathName);
//DEL }
//DEL void CConvertDoc::OnFileSaveAs()
//DEL {
//DEL // TODO: Add your command handler code here
//DEL
//DEL }
void CConvertDoc::OnImageSaveas()
{
// TODO: Add your command handler code here
CSaveDialog dlg;
dlg.m_filename="d:\\picture\\...";
dlg.m_ImgHeight=myImage.m_ImageHeight;
dlg.m_ImgWidth=myImage.m_ImageWidth;
if(dlg.DoModal()==IDOK)
{
myImage.strFile=dlg.m_filename;
TRACE("myImage.strFile is %s,row=%d,col=%d/n",myImage.strFile,myImage.m_ImageHeight,myImage.m_ImageWidth);
myImage.WriteImageFile(myImage.strFile,myImage.m_ImageHeight,
myImage.m_ImageWidth,myImage.image);
}
}
void CConvertDoc::OnImageGet()
{
// TODO: Add your command handler code here
CDialogGetImg getImgDlg;
getImgDlg.m_oriHeight=myImage.m_ImageHeight;
getImgDlg.m_oriWidth=myImage.m_ImageWidth;
if(getImgDlg.DoModal()==IDOK)
{
TRACE("%d,%d,%s",getImgDlg.m_height,getImgDlg.m_width,getImgDlg.m_file);
///////////............
if(getImgDlg.m_file=="..."||getImgDlg.m_height==0||getImgDlg.m_width==0)
{
MessageBox(NULL,"please input the filename and the image size!",
NULL,MB_ABORTRETRYIGNORE);
//exit(1); //this will arise error!!!
}
unsigned char** cutImg;
cutImg=new unsigned char* [getImgDlg.m_height];
if(cutImg==NULL)
{
delete cutImg;
exit(1);
}
for(int i=0;i<getImgDlg.m_height;i++)
{
cutImg[i]=new unsigned char[getImgDlg.m_width];
if(cutImg[i]==NULL)
{
delete cutImg[i];
exit(1);
}
}
for(i=0;i<getImgDlg.m_height;i++)
for(int j=0;j<getImgDlg.m_width;j++)
cutImg[i][j]=myImage.image[i+getImgDlg.m_ytop][j+getImgDlg.m_xleft];
myImage.WriteImageFile(getImgDlg.m_file,getImgDlg.m_height,getImgDlg.m_width,cutImg);
for(i=0;i<getImgDlg.m_height;i++)
delete cutImg[i];
delete cutImg;
///////////.............
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -