www.pudn.com > Imagewavelet.rar > ImageDoc.cpp
// ImageDoc.cpp : implementation of the CImageDoc class
//
#include "stdafx.h"
#include "Image.h"
#include "dibapi.h"
#include "ImageDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CImageDoc
IMPLEMENT_DYNCREATE(CImageDoc, CDocument)
BEGIN_MESSAGE_MAP(CImageDoc, CDocument)
//{{AFX_MSG_MAP(CImageDoc)
ON_COMMAND(ID_WENLI, OnWenli)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CImageDoc construction/destruction
CImageDoc::CImageDoc()
{
m_hDIB=NULL;
m_DIBData=NULL;
}
CImageDoc::~CImageDoc()
{
GlobalFree(m_hDIB);
delete[] m_DIBData;
}
BOOL CImageDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CImageDoc serialization
void CImageDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CImageDoc diagnostics
#ifdef _DEBUG
void CImageDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CImageDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CImageDoc commands
BOOL CImageDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
//将图像数据读入内存
int row,col;
orgpic.p=::InputImageWithName((char *)lpszPathName,row,col);
oldpic.col=orgpic.col=col;
oldpic.row=orgpic.row=row;
//载入位图并设置初始化数据
m_hDIB = LoadDIB(lpszPathName);
LPBITMAPINFOHEADER lpbmi;
WaitCursorBegin();
LPBYTE lpDIBSrc = (LPBYTE) GlobalLock(m_hDIB);
lpbmi = (LPBITMAPINFOHEADER)lpDIBSrc;
DWORD lSrcWidth = lpbmi->biWidth;
DWORD lSrcHeight = lpbmi->biHeight;
m_Height = lSrcHeight;
m_Width = lSrcWidth;
GlobalUnlock(m_hDIB);
WaitCursorEnd();
return TRUE;
}
void CImageDoc::OnWenli()
{
// TODO: Add your command handler code here
if (!flagpic)
{
AfxMessageBox("没有输入图象!");
return;
}
wenli wlg;
wlg.gray=WLHistoGram(orgpic);
wlg.flagHis=TRUE;
if (wlg.DoModal()==IDOK)
{
}
return;
}