📄 dlgoptions.cpp
字号:
// DlgOptions.cpp : implementation file//#include "stdafx.h"#include "fusion.h"#include "DlgOptions.h"#include "FusionColorUI.h"#include "Buttons.h"#include "EditInt.h"#include "EditFloat.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// RxDlgOptions dialogRxDlgOptions::RxDlgOptions(CWnd* pParent /*=NULL*/) : RxDlgCommon(pParent){ //{{AFX_DATA_INIT(RxDlgOptions) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_strCaption = "Options"; m_pBtnClose = NULL; m_nTabIndex = -1; m_stRegist.nIterate = 0; m_stRegist.fVarF = 0.0f; m_stRegist.fCoVarR = 0.0f; m_stRegist.fCoVarF = 0.0f; m_stRegist.fLearnTrans = 0.0f; m_stRegist.fLearnRot = 0.0f; m_pEdIterate = NULL; m_pEdVarF = NULL; m_pEdCoVarR = NULL; m_pEdCoVarF = NULL; m_pEdLearnTrans = NULL; m_pEdLearnRot = NULL; m_stSampling.nMode = 0; m_stSampling.nCount = 0; m_stSampling.nThreshold = 0; m_stSampling.fTolerance = 0.0f; m_pBtnUniform = NULL; m_pBtnRandom = NULL; m_pBtnSobel = NULL; m_pBtnSobelLevoy = NULL; m_pEdCount = NULL; m_pEdThreshold = NULL; m_pEdTolerance = NULL; m_stMIAnalysis.nRadio1 = 0; m_stMIAnalysis.nRadio2 = 0; m_pBtnMIOriginal = NULL; m_pBtnMIFast = NULL; m_pBtnSurface = NULL; m_pBtnPartial = NULL; m_pBtnTrilinear = NULL; m_pBtnNearest = NULL; m_pBtnOk = NULL; m_pBtnCancel = NULL; m_pBtnApply = NULL;}BEGIN_MESSAGE_MAP(RxDlgOptions, RxDlgCommon) //{{AFX_MSG_MAP(RxDlgOptions) ON_WM_CREATE() ON_WM_DESTROY() ON_WM_LBUTTONUP() //}}AFX_MSG_MAP ON_COMMAND_RANGE(IDD_OPTIONS_BTN_UNIFORM, IDD_OPTIONS_BTN_NEAREST, OnControls)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// RxDlgOptions message handlersBOOL RxDlgOptions::OnInitDialog() { RxDlgCommon::OnInitDialog(); m_pBtnClose->LoadBitmaps(IDB_BTN_CLOSE, CSize(14,14), BM_NORMAL|BM_SELECT); m_pEdIterate->SetFont(GetFont(), FALSE); m_pEdIterate->SetRange(0, 100); m_pEdVarF->SetFont(GetFont(), FALSE); m_pEdVarF->SetRange(0.0f, 255.0f); m_pEdVarF->SetDecimalPoint(1); m_pEdCoVarR->SetFont(GetFont(), FALSE); m_pEdCoVarR->SetRange(0.0f, 255.0f); m_pEdCoVarR->SetDecimalPoint(1); m_pEdCoVarF->SetFont(GetFont(), FALSE); m_pEdCoVarF->SetRange(0.0f, 255.0f); m_pEdCoVarF->SetDecimalPoint(1); m_pEdLearnTrans->SetFont(GetFont(), FALSE); m_pEdLearnTrans->SetDecimalPoint(4); m_pEdLearnRot->SetFont(GetFont(), FALSE); m_pEdLearnRot->SetDecimalPoint(4); m_pBtnUniform->SetFont(GetFont(), FALSE); m_pBtnUniform->RecalcLayout(); m_pBtnUniform->m_crBkgnd = RGB(192,192,192); m_pBtnRandom->SetFont(GetFont(), FALSE); m_pBtnRandom->RecalcLayout(); m_pBtnRandom->m_crBkgnd = RGB(192,192,192); m_pBtnSobel->SetFont(GetFont(), FALSE); m_pBtnSobel->RecalcLayout(); m_pBtnSobel->m_crBkgnd = RGB(192,192,192); m_pBtnSobelLevoy->SetFont(GetFont(), FALSE); m_pBtnSobelLevoy->RecalcLayout(); m_pBtnSobelLevoy->m_crBkgnd = RGB(192,192,192); m_pEdCount->SetFont(GetFont(), FALSE); m_pEdCount->SetRange(0, 100); m_pEdThreshold->SetFont(GetFont(), FALSE); m_pEdThreshold->SetRange(0, 255); m_pEdTolerance->SetFont(GetFont(), FALSE); m_pEdTolerance->SetRange(0.0f, 255.0f); m_pEdTolerance->SetDecimalPoint(1); m_pBtnMIOriginal->SetFont(GetFont(), FALSE); m_pBtnMIOriginal->RecalcLayout(); m_pBtnMIOriginal->m_crBkgnd = RGB(192,192,192); m_pBtnMIFast->SetFont(GetFont(), FALSE); m_pBtnMIFast->RecalcLayout(); m_pBtnMIFast->m_crBkgnd = RGB(192,192,192); m_pBtnSurface->SetFont(GetFont(), FALSE); m_pBtnSurface->RecalcLayout(); m_pBtnSurface->m_crBkgnd = RGB(192,192,192); m_pBtnPartial->SetFont(GetFont(), FALSE); m_pBtnPartial->RecalcLayout(); m_pBtnPartial->m_crBkgnd = RGB(192,192,192); m_pBtnTrilinear->SetFont(GetFont(), FALSE); m_pBtnTrilinear->RecalcLayout(); m_pBtnTrilinear->m_crBkgnd = RGB(192,192,192); m_pBtnNearest->SetFont(GetFont(), FALSE); m_pBtnNearest->RecalcLayout(); m_pBtnNearest->m_crBkgnd = RGB(192,192,192); m_pBtnOk->SetFont(GetFont(), FALSE); m_pBtnCancel->SetFont(GetFont(), FALSE); m_pBtnApply->SetFont(GetFont(), FALSE); UpdateData(FALSE); SetTabCtrl(0); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE}int RxDlgOptions::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (RxDlgCommon::OnCreate(lpCreateStruct) == -1) return -1; CRect rcClient( 0, 0,300,300); 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); m_rcTabRegist.SetRect( 25, 30,109, 46); m_rcTabSample.SetRect(105, 30,185, 46); m_rcTabMIAnalysis.SetRect(181, 30, 261, 46); m_rcTabBorder.SetRect( 15, 30,280,240); nStyle = WS_CHILD|WS_TABSTOP|ES_CENTER; m_pEdIterate = new RxEditInt; m_pEdIterate->CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(170, 70,230, 90), this, IDD_OPTIONR_ED_ITERATE); m_pEdVarF = new RxEditFloat; m_pEdVarF->CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(170, 95,230,115), this, IDD_OPTIONR_ED_VAR_F); m_pEdCoVarR = new RxEditFloat; m_pEdCoVarR->CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(170,120,230,140), this, IDD_OPTIONR_ED_CO_VAR_R); m_pEdCoVarF = new RxEditFloat; m_pEdCoVarF->CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(170,145,230,165), this, IDD_OPTIONR_ED_CO_VAR_F); m_pEdLearnTrans = new RxEditFloat; m_pEdLearnTrans->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(170,170,230,190), this, IDD_OPTIONR_ED_LEARN_TRANS); m_pEdLearnRot = new RxEditFloat; m_pEdLearnRot->CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(170,195,230,215), this, IDD_OPTIONR_ED_LEARN_ROT); nStyle = WS_CHILD|WS_TABSTOP|BS_OWNERDRAW; m_pBtnUniform = new RxRadioButton; m_pBtnUniform->Create (_T("Uniform"), nStyle, CRect( 65, 70, 0, 0), this, IDD_OPTIONS_BTN_UNIFORM); m_pBtnRandom = new RxRadioButton; m_pBtnRandom->Create (_T("Random"), nStyle, CRect(145, 70, 0, 0), this, IDD_OPTIONS_BTN_RANDOM); m_pBtnSobel = new RxRadioButton; m_pBtnSobel->Create (_T("Sobel"), nStyle, CRect( 65, 90, 0, 0), this, IDD_OPTIONS_BTN_SOBEL); m_pBtnSobelLevoy = new RxRadioButton; m_pBtnSobelLevoy->Create(_T("Sobel-levoy"), nStyle, CRect(145, 90, 0, 0), this, IDD_OPTIONS_BTN_SOBEL_LEVOY); nStyle = WS_CHILD|WS_TABSTOP|ES_CENTER; m_pEdCount = new RxEditInt; m_pEdCount->CreateEx (WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(150,135,210,155), this, IDD_OPTIONS_ED_COUNT); m_pEdThreshold = new RxEditInt; m_pEdThreshold->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(150,160,210,180), this, IDD_OPTIONS_ED_THRESHOLD); m_pEdTolerance = new RxEditFloat; m_pEdTolerance->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), NULL, nStyle, CRect(150,185,210,205), this, IDD_OPTIONS_ED_TOLERANCE); nStyle = WS_CHILD|WS_TABSTOP|BS_OWNERDRAW; m_pBtnMIOriginal = new RxRadioButton; m_pBtnMIOriginal->Create (_T("Original MI-based method"), nStyle, CRect( 65, 70, 65, 70), this, IDD_OPTIONS_BTN_MI_ORIGINAL); m_pBtnMIFast = new RxRadioButton; m_pBtnMIFast->Create (_T("Fast MI-based method"), nStyle, CRect( 65, 95, 65, 95), this, IDD_OPTIONS_BTN_MI_FAST); m_pBtnSurface = new RxRadioButton; m_pBtnSurface->Create (_T("Surface-based method"), nStyle, CRect( 65,120, 65,120), this, IDD_OPTIONS_BTN_SURFACE); m_pBtnPartial = new RxRadioButton; m_pBtnPartial->Create (_T("Partial volume interpolation"), nStyle, CRect( 65,155, 65,155), this, IDD_OPTIONS_BTN_PARTIAL); m_pBtnTrilinear = new RxRadioButton; m_pBtnTrilinear->Create (_T("Trilinear interpolation"), nStyle, CRect( 65,180, 65,180), this, IDD_OPTIONS_BTN_TRILINEAR); m_pBtnNearest = new RxRadioButton; m_pBtnNearest->Create (_T("Nearest neighbor interpolation"), nStyle, CRect( 65,205, 65,205), this, IDD_OPTIONS_BTN_NEAREST); nStyle = WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON; m_pBtnOk = new RxPushButton; m_pBtnOk->Create (_T("Ok"), nStyle, CRect( 65,255,130,275), this, IDOK); m_pBtnCancel = new RxPushButton; m_pBtnCancel->Create (_T("Cancel"), nStyle, CRect(145,255,210,275), this, IDCANCEL); m_pBtnApply = new RxPushButton; m_pBtnApply->Create (_T("Apply"), nStyle, CRect( 0, 0, 0, 0), this, IDD_OPTIONS_BTN_APPLY); return 0;}void RxDlgOptions::OnDestroy() { RxDlgCommon::OnDestroy(); if(m_pBtnClose) delete m_pBtnClose; if(m_pEdIterate) delete m_pEdIterate; if(m_pEdVarF) delete m_pEdVarF; if(m_pEdCoVarR) delete m_pEdCoVarR; if(m_pEdCoVarF) delete m_pEdCoVarF; if(m_pEdLearnTrans) delete m_pEdLearnTrans; if(m_pEdLearnRot) delete m_pEdLearnRot; if(m_pBtnUniform) delete m_pBtnUniform; if(m_pBtnRandom) delete m_pBtnRandom; if(m_pBtnSobel) delete m_pBtnSobel; if(m_pBtnSobelLevoy) delete m_pBtnSobelLevoy; if(m_pEdCount) delete m_pEdCount; if(m_pEdThreshold) delete m_pEdThreshold; if(m_pEdTolerance) delete m_pEdTolerance; if(m_pBtnMIOriginal) delete m_pBtnMIOriginal; if(m_pBtnMIFast) delete m_pBtnMIFast; if(m_pBtnSurface) delete m_pBtnSurface; if(m_pBtnPartial) delete m_pBtnPartial; if(m_pBtnTrilinear) delete m_pBtnTrilinear; if(m_pBtnNearest) delete m_pBtnNearest; if(m_pBtnOk) delete m_pBtnOk; if(m_pBtnCancel) delete m_pBtnCancel; if(m_pBtnApply) delete m_pBtnApply;}void RxDlgOptions::OnDraw(CDC *pDC){ RxDlgCommon::OnDraw(pDC); CFont *pOldFont = pDC->SelectObject(GetFont()); pDC->SetBkMode(TRANSPARENT); CPen pen, *pOldPen; pen.CreatePen(PS_SOLID, 1, RGB( 0, 0, 0)); pOldPen = pDC->SelectObject(&pen); CBrush brush, *pOldBrush; brush.CreateSolidBrush(RGB(192,192,192)); pOldBrush = pDC->SelectObject(&brush); CRect rect; rect = m_rcTabBorder; rect.top += 16; pDC->Rectangle(rect); int i, j; CString strTab; for(i = 0; i < 4; i++) { if(i == m_nTabIndex ) continue; if(i == 3) j = m_nTabIndex; else j = i; if(j == 0) { rect = m_rcTabRegist; strTab = _T("Registration"); } else if(j == 1) { rect = m_rcTabSample; strTab = _T("Sampling"); } else if(j == 2) { rect = m_rcTabMIAnalysis; strTab = _T("MI Analysis"); } if(j == m_nTabIndex) { pDC->BeginPath(); pDC->MoveTo(rect.left, rect.bottom+1); pDC->LineTo(rect.left+8, rect.top); pDC->LineTo(rect.right-8, rect.top); pDC->LineTo(rect.right, rect.bottom+1); pDC->EndPath(); pDC->FillPath(); pDC->MoveTo(rect.left, rect.bottom); pDC->LineTo(rect.left+8, rect.top); pDC->LineTo(rect.right-8, rect.top); pDC->LineTo(rect.right, rect.bottom); rect.OffsetRect(0, 1); pDC->SetTextColor(RGB(222,222,222)); pDC->DrawText(strTab, rect, DT_SINGLELINE|DT_VCENTER|DT_CENTER); rect.OffsetRect(0, -1); pDC->SetTextColor(RGB( 0, 0, 0)); pDC->DrawText(strTab, rect, DT_SINGLELINE|DT_VCENTER|DT_CENTER); } else { pDC->MoveTo(rect.left, rect.bottom); pDC->LineTo(rect.left+8, rect.top); pDC->LineTo(rect.right-8, rect.top); pDC->LineTo(rect.right, rect.bottom); pDC->LineTo(rect.left, rect.bottom); pDC->DrawText(strTab, rect, DT_SINGLELINE|DT_VCENTER|DT_CENTER); } } pDC->SelectObject(pOldPen); pDC->SelectObject(pOldBrush); pen.DeleteObject(); brush.DeleteObject(); if(m_nTabIndex == 0) { pDC->TextOut(63, 72, _T("Iteration")); pDC->TextOut(63, 97, _T("Variance(F)")); pDC->TextOut(63,122, _T("Co-Variance(R)")); pDC->TextOut(63,147, _T("Co-Variance(F)")); pDC->TextOut(63,172, _T("Learning rate(Trans)")); pDC->TextOut(63,197, _T("Learning rate(Rot)")); } else if(m_nTabIndex == 1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -