CMFCMaskedEdit 類別
類別 CMFCMaskedEdit
支援遮罩編輯控件,它會根據遮罩驗證用戶輸入,並根據範本顯示已驗證的結果。
語法
class CMFCMaskedEdit : public CEdit
成員
公用建構函式
名稱 | 描述 |
---|---|
CMFCMaskedEdit::CMFCMaskedEdit |
預設建構函式。 |
CMFCMaskedEdit::~CMFCMaskedEdit |
解構函式。 |
公用方法
名稱 | 描述 |
---|---|
CMFCMaskedEdit::D isableMask | 停用驗證用戶輸入。 |
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 方法來擷取已驗證的文字。
如果您未呼叫一或多個方法來初始化遮罩、有效字元和預設文字,則遮罩編輯控件的行為就如同標準編輯控件的行為一樣。
範例
下列範例示範如何使用 方法來建立遮罩編輯控件的遮罩、SetValidChars
指定使用者可以輸入的有效字元字串,以及在SetWindowText
遮罩編輯控件中顯示提示的方法,以設定遮罩的遮罩(例如電話號碼EnableMask
)。 此範例是 New Controls 範例的一部分。
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::D isableMask
停用驗證用戶輸入。
void DisableMask();
備註
如果停用使用者輸入驗證,遮罩的編輯控件的行為就像標準編輯控件一樣。
CMFCMaskedEdit::EnableGetMaskedCharsOnly
指定方法是否 GetWindowText
只擷取遮罩字元。
void EnableGetMaskedCharsOnly(BOOL bEnable=TRUE);
參數
bEnable
[in]TRUE 表示指定 CMFCMaskedEdit::GetWindowText 方法只擷取遮罩字元;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。