[英]c++ mfc create maximum number an edit control can have
使用以下代码,我已经设法通过单击按钮来使用值更新编辑控制框。
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。 第三个编辑控件将显示edit1 + edit2的总数,其中edit1最多为100,edit2最多为40。
但是,情况并非如此,如果按钮被按下时该数字相同或超过限制,则值将不会更改,但是如果值为39且我加了3,它将变为42而不是40,然后变为inactive。
我将如何为编辑控件设置最大值?
问题是您在修改值之前先检查它们。 只需像这样更改两个“ 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)
我还更改了<in <=,因为您说1和2的MAX值为40,总值为100。
我通过改变解决了我的问题
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,则将数字更改为最大值会更简单。按照我最初的意图进行操作要容易得多。 感谢所有的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.