[VC++ & IT] [English]

VC++によるエディットボックス変数値の値判定

CString str;
CWnd* h = GetDlgItem(IDC_EDIT);
h->GetWindowText(str);
BOOL DigitFlag = TRUE, ZeroFlag = TRUE;
BOOL MinusFlag = str.GetBuffer(10)[0] == '-';
for (int i = 0, j = 0; str.GetBuffer(10)[i] != '\0'; i++){
	if (!isdigit(str.GetBuffer(10)[i]))
		DigitFlag = FALSE;
	if (str.GetBuffer(10)[i] == '0' && ZeroFlag)
		j++;
	else
		ZeroFlag = FALSE;
}
str.ReleaseBuffer();
if (ZeroFlag && j > 1)
	str = str.Left(1);
else if (i != 1 && j != 1)
	str = str.Mid(j);
if (MinusFlag)
	str = "-" + str;

if (!DigitFlag || str == _T("") || str == _T("-") || str == _T("-0"))
	return FALSE;
int nNum = atoi((LPCTSTR) str);

return (nNumについての条件式);

Since 2013.4.14