zoukankan      html  css  js  c++  java
  • MFC 屏蔽输入框(CEdit、ComboBoxB)非数字输入

    转载:https://blog.csdn.net/foreverhuylee/article/details/25378221

    关于PreTranslateMessage

    MFC消息控制流最具特色的地方是CWnd类的虚拟函数PreTranslateMessage(),通过重载这个函数,我们可以改变MFC的消息控制流程,甚至可以作一个全新的控制流出来。只有穿过消息队列的消息才受PreTranslateMessage()影响,采用SendMessage()或其他类似的方式向窗口直接发送的而不经过消息队列的消息根本不会理睬PreTranslateMessage()的存在。  

     顾名思义,PreTranslateMessage就是消息发送给窗口之前,提前拦截消息,然后对消息进行处理(即,改变了MFC的消息控制流程)

    要注意一下两点:

    1、是否调用TranslateMessage()和DispatchMessage()是由一个名称为PreTranslateMessage()函数的返回值决定的,如果该函数返回TRUE,则不会把该消息分发给窗口函数处理。
    2、传给PreTranslateMessage()的消息是未经翻译过的消息,它没有经过TranslateMessage()处理。可以在该函数中使用(pMsg->wParam==VK_RETURN)来拦截回车键。

     根据以上说明我们在自己的Dlalog里面重写BOOL PreTranslateMessage(MSG* pMsg)函数

    BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
    {
        // TODO: 在此添加专用代码和/或调用基类
    
    
        CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
    
        ASSERT(pEdit && pEdit->GetSafeHwnd());//如果对话框上有多个编辑控件,我们只想对指定对象过滤的话,我们可以在外面加层判断,是哪个控件
    
        if (GetFocus() == GetDlgItem(IDC_EDIT1))//对指定控件消息过滤
        {
            if (pMsg->message == WM_CHAR)
            {
                //VK_0 ~ VK_9 are the same as ASCII '0' ~'9'(0x30~ 0x39)
                //屏蔽除数字、小数点、符号(-)、回退之外所有的输入 小数点(.) ASCII-->46  VK_INSERT(-) 负号
                if (pMsg->wParam != '.' && !(pMsg->wParam >= '0' && pMsg->wParam <= '9') && pMsg->wParam != VK_BACK&& pMsg->wParam != VK_INSERT)
                {
                    return TRUE;// 使消息不再进行处理
                }
            }
            else if (pMsg->message == WM_KEYDOWN)//屏蔽 ESC、空格、回车
            {
                if (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_SPACE || pMsg->wParam == VK_RETURN)
                {
                    return TRUE;// 使消息不再进行处理
                }
            }
        }
    
        return CDialogEx::PreTranslateMessage(pMsg);
    }

  • 相关阅读:
    cocos2dx的内存管理机制
    cocos2d-x多分辨率适配方案:setDesignResolutionSize使用
    在lua脚本中使用我们自定义的精灵类
    cocos2d-x内存管理(见解)
    MongoDB学习笔记(2):数据库操作及CURD初步
    剑指Offer:树的子结构
    剑指Offer:反转链表
    剑指Offer:调整数组顺序使奇数位于偶数前面【21】
    剑指Offer:链表中倒数第k个结点【22】
    剑指Offer:合并两个排序的链表【25】
  • 原文地址:https://www.cnblogs.com/chechen/p/12783397.html
Copyright © 2011-2022 走看看