无符号整形 发表于 2016-12-11 20:49:53

【MFC入门文字教程】35-定格式输入控件(CMFCMaskedEdit)

本帖最后由 无符号整形 于 2016-12-13 19:58 编辑

你有没有觉得CEdit很鸡肋?不能控制格式……,不然就可以用它来做注册码输入框了
不过,现在,MS给MFC添加了一种定格式输入控件,可以控制用户输入的格式,一般用来做注册码输入框。
它,可以控制输入的
掩码,输入格式,无效字符!

下面,让我们立即进入正题~{:10_279:}
基础知识(非常重要,要使用这个控件,就必须会他的掩码语法,输入目标语法(容易一些的)!)
1.Mask(掩码)语法
很难找到资料,真的。
语法可以参照以下代码(MSDN上的,MASK语法没找到具体的资料{:10_266:} )
设置掩码的代码在EnableMask函数里面。
CMFCPropertyPage::OnInitDialog();

        // Mask 1: phone number
        m_wndMaskEdit1.EnableMask(_T(" dddddd dddd"), // The mask string
                _T("(___) ___-____"), // Literal, "_" char = character entry
                _T(' ')); // Default char
        m_wndMaskEdit1.SetValidChars(NULL); // Valid string characters
        m_wndMaskEdit1.SetWindowText(_T("(123) 123-1212"));

        // Mask 2: State, Zip Code
        m_wndMaskEdit2.EnableMask(_T("       cc       ddddd-dddd"), // The mask string
                _T("State: __, Zip: _____-____"), // Literal, "_" char = character entry
                _T(' ')); // Backspace replace char
        m_wndMaskEdit2.SetValidChars(NULL); // Valid string characters
        m_wndMaskEdit2.SetWindowText(_T("State: NY, Zip: 12345-6789"));
        // Mask 3: serial code
        m_wndMaskEdit3.EnableMask(_T("   AAAA AAAA AAAA AAAA"), // The mask string
                _T("S/N: ____-____-____-____"), // Literal, "_" char = character entry
                _T('_')); // Backspace replace char
        m_wndMaskEdit3.SetValidChars(NULL); // Valid string characters
        m_wndMaskEdit3.SetWindowText(_T("S/N: FPR5-5678-1234-8765"));

        // Mask 4: 0xFFFF
        m_wndMaskEdit4.EnableMask(_T("AAAA"), // The mask string
                _T("0x____"), // Literal, "_" char = character entry
                _T('_')); // Backspace replace char
        m_wndMaskEdit4.SetValidChars(_T("1234567890ABCDEFabcdef")); // Valid string characters
        m_wndMaskEdit4.SetWindowText(_T("0x01AF"));

        // Mask 5: digits only
        m_wndMaskEdit5.DisableMask(); // Don't use the mask
        m_wndMaskEdit5.SetValidChars(_T("1234567890")); // Valid string characters
        m_wndMaskEdit5.SetWindowText(_T("1234567890"));
       
        return TRUE;// return TRUE unless you set the focus to a control

2.输入模板
这个很简单

符号 意义
_ 此位置的字符可以是任意字符
其他字符 此位置的字符只能是此字符

3.无效字符
这个就更简单了,直接把不能输入的字符堆在一起即可。
比如无效字符 = "a123",那么就不能输入a,1,2,3。


那么,怎么控制定格式输入控件的掩码,输入格式,无效字符呢?
有两种办法。
1.在对话框编辑器中设置
设置以下属性即可。

属性名 作用
Input Template 输入模板
Mask 输入掩码
Valid Chars 无效字符

2.在代码里面动态设置。
很简单,调用以下成员函数即可。

函数名 作用
EnableMask 设置掩码
SetValidChars 设置无效字符


实践时间!
这个东西仅允许输入十六进制格式的字符。

fyxn89 发表于 2020-7-28 23:25:36

LZSB
页: [1]
查看完整版本: 【MFC入门文字教程】35-定格式输入控件(CMFCMaskedEdit)