我正在尝试验证MFC中的一些代码,并且想知道如何验证一个范围之间没有或数字。
void AddBuilding::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_BUILDINGLATITUDE, m_Latitude);
DDV_MinMaxFloat(pDX, m_Latitude, -90, 90);
}
有什么想法吗?非常感谢! 詹姆斯
答案 0 :(得分:2)
要获得您所要求的内容,您可能需要编写自定义数据验证程序。 MFC Tech Note 026介绍了如何执行此操作。它还有关于如何扩展类向导以使用自定义例程的说明,而无需手动编写所有代码,但我不确定当前版本的VS是否实际支持这个(给定多少) VS的那部分发生了变化,我倾向于猜测“不是”,但不管怎么说,我都不确定。
答案 1 :(得分:1)
void AddBuilding::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_BUILDINGLATITUDE, m_Latitude);
if (pDX->m_bSaveAndValidate)
{
if (m_Latitude.GetLength()>0) // You may want to trim the string first.
{
m_fLatitude = _tsof(LPCTSTR(m_Latitude));
// You probably need a better conversion function, that would tell you if
// the string isn't a number, such as strtod() or sscanf().
if (m_fLatitude<-90.0 || m_fLatitude>90.0)
{
pDX->PrepareEditCtrl(IDC_BUILDINGLATITUDE);
AfxMessageBox(_T("Wrong latitude"),...);
pDX->Fail();
}
}
}
}