www.pudn.com > IMGReg.rar > IMGRegView.cpp


// IMGRegView.cpp : implementation of the CIMGRegView class 
// 
 
#include "stdafx.h" 
#include "IMGReg.h" 
 
#include "IMGRegDoc.h" 
#include "IMGRegView.h" 
#include  "GlobalApi.h" 
 
#include  
using namespace std; 
 
 
#include "DlgReg.h" 
#include "DlgRecMatch.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CIMGRegView 
 
IMPLEMENT_DYNCREATE(CIMGRegView, CScrollView) 
 
BEGIN_MESSAGE_MAP(CIMGRegView, CScrollView) 
	//{{AFX_MSG_MAP(CIMGRegView) 
	ON_COMMAND(ID_REG_REG, OnRegReg) 
	//}}AFX_MSG_MAP 
	// Standard printing commands 
	ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint) 
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint) 
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview) 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CIMGRegView construction/destruction 
 
CIMGRegView::CIMGRegView() 
{ 
	// 为小波变换设置的参数 
	// 临时存放小波变换系数内存 
	m_pDbImage = NULL;	 
	 
	// 设置当前层数 
	m_nDWTCurDepth = 0; 
 
	// 设置小波基紧支集长度 
	m_nSupp = 1; 
} 
 
CIMGRegView::~CIMGRegView() 
{ 
	// 释放已分配内存 
	if(m_pDbImage){ 
		delete[]m_pDbImage; 
		m_pDbImage = NULL; 
	} 
} 
 
BOOL CIMGRegView::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	// TODO: Modify the Window class or styles here by modifying 
	//  the CREATESTRUCT cs 
 
	return CScrollView::PreCreateWindow(cs); 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CIMGRegView drawing 
 
void CIMGRegView::OnDraw(CDC* pDC) 
{ 
	CIMGRegDoc* pDoc = GetDocument(); 
	ASSERT_VALID(pDoc); 
	 
	CSize sizeDibDisplay;		 
	 
 
	 
	if(!pDoc->m_pDibInit->IsEmpty()){	 
		sizeDibDisplay = pDoc->m_pDibInit->GetDimensions(); 
		pDoc->m_pDibInit->Draw(pDC,CPoint(0,0),sizeDibDisplay);	 
	}	 
 
} 
 
void CIMGRegView::OnInitialUpdate() 
{ 
	CScrollView::OnInitialUpdate(); 
 
	CIMGRegDoc* pDoc = GetDocument(); 
	ASSERT_VALID(pDoc); 
	 
	CSize sizeTotal = pDoc->m_pDibInit->GetDimensions(); 
	SetScrollSizes(MM_TEXT, sizeTotal); 
 
	GetParentFrame()->RecalcLayout(); 
	ResizeParentToFit(); 
 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CIMGRegView printing 
 
 
void CIMGRegView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add extra initialization before printing 
} 
 
void CIMGRegView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) 
{ 
	// TODO: add cleanup after printing 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CIMGRegView diagnostics 
 
#ifdef _DEBUG 
void CIMGRegView::AssertValid() const 
{ 
	CScrollView::AssertValid(); 
} 
 
void CIMGRegView::Dump(CDumpContext& dc) const 
{ 
	CScrollView::Dump(dc); 
} 
 
CIMGRegDoc* CIMGRegView::GetDocument() // non-debug version is inline 
{ 
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CIMGRegDoc))); 
	return (CIMGRegDoc*)m_pDocument; 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CIMGRegView message handlers 
 
 
 
 
 
 
 
/************************************************************************* 
 * 
 * \函数名称: 
 *   OnRegReg() 
 * 
 * \输入参数: 
 *   无 
 *  
 * \返回值: 
 *   无 
 * 
 * \说明: 
 *   该函数实现图象的配准 
 * 
 ************************************************************************* 
 */ 
void CIMGRegView::OnRegReg()  
{	 
	// 获得文档类句柄 
	CIMGRegDoc* pDoc; 
	pDoc = GetDocument(); 
 
	// 判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的水平镜像,其它的可以类推) 
	if(pDoc->m_pDibInit->m_nColorTableEntries != 256) 
	{ 
		// 提示用户 
		MessageBox("目前只支持256色位图的图象配准!", "系统提示" ,  
			MB_ICONINFORMATION | MB_OK); 
		 
		// 返回 
		return; 
	} 
	 
	// 打开图象配准对话框 
	CDlgReg* pDlg=new CDlgReg(NULL,pDoc); 
 
	pDlg->DoModal(); 
 
	delete pDlg; 
} 
 
BOOL CIMGRegView::OnPreparePrinting(CPrintInfo* pInfo)  
{ 
	// TODO: call DoPreparePrinting to invoke the Print dialog box 
	 
	return CScrollView::OnPreparePrinting(pInfo); 
}