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
}