CMFCMaskedEdit – třída
Třída CMFCMaskedEdit
podporuje maskovaný ovládací prvek pro úpravy, který ověřuje vstup uživatele proti masce a zobrazuje ověřené výsledky podle šablony.
class CMFCMaskedEdit : public CEdit
Název | Popis |
---|---|
CMFCMaskedEdit::CMFCMaskedEdit |
Výchozí konstruktor. |
CMFCMaskedEdit::~CMFCMaskedEdit |
Destruktor. |
Název | Popis |
---|---|
CMFCMaskedEdit::D isableMask | Zakáže ověřování vstupu uživatele. |
CMFCMaskedEdit::EnableGetMaskedCharsOnly | Určuje, zda GetWindowText metoda načte pouze maskované znaky. |
CMFCMaskedEdit::EnableMask | Inicializuje maskovaný ovládací prvek pro úpravy. |
CMFCMaskedEdit::EnableSelectByGroup | Určuje, zda maskovaný ovládací prvek pro úpravy vybere konkrétní skupiny uživatelského vstupu nebo veškerý uživatelský vstup. |
CMFCMaskedEdit::EnableSetMaskedCharsOnly | Určuje, zda je text ověřen pouze pro maskované znaky, nebo pro celou masku. |
CMFCMaskedEdit::GetThisClass |
Používá se architekturou k získání ukazatele na CRuntimeClass objektu, který je přidružen k tomuto typu třídy. |
CMFCMaskedEdit::GetWindowText | Načte ověřený text z maskovaného ovládacího prvku pro úpravy. |
CMFCMaskedEdit::SetValidChars | Určuje řetězec platných znaků, které může uživatel zadat. |
CMFCMaskedEdit::SetWindowText | Zobrazí výzvu v ovládacím prvku maskovaných úprav. |
Název | Popis |
---|---|
CMFCMaskedEdit::IsMaskedChar | Volá se rozhraním k ověření zadaného znaku vůči odpovídajícímu znaku masky. |
Pomocí ovládacího prvku v aplikaci proveďte následující kroky CMFCMaskedEdit
:
CMFCMaskedEdit
Vložte objekt do třídy okna.Volání CMFCMaskedEdit::EnableMask metoda určit masku.
Volání CMFCMaskedEdit::SetValidChars metoda určit seznam platných znaků.
Volání CMFCMaskedEdit::SetWindowText metoda určit výchozí text pro maskovaný edit ovládací prvek.
Volání CMFCMaskedEdit::GetWindowText metoda načtení ověřeného textu.
Pokud nevoláte jednu nebo více metod pro inicializaci masky, platných znaků a výchozího textu, chová se ovládací prvek maskovaných úprav stejně jako standardní ovládací prvek pro úpravy.
Následující příklad ukazuje, jak nastavit masku (například telefonní číslo) pomocí EnableMask
metody vytvořit masku pro maskovaný ovládací prvek pro úpravy, SetValidChars
metoda určit řetězec platných znaků, které může uživatel zadat, a SetWindowText
metodu pro zobrazení výzvy v ovládacím prvku maskované úpravy. Tento příklad je součástí ukázky Nové ovládací prvky.
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);
}
Hlavička: afxmaskedit.h
Zakáže ověřování vstupu uživatele.
void DisableMask();
Pokud je ověření vstupu uživatele zakázané, maskovaný ovládací prvek pro úpravy se chová jako standardní ovládací prvek pro úpravy.
Určuje, zda GetWindowText
metoda načte pouze maskované znaky.
void EnableGetMaskedCharsOnly(BOOL bEnable=TRUE);
bEnable
[v] TRUE určit, že CMFCMaskedEdit::GetWindowText metoda načíst pouze maskované znaky; False určuje, že metoda načte celý text. Výchozí hodnota je PRAVDA.
Tuto metodu použijte k povolení načítání maskovaných znaků. Pak vytvořte maskovaný ovládací prvek pro úpravy, který odpovídá telefonnímu číslu, například (425) 555-0187. Pokud zavoláte metodu GetWindowText
, vrátí "4255550187". Pokud zakážete načítání maskovaných znaků, GetWindowText
vrátí metoda text zobrazený v ovládacím prvku pro úpravy, například "(425) 555-0187".
Inicializuje maskovaný ovládací prvek pro úpravy.
void EnableMask(
LPCTSTR lpszMask,
LPCTSTR lpszInputTemplate,
TCHAR chMaskInputTemplate=_T('_'),
LPCTSTR lpszValid=NULL);
lpszMask
[v] Řetězec masky, který určuje typ znaku, který se může objevit na každé pozici ve vstupu uživatele. Délka řetězců parametrů lpszInputTemplate a lpszMask musí být stejná. Další podrobnosti o znacích masky najdete v části Poznámky.
lpszInputTemplate
[v] Řetězec šablony masky, který určuje literální znaky, které se můžou objevit na každé pozici ve vstupu uživatele. Jako zástupný symbol znaku ('_') použijte podtržítko. Délka řetězců parametrů lpszInputTemplate a lpszMask musí být stejná.
chMaskInputTemplate
[v] Výchozí znak, který architektura nahradí každý neplatný znak ve vstupu uživatele. Výchozí hodnota tohoto parametru je podtržítko ('_') .
lpszValid
[v] Řetězec, který obsahuje sadu platných znaků. Hodnota NULL označuje, že všechny znaky jsou platné. Výchozí hodnota tohoto parametru je NULL.
Pomocí této metody vytvořte masku pro maskovaný ovládací prvek pro úpravy. Odvození třídy z CMFCMaskedEdit
třídy a přepsání CMFCMaskedEdit::IsMaskedChar metoda použít vlastní kód pro vlastní zpracování masky.
V následující tabulce jsou uvedeny výchozí znaky masky:
Mask Character | Definice |
---|---|
D | Cifra. |
d | Číslice nebo mezera |
+ | Plus (+), minus (-) nebo mezera. |
C | Abecední znak. |
c | Abecední znak nebo mezera |
A | Alfanumerický znak. |
d | Alfanumerický znak nebo mezera |
* | Tisknutelný znak. |
Určuje, zda maskovaný ovládací prvek pro úpravy umožňuje uživateli vybrat konkrétní vstup skupiny nebo všechny vstupy.
void EnableSelectByGroup(BOOL bEnable=TRUE);
bEnable
[v] PRAVDA pro výběr pouze skupin; NEPRAVDA pro výběr celého textu. Výchozí hodnota je PRAVDA.
Pomocí této funkce můžete určit, zda maskovaný ovládací prvek pro úpravy umožňuje uživateli vybrat podle skupiny nebo celého textu.
Ve výchozím nastavení je povolen výběr podle skupiny. V takovém případě může uživatel vybrat pouze souvislé skupiny platných znaků.
K ověření telefonního čísla můžete použít například následující maskovaný ovládací prvek pro úpravy:
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
Pokud je povolen výběr podle skupiny, může uživatel načíst pouze skupiny řetězců 425, 555 nebo 0187. Pokud je výběr skupiny zakázaný, může uživatel načíst celý text telefonního čísla: "(425) 555-0187".
Určuje, zda je text ověřen pouze pro maskované znaky nebo pro celou masku.
void EnableSetMaskedCharsOnly(BOOL bEnable=TRUE);
bEnable
[v] TRUE pro ověření vstupu uživatele pouze maskovanými znaky; NEPRAVDA pro ověření proti celé masce. Výchozí hodnota je PRAVDA.
Načte ověřený text z maskovaného ovládacího prvku pro úpravy.
int GetWindowText(
LPTSTR lpszStringBuf,
int nMaxCount) const;
void GetWindowText(CString& rstrString) const;
lpszStringBuf
[ven] Ukazatel na vyrovnávací paměť, která přijímá text z ovládacího prvku pro úpravy.
nMaxCount
[v] Maximální počet znaků, které se mají přijmout.
rstrString
[ven] Odkaz na objekt řetězce, který obdrží text z ovládacího prvku pro úpravy.
První přetížení metody vrátí počet bajtů řetězce, který je zkopírován do vyrovnávací paměti parametru lpszStringBuf ; 0 pokud maskovaný ovládací prvek pro úpravy nemá žádný text.
Tato metoda zkopíruje text z maskovaného ovládacího prvku pro úpravy do vyrovnávací paměti lpszStringBuf nebo řetězec rstrString .
Tato metoda předefinuje CWnd::GetWindowText.
Volá se rozhraním k ověření zadaného znaku vůči odpovídajícímu znaku masky.
virtual BOOL IsMaskedChar(
TCHAR chChar,
TCHAR chMaskChar) const;
chChar
[v] Znak, který se má ověřit.
chMaskChar
[v] Odpovídající znak z řetězce masky.
TRUE, pokud je parametr chChar typem znaku povoleného parametrem chMaskChar ; jinak NEPRAVDA.
Tuto metodu přepište, abyste ověřili vstupní znaky sami. Další informace o znaky masky naleznete v CMFCMaskedEdit::EnableMask metoda.
Určuje řetězec platných znaků, které může uživatel zadat.
void SetValidChars(LPCTSTR lpszValid=NULL);
lpszValid
[v] Řetězec, který obsahuje sadu platných vstupních znaků. HODNOTA NULL znamená, že všechny znaky jsou platné. Výchozí hodnota tohoto parametru je NULL.
Tato metoda slouží k definování seznamu platných znaků. Pokud vstupní znak není v tomto seznamu, maskovaný ovládací prvek pro úpravy ho nepřijme.
Následující příklad kódu přijímá pouze šestnáctková čísla.
//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"));
Zobrazí výzvu v ovládacím prvku maskovaných úprav.
void SetWindowText(LPCTSTR lpszString);
lpszString
[v] Odkazuje na řetězec ukončený hodnotou null, který se použije jako výzva.
Tato metoda nastaví ovládací text.
Tato metoda předefinuje CWnd::SetWindowText.