一个编辑框,我设置它的ID为IDC_NAME,数据成员为CString的m_strName,最大允许输入字符为六个(但我要最终实现的目的是输入数字)。又有另一个编辑框,它的ID为IDC_OUT,数据成员也为CString类型。 
我要实现这样一个目的: 
当我向m_strName中输入数字时,只有在000000-100000,300000-400000范围内时,在第二个编辑框中显示刚才输入的内容,当不再这个范围内时,由AfxMessageBox给出错误信息,并且第二个编辑框变灰禁止输入或者显示。 
我的问题是: 
用哪个函数如何实现上述功能。在我自己的程序中,总是不能同时实现上述两个功能。 补充:我是直接生成的基于Dialog的应用程序

解决方案 »

  1.   

    假如你只是实现上述功能,在Dialog的应用程序建立ID为IDC_NAME,数据成员为CString的m_strName和ID为IDC_OUT,数据成员也为CString类型的m_out,然后按照下面的程序编就行了。我调试过了。
    BOOL CMy11Dlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    int m_data;
    if(pMsg->message == WM_KEYDOWN){
    if(pMsg->wParam == VK_ESCAPE){
    return true;
    }
    if(pMsg->wParam == VK_RETURN){
    UpdateData(true);
    m_data=atoi(m_strName);
    if(m_data<=100000&&m_data>=000000||m_data<=400000&&m_data>=300000){
    m_out=m_strName;
    GetDlgItem(IDC_OUT)->EnableWindow(TRUE);
    GetDlgItem(IDC_OUT)->SetFocus();

    UpdateData(false);
    return true;
    }
    else{
    m_out=m_strName="";
    GetDlgItem(IDC_OUT)->EnableWindow(FALSE);
    AfxMessageBox("错误,请输入正确的值!",MB_OK||MB_ICONEXCLAMATION);
    UpdateData(false);
    return true;
    }

    } } return CDialog::PreTranslateMessage(pMsg);
    }