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" #includeusing 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); }