使用以下代码,我已设法通过单击按钮更新编辑控件框。
void SomeDlg::OnBnClickedValue2Plus2()
{
m_control1.GetWindowText(m_value1);
m_control2.GetWindowText(m_value2);
m_control3.GetWindowText(m_value3);
int a,b,c;
if (m_getcheck.GetCheck() == 1
&& _ttoi(m_value2) < 40
&& _ttoi(m_totalvalue) < 100)
{
a = _ttoi(m_value1);
b = _ttoi(m_value2) + 2;
c = a + b;
GetDlgItem(IDC_EDIT1)->SetWindowText(_itot(b, buff, 10));
GetDlgItem(IDC_EDIT3)->SetWindowText(_itot(c, buff, 10));
}
}
void SomeDlg::OnBnClickedValue3Plus3()
{
m_control1.GetWindowText(m_value1);
m_control2.GetWindowText(m_value2);
m_control3.GetWindowText(m_value3);
int a,b,c;
if (m_getcheck.GetCheck() == 1
&& _ttoi(m_value1) < 40
&& _ttoi(m_totalvalue) < 100)
{
a = _ttoi(m_value1) + 3;
b = _ttoi(m_value2);
c = a + b;
GetDlgItem(IDC_EDIT2)->SetWindowText(_itot(a, buff, 10));
GetDlgItem(IDC_EDIT3)->SetWindowText(_itot(c, buff, 10));
}
}
当按下plus2或plus 3按钮时,有3个编辑控件会更新。当按下plus2时,edit1用+2更新,当按下plus3时,edit2用+3更新。第3个编辑控件显示edit1 + edit2的总数,edit1的最大值为100,edit2的最大值为40。
然而情况并非如此,一旦按下按钮,如果数字相同或超过限制,则数值不会改变,但如果值为39且我加3,则它将变为42而不是40之前变得不活跃。
如何设置编辑控件的最大值?
答案 0 :(得分:0)
问题是您在修改值之前检查它们。 只需更改这样的“if”语句
即可if (m_getcheck.GetCheck() == 1
&& (_ttoi(m_value2 ) + 2 ) <= 40
&& (_ttoi(m_totalvalue ) + 2 ) <= 100)
和
if (m_getcheck.GetCheck() == 1
&& ( _ttoi(m_value1 ) + 3 ) <= 40
&& ( _ttoi(m_totalvalue) + 3 ) <= 100)
我也改变了&lt; in&lt; =因为你说1和2的MAX值是40,总数是100。
答案 1 :(得分:0)
我通过改变
解决了我的问题void SomeDlg::OnBnClickedValue3Plus3()
{
m_control1.GetWindowText(m_value1);
m_control2.GetWindowText(m_value2);
m_control3.GetWindowText(m_value3);
int a,b,c;
if (m_getcheck.GetCheck() == 1
&& _ttoi(m_value1) < 40
&& _ttoi(m_totalvalue) < 100)
{
a = _ttoi(m_value1) + 3;
b = _ttoi(m_value2);
c = a + b;
GetDlgItem(IDC_EDIT2)->SetWindowText(_itot(a, buff, 10));
GetDlgItem(IDC_EDIT3)->SetWindowText(_itot(c, buff, 10));
}
}
到这个
void SomeDlg::OnBnClickedValue3Plus3()
{
m_control1.GetWindowText(m_value1);
m_control2.GetWindowText(m_value2);
m_control3.GetWindowText(m_value3);
BOOL max1 = 40;
BOOL max2 = 100;
int a,b,c;
a = _ttoi(m_value1) + 3;
b = _ttoi(m_value2);
c = a + b;
if (m_getcheck.GetCheck() == 1
&& a <= max1
&& c <= max2)
{
GetDlgItem(IDC_EDIT2)->SetWindowText(_itot(a, buff, 10));
GetDlgItem(IDC_EDIT3)->SetWindowText(_itot(c, buff, 10));
}
}
这意味着当值为39时,我尝试添加3没有任何反应。然而,如果我加1,它达到40,这是我想要的方式,我只是认为如果我将数字更改为最大,如果我试图添加3到39将更简单。按照我原来的意图,这样做要容易得多。感谢所有的帮助。