c ++ mfc创建编辑控件可以拥有的最大数字

时间:2014-01-19 13:42:52

标签: c++ mfc numbers max

使用以下代码,我已设法通过单击按钮更新编辑控件框。

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之前变得不活跃。

如何设置编辑控件的最大值?

2 个答案:

答案 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将更简单。按照我原来的意图,这样做要容易得多。感谢所有的帮助。