⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgregistreport.cpp

📁 3D reconstruction, medical image processing from colons, using intel image processing for based clas
💻 CPP
字号:
// DlgRegistReport.cpp : implementation file//#include "stdafx.h"#include "fusion.h"#include "DlgRegistReport.h"#include "Buttons.h"#include "EditFloat.h"#include "TabCtrl.h"#include "RegistGraph1DR.h"#include "RegistGraph1DF.h"#include "RegistGraph2D.h"#include <math.h>#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// RxDlgRegistReport dialogRxDlgRegistReport::RxDlgRegistReport(CWnd* pParent /*=NULL*/)	: RxDlgCommon(pParent){	m_strCaption		= _T("Registration Report");	// transform information	m_dTranslateX		= 0;	m_dTranslateY		= 0;	m_dTranslateZ		= 0;	m_dRotateX			= 0;	m_dRotateY			= 0;	m_dRotateZ			= 0;	m_dScaleX			= 0;	m_dScaleY			= 0;	m_dScaleZ			= 0;	m_dMI				= 0;		// 抛捞喉狼 单捞磐甫 促捞倔肺弊 冠胶郴俊辑 啊瘤绊 乐绰促.	m_iRow				= 0;	m_iCol				= 0;	m_dTableMin			= 0;	m_dTableMax			= 0;	m_dTableColMin		= 0;	m_dTableColMax		= 0;	m_dTableRowMin		= 0;	m_dTableRowMax		= 0;	m_ppTable			= NULL;	m_pTableCol			= NULL;	m_pTableRow			= NULL;	m_pBtnClose			= NULL;	m_pTabCtrl			= NULL;	m_pRegistGraph1DR	= NULL;	m_pRegistGraph1DF	= NULL;	m_pRegistGraph2D	= NULL;	m_pListCtrl			= NULL;	m_pEdTranslateX		= NULL;	m_pEdTranslateY		= NULL;	m_pEdTranslateZ		= NULL;		m_pEdRotateX		= NULL;	m_pEdRotateY		= NULL;	m_pEdRotateZ		= NULL;	m_pEdScaleX			= NULL;	m_pEdScaleY			= NULL;	m_pEdScaleZ			= NULL;	m_pEdMI				= NULL;}BEGIN_MESSAGE_MAP(RxDlgRegistReport, RxDlgCommon)	//{{AFX_MSG_MAP(RxDlgRegistReport)	ON_WM_CREATE()	ON_WM_DESTROY()	//}}AFX_MSG_MAP	ON_NOTIFY(TC_CHANGED, IDD_REGREPORT_TAB_CTRL, OnTabChanged)	ON_COMMAND_RANGE(IDD_REGREPORT_BTN_ACCEPT,	IDD_REGREPORT_BTN_EXIT,	OnControls)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// RxDlgRegistReport message handlersBOOL RxDlgRegistReport::OnInitDialog() {	RxDlgCommon::OnInitDialog();	m_pBtnClose->LoadBitmaps(IDB_BTN_CLOSE, CSize(14,14), BM_NORMAL|BM_SELECT);	// 徘 牧飘费 檬扁拳	m_pTabCtrl->m_crTabFace		= RGB(190,186,184);	m_pTabCtrl->m_crTabBack		= RGB(128,128,128);	m_pTabCtrl->m_nTabWidth		= 68;	m_pTabCtrl->m_nTabHeight	= 16;	m_pTabCtrl->SetFont(GetFont(), FALSE);	m_pTabCtrl->AddTab(_T("1D Graph(R)"));	m_pTabCtrl->AddTab(_T("1D Graph(F)"));	m_pTabCtrl->AddTab(_T("2D Graph"));	m_pTabCtrl->AddTab(_T("Table"));	SetCurTab(-1, 0);	m_pRegistGraph1DR->m_dRangeMin = m_dTableColMin;	m_pRegistGraph1DR->m_dRangeMax = m_dTableColMax;	m_pRegistGraph1DR->m_dPos = m_dTableColMax;	m_pRegistGraph1DF->m_dRangeMin = m_dTableRowMin;	m_pRegistGraph1DF->m_dRangeMax = m_dTableRowMax;	m_pRegistGraph1DF->m_dPos = m_dTableRowMax;	m_pRegistGraph2D->m_dRangeMin = m_dTableMin;	m_pRegistGraph2D->m_dRangeMax = m_dTableMax;	m_pRegistGraph2D->m_dPos = m_dTableMax;	// 府胶飘 牧飘费 檬扁拳	m_pListCtrl->SetFont(GetFont(), FALSE);	m_pListCtrl->SetExtendedStyle(WS_EX_CLIENTEDGE|LVS_EX_FULLROWSELECT|LVS_EX_FLATSB|LVS_EX_GRIDLINES);	CString		strTemp;	int			i;	for(i = 0; i <= m_iCol; i++)	{		if(i != 0)		strTemp.Format(_T("%d"), i);		m_pListCtrl->InsertColumn(i, strTemp, LVCFMT_CENTER, 40);	}	UpdateTableLC(FALSE);	// 俊叼飘 冠胶 檬扁拳	m_pEdTranslateX->SetFont(GetFont(), FALSE);	m_pEdTranslateX->SetDecimalPoint(3);	m_pEdTranslateX->SetRange(-360.0f, 360.0f);	m_pEdTranslateX->SetEdit((float)m_dTranslateX);	m_pEdTranslateY->SetFont(GetFont(), FALSE);	m_pEdTranslateY->SetDecimalPoint(3);	m_pEdTranslateY->SetRange(-360.0f, 360.0f);	m_pEdTranslateY->SetEdit((float)m_dTranslateY);	m_pEdTranslateZ->SetFont(GetFont(), FALSE);	m_pEdTranslateZ->SetDecimalPoint(3);	m_pEdTranslateZ->SetRange(-360.0f, 360.0f);	m_pEdTranslateZ->SetEdit((float)m_dTranslateZ);		m_pEdRotateX->SetFont(GetFont(), FALSE);	m_pEdRotateX->SetDecimalPoint(3);	m_pEdRotateX->SetRange(-360.0f, 360.0f);	m_pEdRotateX->SetEdit((float)m_dRotateX);	m_pEdRotateY->SetFont(GetFont(), FALSE);	m_pEdRotateY->SetDecimalPoint(3);	m_pEdRotateY->SetRange(-360.0f, 360.0f);	m_pEdRotateY->SetEdit((float)m_dRotateY);	m_pEdRotateZ->SetFont(GetFont(), FALSE);	m_pEdRotateZ->SetDecimalPoint(3);	m_pEdRotateZ->SetRange(-360.0f, 360.0f);	m_pEdRotateZ->SetEdit((float)m_dRotateZ);	m_pEdScaleX->SetFont(GetFont(), FALSE);	m_pEdScaleX->SetDecimalPoint(3);	m_pEdScaleX->SetRange(-360.0f, 360.0f);	m_pEdScaleX->SetEdit((float)m_dScaleX);	m_pEdScaleY->SetFont(GetFont(), FALSE);	m_pEdScaleY->SetDecimalPoint(3);	m_pEdScaleY->SetRange(-360.0f, 360.0f);	m_pEdScaleY->SetEdit((float)m_dScaleY);	m_pEdScaleZ->SetFont(GetFont(), FALSE);	m_pEdScaleZ->SetDecimalPoint(3);	m_pEdScaleZ->SetRange(-360.0f, 360.0f);	m_pEdScaleZ->SetEdit((float)m_dScaleZ);	m_pEdMI->SetFont(GetFont(), FALSE);	m_pEdMI->SetDecimalPoint(6);	m_pEdMI->SetRange(-360.0f, 360.0f);	m_pEdMI->SetEdit((float)m_dMI);	m_pBtnAccept->SetFont(GetFont(), FALSE);	m_pBtnExit->SetFont(GetFont(), FALSE);		return TRUE;  // return TRUE unless you set the focus to a control	              // EXCEPTION: OCX Property Pages should return FALSE}int RxDlgRegistReport::OnCreate(LPCREATESTRUCT lpCreateStruct) {	if (RxDlgCommon::OnCreate(lpCreateStruct) == -1)		return -1;		CRect		rcClient(  0,  0,370,440);	VERIFY(SetWindowPos(NULL, -1, -1, rcClient.Width(), rcClient.Height(), 						SWP_NOMOVE|SWP_NOZORDER|SWP_NOREDRAW|SWP_NOACTIVATE));	UINT	nStyle = WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON;	m_pBtnClose			= new RxBitmapButton;	m_pBtnClose->Create		(NULL, nStyle, 									CRect(rcClient.right-22, rcClient.top+1, 0, 0), this, IDCANCEL);	nStyle			= WS_CHILD|WS_VISIBLE;	m_pTabCtrl		= new RxTabCtrl;	m_pTabCtrl->Create(NULL, NULL, nStyle, CRect( 15, 30,350, 50), this, IDD_REGREPORT_TAB_CTRL);	nStyle = WS_CHILD|WS_BORDER;	m_pRegistGraph1DR	= new RxRegistGraph1DR;	m_pRegistGraph1DR->Create(NULL, NULL, nStyle, CRect( 25, 60,340,280), this, IDD_REGREPORT_GRAPH_1D_R);	m_pRegistGraph1DF	= new RxRegistGraph1DF;	m_pRegistGraph1DF->Create(NULL, NULL, nStyle, CRect( 25, 60,340,280), this, IDD_REGREPORT_GRAPH_1D_F);	m_pRegistGraph2D	= new RxRegistGraph2D;	m_pRegistGraph2D->Create(NULL, NULL, nStyle, CRect( 25, 60,340,280), this, IDD_REGREPORT_GRAPH_2D);	nStyle = WS_CHILD|WS_BORDER|LVS_REPORT;	m_pListCtrl		= new CListCtrl;	m_pListCtrl->Create(nStyle,	CRect( 25, 60,340,280), this, IDD_REGREPORT_LIST_CTRL);	nStyle	= WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_CENTER;	m_pEdTranslateX	= new RxEditFloat;	m_pEdTranslateX->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect( 75,330,135,350), this, IDD_REGREPORT_ED_TRANSLATE_X);	m_pEdTranslateY	= new RxEditFloat;	m_pEdTranslateY->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(140,330,200,350), this, IDD_REGREPORT_ED_TRANSLATE_Y);	m_pEdTranslateZ	= new RxEditFloat;	m_pEdTranslateZ->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(205,330,265,350), this, IDD_REGREPORT_ED_TRANSLATE_Z);		m_pEdRotateX	= new RxEditFloat;	m_pEdRotateX->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect( 75,360,135,380), this, IDD_REGREPORT_ED_ROTATE_X);	m_pEdRotateY	= new RxEditFloat;	m_pEdRotateY->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(140,360,200,380), this, IDD_REGREPORT_ED_ROTATE_Y);	m_pEdRotateZ	= new RxEditFloat;	m_pEdRotateZ->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(205,360,265,380), this, IDD_REGREPORT_ED_ROTATE_Z);	m_pEdScaleX		= new RxEditFloat;	m_pEdScaleX->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect( 75,390,135,410), this, IDD_REGREPORT_ED_SCALE_X);	m_pEdScaleY		= new RxEditFloat;	m_pEdScaleY->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(140,390,200,410), this, IDD_REGREPORT_ED_SCALE_Y);	m_pEdScaleZ		= new RxEditFloat;	m_pEdScaleZ->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(205,390,265,410), this, IDD_REGREPORT_ED_SCALE_Z);	m_pEdMI			= new RxEditFloat;	m_pEdMI->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle|ES_READONLY, CRect(290,330,350,350), this, IDD_REGREPORT_ED_MI);	m_pBtnAccept	= new RxPushButton;	m_pBtnAccept->Create	(_T("Accept"),	nStyle, CRect(290,360,350,380), this, IDD_REGREPORT_BTN_ACCEPT);	m_pBtnExit		= new RxPushButton;	m_pBtnExit->Create		(_T("Exit"),	nStyle, CRect(290,390,350,410), this, IDD_REGREPORT_BTN_EXIT);	return 0;}void RxDlgRegistReport::OnDestroy() {	RxDlgCommon::OnDestroy();		if(m_pTableCol)				delete []m_pTableCol;	if(m_pTableRow)				delete []m_pTableRow;	if(m_pBtnClose)				delete m_pBtnClose;	if(m_pTabCtrl)				delete m_pTabCtrl;	if(m_pRegistGraph1DR)		delete m_pRegistGraph1DR;	if(m_pRegistGraph1DF)		delete m_pRegistGraph1DF;	if(m_pRegistGraph2D)		delete m_pRegistGraph2D;	if(m_pListCtrl)				delete m_pListCtrl;	if(m_pEdTranslateX)			delete m_pEdTranslateX;	if(m_pEdTranslateY)			delete m_pEdTranslateY;	if(m_pEdTranslateZ)			delete m_pEdTranslateZ;		if(m_pEdRotateX)			delete m_pEdRotateX;	if(m_pEdRotateY)			delete m_pEdRotateY;	if(m_pEdRotateZ)			delete m_pEdRotateZ;	if(m_pEdScaleX)				delete m_pEdScaleX;	if(m_pEdScaleY)				delete m_pEdScaleY;	if(m_pEdScaleZ)				delete m_pEdScaleZ;	if(m_pEdMI)					delete m_pEdMI;	if(m_pBtnAccept)			delete m_pBtnAccept;	if(m_pBtnExit)				delete m_pBtnExit;}void RxDlgRegistReport::OnDraw(CDC *pDC){	RxDlgCommon::OnDraw(pDC);	CPen	pen, *pOldPen;	pen.CreatePen(PS_SOLID, 1, RGB( 98, 98, 98));	pOldPen = pDC->SelectObject(&pen);	CBrush	brush, *pOldBrush;	brush.CreateSolidBrush(RGB(190,186,184));	pOldBrush = pDC->SelectObject(&brush);	pDC->Rectangle(CRect( 15, 49,350,290));	pDC->SelectObject(pOldPen);	pDC->SelectObject(pOldBrush);	pen.DeleteObject();	brush.DeleteObject();	DrawStaticBox(pDC, CRect( 15,305,275,420), _T("Parameters"));	CFont	*pOldFont = pDC->SelectObject(GetFont());	pDC->SetBkMode(TRANSPARENT);	pDC->TextOut(105,315, _T("X"));	pDC->TextOut(170,315, _T("Y"));	pDC->TextOut(235,315, _T("Z"));	pDC->TextOut( 25,328, _T("Translate"));	pDC->TextOut( 33,340, _T("(mm)"));	pDC->TextOut( 30,358, _T("Rotate"));	pDC->TextOut( 25,370, _T("(Degree)"));	pDC->TextOut( 33,393, _T("Scale"));	pDC->SelectObject(pOldFont);}void RxDlgRegistReport::OnTabChanged(NMHDR *pNMHDR, LRESULT *pResult){	NMTC_CTRL	*pNMTC = (NMTC_CTRL *)pNMHDR;	SetCurTab(pNMTC->nOldTab, pNMTC->nCurTab, FALSE);	*pResult = NULL;}void RxDlgRegistReport::OnControls(UINT nID){	switch(nID)	{		case IDD_REGREPORT_BTN_ACCEPT :		{			UpdateTransform(TRUE);			UpdateTable(TRUE);			int		nCurTab = m_pTabCtrl->GetCurTab();			if(nCurTab == 0)				m_pRegistGraph1DR->RedrawWnd();			else if(nCurTab == 1)				m_pRegistGraph1DF->RedrawWnd();			else if(nCurTab == 2)				m_pRegistGraph2D->RedrawWnd();			m_pEdMI->SetEdit((float)m_dMI);			UpdateTableLC(FALSE);			break;		}		case IDD_REGREPORT_BTN_EXIT :			RxDlgCommon::OnCancel();			break;	}}/////////////////////////////////////////////////////////////////////////////void RxDlgRegistReport::SetCurTab(int nOldIndex, int nNewIndex, BOOL bWithCtrl){	if(nOldIndex == nNewIndex)		return;	if(bWithCtrl)					m_pTabCtrl->SetCurTab(nNewIndex);	if(nOldIndex == 0)		m_pRegistGraph1DR->ShowWindow(SW_HIDE);	else if(nOldIndex == 1)		m_pRegistGraph1DF->ShowWindow(SW_HIDE);	else if(nOldIndex == 2)		m_pRegistGraph2D->ShowWindow(SW_HIDE);	else if(nOldIndex == 3)		m_pListCtrl->ShowWindow(SW_HIDE);	if(nNewIndex == 0)		m_pRegistGraph1DR->ShowWindow(SW_SHOW);	else if(nNewIndex == 1)		m_pRegistGraph1DF->ShowWindow(SW_SHOW);	else if(nNewIndex == 2)		m_pRegistGraph2D->ShowWindow(SW_SHOW);	else if(nNewIndex == 3)		m_pListCtrl->ShowWindow(SW_SHOW);}void RxDlgRegistReport::SetTransform(double dTranslateX, double dTranslateY, double dTranslateZ,									 double dRotateX, double dRotateY, double dRotateZ,									 double dScaleX, double dScaleY, double dScaleZ,									 int iRow, int iCol){	m_dTranslateX	= dTranslateX;	m_dTranslateY	= dTranslateY;	m_dTranslateZ	= dTranslateZ;	m_dRotateX		= dRotateX;	m_dRotateY		= dRotateY;	m_dRotateZ		= dRotateZ;	m_dScaleX		= dScaleX;	m_dScaleY		= dScaleY;	m_dScaleZ		= dScaleZ;	m_iRow			= iRow;	m_iCol			= iCol;}void RxDlgRegistReport::UpdateTransform(BOOL bSaveData){	if(bSaveData)	{		m_dTranslateX = m_pEdTranslateX->GetEdit();		m_dTranslateY = m_pEdTranslateY->GetEdit();		m_dTranslateZ = m_pEdTranslateZ->GetEdit();		m_dRotateX = m_pEdRotateX->GetEdit();		m_dRotateY = m_pEdRotateY->GetEdit();		m_dRotateZ = m_pEdRotateZ->GetEdit();		m_dScaleX = m_pEdScaleX->GetEdit();		m_dScaleY = m_pEdScaleY->GetEdit();		m_dScaleZ = m_pEdScaleZ->GetEdit();	}	else	{		m_pEdTranslateX->SetEdit((float)m_dTranslateX);		m_pEdTranslateY->SetEdit((float)m_dTranslateY);		m_pEdTranslateZ->SetEdit((float)m_dTranslateZ);		m_pEdRotateX->SetEdit((float)m_dRotateX);		m_pEdRotateY->SetEdit((float)m_dRotateY);		m_pEdRotateZ->SetEdit((float)m_dRotateZ);		m_pEdScaleX->SetEdit((float)m_dScaleX);		m_pEdScaleY->SetEdit((float)m_dScaleY);		m_pEdScaleZ->SetEdit((float)m_dScaleZ);	}}void RxDlgRegistReport::UpdateTable(BOOL bSaveData){	int		i, j;	if(m_pTableCol)		delete []m_pTableCol;	if(m_pTableRow)		delete []m_pTableRow;	m_pTableCol = new double[m_iRow];	memset(m_pTableCol, 0x00, sizeof(double) * m_iRow);	m_pTableRow = new double[m_iCol];	memset(m_pTableRow, 0x00, sizeof(double) * m_iCol);	for(i = 0; i < m_iRow; i++)	{		for(j = 0; j < m_iCol; j++)		{			if(i == 0 && j == 0)				m_dTableMin = m_dTableMax = m_ppTable[i][j];			m_dTableMin = min(m_dTableMin, m_ppTable[i][j]);			m_dTableMax = max(m_dTableMax, m_ppTable[i][j]);		}	}	// 阿 青(Row)俊 措窍咯 凯(Col)狼 蔼阑 歹窍咯 啊瘤绊 乐绰促. 	for(i = 0; i < m_iRow; i++)	{		for(j = 0; j < m_iCol; j++)			m_pTableRow[i] += m_ppTable[i][j];		if(i == 0)			m_dTableRowMin = m_dTableRowMax = m_pTableRow[i];		m_dTableRowMin = min(m_dTableRowMin, m_pTableRow[i]);		m_dTableRowMax = max(m_dTableRowMax, m_pTableRow[i]);	}	// 阿 凯(Col)俊 措窍咯 青(Row)狼 蔼阑 歹窍咯 啊瘤绊 乐绰促	for(i = 0; i < m_iCol; i++)	{		for(j = 0; j < m_iRow; j++)			m_pTableCol[i] += m_ppTable[j][i];		if(i == 0)			m_dTableColMin = m_dTableColMax = m_pTableCol[i];		m_dTableColMin = min(m_dTableColMin, m_pTableCol[i]);		m_dTableColMax = max(m_dTableColMax, m_pTableCol[i]);	}}void RxDlgRegistReport::UpdateTableLC(BOOL bSaveData){	return;		int		i, j;	CString	strTemp;	m_pListCtrl->DeleteAllItems();	for(i  = 0; i < m_iRow; i++)	{		strTemp.Format(_T("%d"), i + 1);		m_pListCtrl->InsertItem(i, strTemp);		for(j = 0; j < m_iCol; j++)		{			strTemp.Format(_T("%.3f"), m_ppTable[i][j]);			m_pListCtrl->SetItemText(i, j+1, strTemp);		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -