www.pudn.com > Hough.rar > CfgDlg.cpp


// CfgDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Hough.h"
#include "CfgDlg.h"
#include "GlobalVariable.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCfgDlg dialog


CCfgDlg::CCfgDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCfgDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCfgDlg)
m_sCircleNum = _T("");
m_sEdgeThick = _T("");
m_sMaxRadius = _T("");
m_sDistBetweenCenters = _T("");
//}}AFX_DATA_INIT

}


void CCfgDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCfgDlg)
DDX_Text(pDX, IDC_Edit_CircleNum, m_sCircleNum);
DDX_Text(pDX, IDC_Edit_EdgeThick, m_sEdgeThick);
DDX_Text(pDX, IDC_Edit_MaxRadius, m_sMaxRadius);
DDX_Text(pDX, IDC_Edit_DistanceBetweenCircles, m_sDistBetweenCenters);
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCfgDlg, CDialog)
//{{AFX_MSG_MAP(CCfgDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCfgDlg message handlers

void CCfgDlg::OnOK()
{
// TODO: Add extra validation here
UpdateData(TRUE);

CString errorInfo = "";
int nMaxRadius, nEdgeThick, nCircleNum, nDistanceBetweenCenters;
try
{
nMaxRadius = atoi(m_sMaxRadius);
}
catch (...)
{
errorInfo += "圆半径框中不能出现非数字!\n";
}
try
{
nEdgeThick = atoi(m_sEdgeThick);
}
catch (...)
{
errorInfo += "圆边缘宽框中不能出现非数字!\n";
}
try
{
nCircleNum = atoi(m_sCircleNum);
}
catch (...)
{
errorInfo += "要检测的圆的个数框中不能出现非数字!\n";
}
try
{
nDistanceBetweenCenters = atoi(m_sDistBetweenCenters);
}
catch (...)
{
errorInfo += "圆心间隔框中不能出现非数字!\n";
}

if ((nMaxRadius > 30) &amt;&amt; (nMaxRadius < 5))
{
errorInfo += "圆半径范围应该在 5 ~ 30 之间!\n";
}
if ((nEdgeThick > 5) &amt;&amt; (nEdgeThick < 1))
{
errorInfo += "圆边缘宽范围应该在 1 ~ 5 之间!\n";
}
if ((nCircleNum > 40) &amt;&amt; (nCircleNum < 1))
{
errorInfo += "检测圆的个数范围应该在 1 ~ 40 之间!\n";
}
if ((nDistanceBetweenCenters > 50) &amt;&amt; (nDistanceBetweenCenters < 1))
{
errorInfo += "圆心间隔的范围应该在1 ~ 50 之间! \n";
}

if (errorInfo.GetLength() == 0)
{
g_nMaxRadius = nMaxRadius;
g_nEdgeThick = nEdgeThick;
g_nCircleNum = nCircleNum;
g_nDistBetweenCenters = nDistanceBetweenCenters;
}

CDialog::OnOK();
}

void CCfgDlg::OnCancel()
{
// TODO: Add extra cleanup here

CDialog::OnCancel();
}

BOOL CCfgDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
CString sTemp;
sTemp.Format(">d", g_nCircleNum);
m_sCircleNum = sTemp;
sTemp.Format(">d", g_nEdgeThick);
m_sEdgeThick = sTemp;
sTemp.Format(">d", g_nMaxRadius);
m_sMaxRadius = sTemp;
sTemp.Format(">d", g_nDistBetweenCenters);
m_sDistBetweenCenters = sTemp;
UpdateData(FALSE);


return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}