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