鱼C论坛

 找回密码
 立即注册
查看: 5975|回复: 1

[技术交流] 【MFC入门文字教程】35-定格式输入控件(CMFCMaskedEdit)

[复制链接]
发表于 2016-12-11 20:49:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

        // Mask 1: phone number
        m_wndMaskEdit1.EnableMask(_T(" ddd  ddd 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 设置无效字符


实践时间!
这个东西仅允许输入十六进制格式的字符。
MFCApplication54.rar (1.6 MB, 下载次数: 14)

评分

参与人数 1荣誉 +7 鱼币 +7 贡献 +5 收起 理由
拈花小仙 + 7 + 7 + 5 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-28 23:25:36 | 显示全部楼层
LZSB
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 18:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表