C MFC创建编辑控件可以拥有的最大数字

c++ mfc create maximum number an edit control can have

本文关键字:拥有 数字 MFC 创建 编辑 控件      更新时间:2023-10-16

使用以下代码,我设法在单击按钮时更新了带有值的编辑控制框。

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被按下 2的Edit1更新时,按下Plus3时,Edit2使用 3更新。第三编辑控件显示Edit1 Edit2的总数,该总数应在Edit1中最大为100,并且Edit2最多为40。

但是事实并非如此,如果按下按钮后数字相同或超过限制,则值不会更改,但是如果值为39,我添加了3个,则将变为42,而不是40变得不活跃。

我将如何为编辑控件设置最大值?

问题是您在修改值之前先检查值。只需更改这样的"如果"这样的陈述

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;在&lt; =因为您说1和2的最大值是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的数字将数字更改为最大值,那会更简单。按照我最初的意图进行操作要容易得多。感谢您的所有帮助。