Php峥 2024-03-25 14:58 采纳率: 0%
浏览 24

MFC 文本框只能输入数字和符号

MFC 文本框怎么做到只输入 数字和符号啊
帮帮忙豪,这个问题对于我来说太困难了

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-25 14:59
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题解答: 要实现只允许输入数字和符号的话,可以通过以下步骤来实现:
    1. 在资源视图中选中文本框控件,打开属性窗口。
    2. 在控件属性中找到“限制”选项,设置“只读”为“否”,“多行”为“否”。
    3. 在“限制输入”的下拉列表中选择“使用正则表达式限制输入”。
    4. 在“限制输入”文本框中输入正则表达式“[0-9+*/-]”,表示只允许输入数字、加号、减号、乘号和除号。
    5. 保存属性设置后,在代码中添加以下代码:
    // 在消息映射中加入 WM_CHAR 消息处理函数
    BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
        ON_WM_CHAR() // 加入 WM_CHAR 消息处理函数
    END_MESSAGE_MAP()
    // WM_CHAR 消息处理函数
    void CMyDialog::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
        if (!isalnum(nChar) && nChar != '+' && nChar != '-' && nChar != '*' && nChar != '/')
        {
            // 如果输入字符不是数字或符号,则忽略该输入,不做任何处理
            return;
        }
        CDialog::OnChar(nChar, nRepCnt, nFlags);
    }
    

    这段代码的作用是对 WM_CHAR 消息进行处理,如果输入的字符不是数字或符号,就忽略该输入,不做任何处理。这样就可以实现只允许输入数字和符号的功能。 示例代码: 在资源视图中选中文本框控件,打开属性窗口,进行如下设置: image-20211222223403784 在代码中添加如下代码:

    // 在消息映射中加入 WM_CHAR 消息处理函数
    BEGIN_MESSAGE_MAP(CMFCApplication1Dlg, CDialogEx)
        ON_WM_CHAR()
    END_MESSAGE_MAP()
    // WM_CHAR 消息处理函数
    void CMFCApplication1Dlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
        if (!isalnum(nChar) && nChar != '+' && nChar != '-' && nChar != '*' && nChar != '/')
        {
            // 如果输入字符不是数字或符号,则忽略该输入,不做任何处理
            return;
        }
        CDialogEx::OnChar(nChar, nRepCnt, nFlags);
    }
    

    然后运行程序,在文本框中尝试输入字母,发现文本框不会显示字母,只能输入数字和符号: image-20211222223512967

    评论

报告相同问题?

问题事件

  • 创建了问题 3月25日