📄 dlgregistreport.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 + -