Classe CMFCMaskedEdit
La CMFCMaskedEdit
classe supporta un controllo di modifica mascherato, che convalida l'input dell'utente su una maschera e visualizza i risultati convalidati in base a un modello.
Sintassi
class CMFCMaskedEdit : public CEdit
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CMFCMaskedEdit::CMFCMaskedEdit |
Costruttore predefinito. |
CMFCMaskedEdit::~CMFCMaskedEdit |
Distruttore. |
Metodi pubblici
Nome | Descrizione |
---|---|
CMFCMaskedEdit::D isableMask | Disabilita la convalida dell'input dell'utente. |
CMFCMaskedEdit::EnableGetMaskedCharsOnly | Specifica se il GetWindowText metodo recupera solo caratteri mascherati. |
CMFCMaskedEdit::EnableMask | Inizializza il controllo di modifica mascherato. |
CMFCMaskedEdit::EnableSelectByGroup | Specifica se il controllo di modifica mascherato seleziona determinati gruppi di input utente o tutti gli input dell'utente. |
CMFCMaskedEdit::EnableSetMaskedCharsOnly | Specifica se il testo viene convalidato in base solo ai caratteri mascherati o all'intera maschera. |
CMFCMaskedEdit::GetThisClass |
Usato dal framework per ottenere un puntatore all'oggetto CRuntimeClass associato a questo tipo di classe. |
CMFCMaskedEdit::GetWindowText | Recupera il testo convalidato dal controllo di modifica mascherato. |
CMFCMaskedEdit::SetValidChars | Specifica una stringa di caratteri validi che l'utente può immettere. |
CMFCMaskedEdit::SetWindowText | Visualizza una richiesta nel controllo di modifica mascherato. |
Metodi protetti
Nome | Descrizione |
---|---|
CMFCMaskedEdit::IsMaskedChar | Chiamato dal framework per convalidare il carattere specificato rispetto al carattere mask corrispondente. |
Osservazioni:
Per usare il CMFCMaskedEdit
controllo nell'applicazione, seguire questa procedura:
Incorporare un
CMFCMaskedEdit
oggetto nella classe window.Chiamare il metodo CMFCMaskedEdit::EnableMask per specificare la maschera.
Chiamare il metodo CMFCMaskedEdit::SetValidChars per specificare l'elenco di caratteri validi.
Chiamare il metodo CMFCMaskedEdit::SetWindowText per specificare il testo predefinito per il controllo di modifica mascherato.
Chiamare il metodo CMFCMaskedEdit::GetWindowText per recuperare il testo convalidato.
Se non si chiama uno o più metodi per inizializzare la maschera, i caratteri validi e il testo predefinito, il controllo di modifica mascherato si comporta esattamente come si comporta il controllo di modifica standard.
Esempio
Nell'esempio seguente viene illustrato come configurare una maschera ,ad esempio un numero di telefono, utilizzando il EnableMask
metodo per creare la maschera per il controllo di modifica mascherato, il SetValidChars
metodo per specificare una stringa di caratteri validi che l'utente può immettere e SetWindowText
il metodo per visualizzare una richiesta nel controllo di modifica mascherato. Questo esempio fa parte dell'esempio New Controls.This example is part of the New Controls sample.
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);
}
Gerarchia di ereditarietà
Requisiti
Intestazione: afxmaskededit.h
CMFCMaskedEdit::D isableMask
Disabilita la convalida dell'input dell'utente.
void DisableMask();
Osservazioni:
Se la convalida dell'input utente è disabilitata, il controllo di modifica mascherato si comporta come il controllo di modifica standard.
CMFCMaskedEdit::EnableGetMaskedCharsOnly
Specifica se il GetWindowText
metodo recupera solo caratteri mascherati.
void EnableGetMaskedCharsOnly(BOOL bEnable=TRUE);
Parametri
bEnable
[in] TRUE per specificare che il metodo CMFCMaskedEdit::GetWindowText recupera solo i caratteri mascherati; FALSE per specificare che il metodo recupera l'intero testo. Il valore predefinito è TRUE.
Osservazioni:
Utilizzare questo metodo per abilitare il recupero di caratteri mascherati. Creare quindi un controllo di modifica mascherato che corrisponde al numero di telefono, ad esempio (425) 555-0187. Se si chiama il GetWindowText
metodo , restituisce "4255550187". Se si disabilita il recupero dei caratteri mascherati, il GetWindowText
metodo restituisce il testo visualizzato nel controllo di modifica, ad esempio "(425) 555-0187".
CMFCMaskedEdit::EnableMask
Inizializza il controllo di modifica mascherato.
void EnableMask(
LPCTSTR lpszMask,
LPCTSTR lpszInputTemplate,
TCHAR chMaskInputTemplate=_T('_'),
LPCTSTR lpszValid=NULL);
Parametri
lpszMask
[in] Stringa di maschera che specifica il tipo di carattere che può essere visualizzato in ogni posizione nell'input dell'utente. La lunghezza delle stringhe dei parametri lpszInputTemplate e lpszMask deve essere la stessa. Per altri dettagli sui caratteri maschera, vedere la sezione Osservazioni.
lpszInputTemplate
[in] Stringa del modello di maschera che specifica i caratteri letterali che possono essere visualizzati in ogni posizione nell'input dell'utente. Usare il carattere di ('_') sottolineatura come segnaposto carattere. La lunghezza delle stringhe dei parametri lpszInputTemplate e lpszMask deve essere la stessa.
chMaskInputTemplate
[in] Carattere predefinito sostituito dal framework per ogni carattere non valido nell'input dell'utente. Il valore predefinito di questo parametro è di sottolineatura ('_') .
lpszValid
[in] Stringa contenente un set di caratteri validi. NULL indica che tutti i caratteri sono validi. Il valore predefinito di questo parametro è NULL.
Osservazioni:
Utilizzare questo metodo per creare la maschera per il controllo di modifica mascherato. Derivare una classe dalla CMFCMaskedEdit
classe ed eseguire l'override del metodo CMFCMaskedEdit::IsMaskedChar per usare il proprio codice per l'elaborazione della maschera personalizzata.
Nella tabella seguente sono elencati i caratteri di maschera predefiniti:
Maschera carattere | Definizione |
---|---|
D | Cifra. |
d | Cifra o spazio. |
+ | Più ('+'), meno ('-') o spazio. |
A | Carattere alfabetico. |
c | Carattere alfabetico o spazio. |
Un | Carattere alfanumerico. |
a | Carattere alfanumerico o spazio. |
* | Carattere stampabile. |
CMFCMaskedEdit::EnableSelectByGroup
Specifica se il controllo di modifica mascherato consente all'utente di selezionare determinati gruppi di input o di tutti gli input.
void EnableSelectByGroup(BOOL bEnable=TRUE);
Parametri
bEnable
[in] TRUE per selezionare solo i gruppi; FALSE per selezionare l'intero testo. Il valore predefinito è TRUE.
Osservazioni:
Utilizzare questa funzione per specificare se il controllo di modifica mascherato consente a un utente di selezionare in base al gruppo o all'intero testo.
Per impostazione predefinita, la selezione per gruppo è abilitata. In questo caso l'utente può selezionare solo gruppi continui di caratteri validi.
Ad esempio, è possibile utilizzare il controllo di modifica mascherato seguente per convalidare un numero di telefono:
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
Se la selezione per gruppo è abilitata, l'utente può recuperare solo i gruppi di stringhe "425", "555" o "0187". Se la selezione del gruppo è disabilitata, l'utente può recuperare l'intero testo del numero di telefono: "(425) 555-0187".
CMFCMaskedEdit::EnableSetMaskedCharsOnly
Specifica se il testo viene convalidato in base solo ai caratteri mascherati o all'intera maschera.
void EnableSetMaskedCharsOnly(BOOL bEnable=TRUE);
Parametri
bEnable
[in] TRUE per convalidare l'input dell'utente in base solo ai caratteri mascherati; FALSE per la convalida rispetto all'intera maschera. Il valore predefinito è TRUE.
CMFCMaskedEdit::GetWindowText
Recupera il testo convalidato dal controllo di modifica mascherato.
int GetWindowText(
LPTSTR lpszStringBuf,
int nMaxCount) const;
void GetWindowText(CString& rstrString) const;
Parametri
lpszStringBuf
[out] Puntatore a un buffer che riceve il testo dal controllo di modifica.
nMaxCount
[in] Numero massimo di caratteri da ricevere.
rstrString
[out] Riferimento all'oggetto stringa che riceve il testo dal controllo di modifica.
Valore restituito
Il primo overload del metodo restituisce il numero di byte della stringa copiata nel buffer dei parametri lpszStringBuf ; 0 se il controllo di modifica mascherato non contiene testo.
Osservazioni:
Questo metodo copia il testo dal controllo di modifica mascherato nel buffer lpszStringBuf o nella stringa rstrString .
Questo metodo ridefinisce CWnd::GetWindowText.
CMFCMaskedEdit::IsMaskedChar
Chiamato dal framework per convalidare il carattere specificato rispetto al carattere mask corrispondente.
virtual BOOL IsMaskedChar(
TCHAR chChar,
TCHAR chMaskChar) const;
Parametri
chChar
[in] Carattere da convalidare.
chMaskChar
[in] Carattere corrispondente dalla stringa della maschera.
Valore restituito
TRUE se il parametro chChar è il tipo di carattere consentito dal parametro chMaskChar ; in caso contrario, FALSE.
Osservazioni:
Eseguire l'override di questo metodo per convalidare i caratteri di input autonomamente. Per altre informazioni sui caratteri maschera, vedere il metodo CMFCMaskedEdit::EnableMask.
CMFCMaskedEdit::SetValidChars
Specifica una stringa di caratteri validi che l'utente può immettere.
void SetValidChars(LPCTSTR lpszValid=NULL);
Parametri
lpszValid
[in] Stringa contenente il set di caratteri di input validi. NULL indica che tutti i caratteri sono validi. Il valore predefinito di questo parametro è NULL.
Osservazioni:
Utilizzare questo metodo per definire un elenco di caratteri validi. Se un carattere di input non è presente in questo elenco, il controllo di modifica mascherato non lo accetterà.
Nell'esempio di codice seguente vengono accettati solo numeri esadecimali.
//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
Visualizza una richiesta nel controllo di modifica mascherato.
void SetWindowText(LPCTSTR lpszString);
Parametri
lpszString
[in] Punta a una stringa con terminazione Null che verrà usata come richiesta.
Osservazioni:
Questo metodo imposta il testo del controllo.
Questo metodo ridefinisce CWnd::SetWindowText.