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

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

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

  • 写回答

1条回答 默认 最新

  • 码农阿豪 Java领域优质创作者 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日

悬赏问题

  • ¥30 arduino vector defined in discarded section `.text' of wiring.c.o (symbol from plugin)
  • ¥20 关于#c++#的问题:(2)运算二叉树·表达式一般由一个运算符和两个操作数组成:(相关搜索:二叉树遍历)
  • ¥20 如何训练大模型在复杂因素组成的系统中求得最优解
  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时
  • ¥45 求17位带符号原码乘法器verilog代码
  • ¥20 PySide6扩展QLable实现Word一样的图片裁剪框
  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)