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;	 
	 
}