CMFCMaskedEdit 类
CMFCMaskedEdit
类支持掩码编辑控件,此控件利用掩码验证用户输入,并根据模板显示验证的结果。
语法
class CMFCMaskedEdit : public CEdit
成员
公共构造函数
名称 | 描述 |
---|---|
CMFCMaskedEdit::CMFCMaskedEdit |
默认构造函数。 |
CMFCMaskedEdit::~CMFCMaskedEdit |
析构函数。 |
公共方法
名称 | 描述 |
---|---|
CMFCMaskedEdit::DisableMask | 禁止验证用户输入。 |
CMFCMaskedEdit::EnableGetMaskedCharsOnly | 指定 GetWindowText 方法是否只检索掩码字符。 |
CMFCMaskedEdit::EnableMask | 初始化掩码编辑控件。 |
CMFCMaskedEdit::EnableSelectByGroup | 指定掩码编辑控件是选择特定用户输入组还是所有用户输入。 |
CMFCMaskedEdit::EnableSetMaskedCharsOnly | 指定文本是仅针对掩码字符还是针对整个掩码进行验证。 |
CMFCMaskedEdit::GetThisClass |
由框架用于获取指向与此类类型关联的 CRuntimeClass 对象的指针。 |
CMFCMaskedEdit::GetWindowText | 从掩码编辑控件中检索已验证的文本。 |
CMFCMaskedEdit::SetValidChars | 指定用户可输入的有效字符的字符串。 |
CMFCMaskedEdit::SetWindowText | 在掩码编辑控件中显示提示。 |
受保护方法
名称 | 描述 |
---|---|
CMFCMaskedEdit::IsMaskedChar | 由框架调用来对照相应的掩码字符验证指定字符。 |
备注
执行以下步骤,以便在应用程序中使用 CMFCMaskedEdit
控件:
将
CMFCMaskedEdit
对象嵌入窗口类中。调用 CMFCMaskedEdit::EnableMask 方法来指定掩码。
调用 CMFCMaskedEdit::SetValidChars 方法以指定有效字符的列表。
调用 CMFCMaskedEdit::SetWindowText 方法以指定掩码编辑控件的默认文本。
调用 CMFCMaskedEdit::GetWindowText 方法以检索已验证的文本。
如果不调用一个或多个方法来初始化掩码、有效字符和默认文本,则掩码编辑控件的行为与标准编辑控件的行为一样。
示例
以下示例演示如何设置掩码(例如电话号码),方式是使用 EnableMask
方法为掩码编辑控件创建掩码,使用 SetValidChars
方法指定用户可输入的有效字符的字符串,使用 SetWindowText
方法在掩码编辑控件中显示提示。 本示例是新控件示例的一部分。
CMFCMaskedEdit m_wndMaskEdit1;
CMFCMaskedEdit m_wndMaskEdit2;
CMFCMaskedEdit m_wndMaskEdit3;
CMFCMaskedEdit m_wndMaskEdit4;
CMFCMaskedEdit m_wndMaskEdit5;
CString m_strValue1;
CString m_strValue2;
CString m_strValue3;
CString m_strValue4;
CString m_strValue5;
BOOL CPage4::OnInitDialog()
{
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
}
void CPage4::OnButtonGet()
{
m_wndMaskEdit1.GetWindowText(m_strValue1);
m_wndMaskEdit2.GetWindowText(m_strValue2);
m_wndMaskEdit3.GetWindowText(m_strValue3);
m_wndMaskEdit4.GetWindowText(m_strValue4);
m_wndMaskEdit5.GetWindowText(m_strValue5);
UpdateData(FALSE);
}
继承层次结构
要求
标头:afxmaskededit.h
CMFCMaskedEdit::DisableMask
禁止验证用户输入。
void DisableMask();
注解
如果禁用用户输入验证,则掩码编辑控件的行为与标准编辑控件类似。
CMFCMaskedEdit::EnableGetMaskedCharsOnly
指定 GetWindowText
方法是否只检索掩码字符。
void EnableGetMaskedCharsOnly(BOOL bEnable=TRUE);
参数
bEnable
[in] 若要指定 CMFCMaskedEdit::GetWindowText 方法仅检索掩码字符,则为 TRUE;若要指定方法检索整个文本,则为 FALSE。 默认值为 TRUE。
备注
使用此方法可检索掩码字符。 然后,创建与电话号码(例如 (425) 555-0187)对应的掩码编辑控件。 如果调用 GetWindowText
方法,它会返回“4255550187”。 如果禁止检索掩码字符,GetWindowText
方法会返回编辑控件中显示的文本,例如“(425) 555-0187”。
CMFCMaskedEdit::EnableMask
初始化掩码编辑控件。
void EnableMask(
LPCTSTR lpszMask,
LPCTSTR lpszInputTemplate,
TCHAR chMaskInputTemplate=_T('_'),
LPCTSTR lpszValid=NULL);
参数
lpszMask
[in] 一个掩码字符串,指定可在用户输入中的每个位置显示的字符类型。 lpszInputTemplate 和 lpszMask 参数字符串的长度必须相同。 有关掩码字符的详细信息,请参阅“注解”部分。
lpszInputTemplate
[in] 一个掩码模板字符串,指定可在用户输入中的每个位置显示的文字字符。 使用下划线字符 (_) 作为字符占位符。 lpszInputTemplate 和 lpszMask 参数字符串的长度必须相同。
chMaskInputTemplate
[in] 框架用于替换用户输入中每个无效字符的默认字符。 此参数的默认值为下划线 (_)。
lpszValid
[in] 包含一组有效字符的字符串。 NULL 表示所有字符都有效。 此参数的默认值为 NULL。
注解
使用此方法为掩码编辑控件创建掩码。 从 CMFCMaskedEdit
类派生一个类并替代 CMFCMaskedEdit::IsMaskedChar 方法,以使用自己的代码进行自定义掩码处理。
下表列出了默认掩码字符:
掩码字符 | 定义 |
---|---|
D | 数字。 |
d | 数字或空格。 |
+ | 加号 (+)、减号 (-) 或空格。 |
C | 字母字符。 |
c | 字母字符或空格。 |
A | 字母数字字符。 |
a | 字母数字字符或空格。 |
* | 可打印字符。 |
CMFCMaskedEdit::EnableSelectByGroup
指定用户可通过掩码编辑控件选择特定组输入还是所有输入。
void EnableSelectByGroup(BOOL bEnable=TRUE);
参数
bEnable
[in] 若要仅选择组,则为 TRUE;若要选择整个文本,则为 FALSE。 默认值为 TRUE。
备注
使用此函数可指定用户可通过掩码编辑控件按组进行选择还是选择整个文本。
默认情况下,启用“按组选择”。 在这种情况下,用户只能选择连续的有效字符组。
例如,可使用以下掩码编辑控件来验证电话号码:
m_wndMaskEdit.EnableMask(
_T(" ddd ddd dddd"), // Mask string
_T("(___) ___-____"), // Template string
_T(' ')); // Default char
m_wndMaskEdit.SetValidChars(NULL); // All characters are valid.
m_wndMaskEdit.SetWindowText(_T("(425) 555-0187")); // Prompt
如果启用了“按组选择”,则用户只能检索“425”、“555”或“0187”字符串组。 如果禁用组选择,则用户可检索电话号码的完整文本:“(425) 555-0187”。
CMFCMaskedEdit::EnableSetMaskedCharsOnly
指定文本是仅针对掩码字符还是针对整个掩码进行验证。
void EnableSetMaskedCharsOnly(BOOL bEnable=TRUE);
参数
bEnable
[in] 若要仅针对掩码字符验证用户输入,则为 TRUE;若要针对整个掩码进行验证,则为 FALSE。 默认值为 TRUE。
CMFCMaskedEdit::GetWindowText
从掩码编辑控件中检索已验证的文本。
int GetWindowText(
LPTSTR lpszStringBuf,
int nMaxCount) const;
void GetWindowText(CString& rstrString) const;
参数
lpszStringBuf
[out] 指向从编辑控件接收文本的缓冲区的指针。
nMaxCount
[in] 要接收的最大字符数。
rstrString
[out] 对从编辑控件接收文本的字符串对象的引用。
返回值
第一个方法重载返回复制到 lpszStringBuf 参数缓冲区的字符串的字节数;如果掩码编辑控件没有文本,则返回 0。
注解
此方法将掩码编辑控件中的文本复制到 lpszStringBuf 缓冲区或 rstrString 字符串。
此方法会重新定义 CWnd::GetWindowText。
CMFCMaskedEdit::IsMaskedChar
由框架调用来对照相应的掩码字符验证指定字符。
virtual BOOL IsMaskedChar(
TCHAR chChar,
TCHAR chMaskChar) const;
参数
chChar
[in] 要验证的字符。
chMaskChar
[in] 掩码字符串中的相应字符。
返回值
如果 chChar 参数是 chMaskChar 参数允许的字符类型,则为 TRUE;否则为 FALSE。
备注
重写此方法可自行验证输入字符。 有关掩码字符的详细信息,请参阅 CMFCMaskedEdit::EnableMask 方法。
CMFCMaskedEdit::SetValidChars
指定用户可输入的有效字符的字符串。
void SetValidChars(LPCTSTR lpszValid=NULL);
参数
lpszValid
[in] 一个包含有效输入字符集的字符串。 NULL 表示所有字符都有效。 此参数的默认值为 NULL。
注解
使用此方法可定义有效字符的列表。 如果输入字符不在此列表中,掩码编辑控件将不接受它。
下面的代码示例仅接受十六进制数字。
//Mask: 0xFFFF
m_wndMaskEdit.EnableMask(
_T(" AAAA"), // The mask string.
_T("0x____"), // The literal template string.
_T('_')); // The default character that
// replaces the backspace character.
// Valid string characters
m_wndMaskEdit.SetValidChars(_T("1234567890ABCDEFabcdef"));m_wndMaskEdit.SetWindowText(_T("0x01AF"));
CMFCMaskedEdit::SetWindowText
在掩码编辑控件中显示提示。
void SetWindowText(LPCTSTR lpszString);
参数
lpszString
[in] 指向将用作提示的以 null 结尾的字符串。
注解
此方法设置控件文本。
此方法会重新定义 CWnd::SetWindowText。