Compartir a través de


Clase CMFCMaskedEdit

La clase CMFCMaskedEdit admite un control de edición enmascarado, que valida los datos que proporciona el usuario en una máscara y muestra los resultados validados de acuerdo con una plantilla.

Sintaxis

class CMFCMaskedEdit : public CEdit

Miembros

Constructores públicos

Nombre Descripción
CMFCMaskedEdit::CMFCMaskedEdit Constructor predeterminado.
CMFCMaskedEdit::~CMFCMaskedEdit Destructor.

Métodos públicos

Nombre Descripción
CMFCMaskedEdit::DisableMask Deshabilita la validación de la entrada de usuario.
CMFCMaskedEdit::EnableGetMaskedCharsOnly Especifica si el método GetWindowText recupera solo caracteres enmascarados.
CMFCMaskedEdit::EnableMask Inicializa el control de edición enmascarado.
CMFCMaskedEdit::EnableSelectByGroup Especifica si el control de edición enmascarado selecciona grupos concretos de la entrada de usuario o todas las entradas de usuario.
CMFCMaskedEdit::EnableSetMaskedCharsOnly Especifica si el texto se valida solo con caracteres enmascarados o con la máscara completa.
CMFCMaskedEdit::GetThisClass Lo usa el marco para obtener un puntero al objeto CRuntimeClass asociado a este tipo de clase.
CMFCMaskedEdit::GetWindowText Recupera texto validado del control de edición enmascarado.
CMFCMaskedEdit::SetValidChars Especifica una cadena de caracteres válidos que el usuario puede introducir.
CMFCMaskedEdit::SetWindowText Muestra un mensaje en el control de edición enmascarado.

Métodos protegidos

Nombre Descripción
CMFCMaskedEdit::IsMaskedChar Lo llama el marco para validar el carácter especificado con el carácter de máscara correspondiente.

Comentarios

Realice los pasos siguientes para usar el control CMFCMaskedEdit en la aplicación:

  1. Inserte un objeto CMFCMaskedEdit en la clase de ventana.

  2. Llame al método CMFCMaskedEdit::EnableMask para especificar la máscara.

  3. Llame al método CMFCMaskedEdit::SetValidChars para especificar la lista de caracteres válidos.

  4. Llame al método CMFCMaskedEdit::SetWindowText a fin de especificar el texto predeterminado para el control de edición enmascarado.

  5. Llame al método CMFCMaskedEdit::GetWindowText para recuperar el texto validado.

Si no llama a uno o varios métodos para inicializar la máscara, los caracteres válidos y el texto predeterminado, el control de edición enmascarado se comporta igual que el control de edición estándar.

Ejemplo

En el ejemplo siguiente se muestra cómo configurar una máscara (por ejemplo, un número de teléfono) mediante el método EnableMask a fin de crear la máscara para el control de edición enmascarado, el método SetValidChars para especificar una cadena de caracteres válidos que el usuario puede escribir y el método SetWindowText para mostrar un mensaje en el control de edición enmascarado. Este ejemplo forma parte del ejemplo de controles nuevos.

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);
}

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CEdit

CMFCMaskedEdit

Requisitos

Encabezado: afxmaskededit.h

CMFCMaskedEdit::DisableMask

Deshabilita la validación de la entrada de usuario.

void DisableMask();

Comentarios

Si la validación de la entrada de usuario está deshabilitada, el control de edición enmascarado se comporta como el control de edición estándar.

CMFCMaskedEdit::EnableGetMaskedCharsOnly

Especifica si el método GetWindowText recupera solo caracteres enmascarados.

void EnableGetMaskedCharsOnly(BOOL bEnable=TRUE);

Parámetros

bEnable
[in] Es TRUE para especificar que el método CMFCMaskedEdit::GetWindowText recupera solo caracteres enmascarados; es FALSE para especificar que el método recupera todo el texto. El valor predeterminado es TRUE.

Comentarios

Use este método para habilitar la recuperación de caracteres enmascarados. Después, cree un control de edición enmascarado que corresponda con el número de teléfono, como (425) 555-0187. Si llama al método GetWindowText, devuelve "4255550187". Si deshabilita la recuperación de caracteres enmascarados, el método GetWindowText devuelve el texto que se muestra en el control de edición; por ejemplo, "(425) 555-0187".

CMFCMaskedEdit::EnableMask

Inicializa el control de edición enmascarado.

void EnableMask(
    LPCTSTR lpszMask,
    LPCTSTR lpszInputTemplate,
    TCHAR chMaskInputTemplate=_T('_'),
    LPCTSTR lpszValid=NULL);

Parámetros

lpszMask
[in] Cadena de máscara que especifica el tipo de carácter que puede aparecer en cada posición de la entrada de usuario. La longitud de las cadenas de los parámetros lpszInputTemplate y lpszMask debe ser la misma. Vea la sección Comentarios para obtener más detalles sobre los caracteres de máscara.

lpszInputTemplate
[in] Cadena de plantilla de máscara que especifica los caracteres literales que pueden aparecer en cada posición de la entrada de usuario. Use el carácter ("_") de subrayado como marcador de posición de caracteres. La longitud de las cadenas de los parámetros lpszInputTemplate y lpszMask debe ser la misma.

chMaskInputTemplate
[in] Carácter predeterminado que el marco sustituye por cada carácter no válido en la entrada de usuario. El valor predeterminado de este parámetro es subrayado ("_").

lpszValid
[in] Cadena que contiene un conjunto de caracteres válidos. NULL indica que todos los caracteres son válidos. El valor predeterminado de este parámetro es NULL.

Comentarios

Use este método a fin de crear la máscara para el control de edición enmascarado. Derive una clase de la clase CMFCMaskedEdit e invalide el método CMFCMaskedEdit::IsMaskedChar a fin de usar su propio código para el procesamiento personalizado de máscaras.

En la tabla siguiente se enumeran los caracteres de máscara predeterminados:

Carácter de máscara Definición
D Dígito.
d Dígito o espacio.
+ Más ("+"), menos ("-") o espacio.
C Carácter alfabético.
c Carácter alfabético o espacio.
A Carácter alfanumérico.
a Carácter alfanumérico o espacio.
* Carácter imprimible:

CMFCMaskedEdit::EnableSelectByGroup

Especifica si el control de edición enmascarado permite al usuario seleccionar una entrada de grupos determinada o toda la entrada.

void EnableSelectByGroup(BOOL bEnable=TRUE);

Parámetros

bEnable
[in] Es TRUE para seleccionar solo grupos; es FALSE para seleccionar todo el texto. El valor predeterminado es TRUE.

Comentarios

Use esta función para especificar si el control de edición enmascarado permite a un usuario seleccionar por grupo o todo el texto.

De manera predeterminada, está habilitada la selección por grupo. En este caso, el usuario solo puede seleccionar grupos continuos de caracteres válidos.

Por ejemplo, puede usar el control de edición enmascarado siguiente para validar un número de teléfono:

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

Si está habilitada la selección por grupo, el usuario solo puede recuperar los grupos de cadenas "425", "555" o "0187". Si está deshabilitada la selección por grupo, el usuario puede recuperar todo el texto del número de teléfono: "(425) 555-0187".

CMFCMaskedEdit::EnableSetMaskedCharsOnly

Especifica si el texto se valida solo con los caracteres enmascarados o con toda la máscara.

void EnableSetMaskedCharsOnly(BOOL bEnable=TRUE);

Parámetros

bEnable
[in] Es TRUE para validar la entrada del usuario solo con caracteres enmascarados; es FALSE para validar con toda la máscara. El valor predeterminado es TRUE.

CMFCMaskedEdit::GetWindowText

Recupera texto validado del control de edición enmascarado.

int GetWindowText(
    LPTSTR lpszStringBuf,
    int nMaxCount) const;

void GetWindowText(CString& rstrString) const;

Parámetros

lpszStringBuf
[out] Puntero a un búfer que recibe el texto del control de edición.

nMaxCount
[in] Número máximo de caracteres que se van a recibir.

rstrString
[out] Referencia al objeto de cadena que recibe el texto del control de edición.

Valor devuelto

La primera sobrecarga del método devuelve el número de bytes de la cadena que se copia en el búfer del parámetro lpszStringBuf; 0 si el control de edición enmascarado no tiene texto.

Comentarios

Este método copia el texto del control de edición enmascarado en el búfer lpszStringBuf o la cadena rstrString.

Este método vuelve a definir CWnd::GetWindowText.

CMFCMaskedEdit::IsMaskedChar

Lo llama el marco para validar el carácter especificado con el carácter de máscara correspondiente.

virtual BOOL IsMaskedChar(
    TCHAR chChar,
    TCHAR chMaskChar) const;

Parámetros

chChar
[in] Carácter que se va a validar.

chMaskChar
[in] Carácter correspondiente de la cadena de máscara.

Valor devuelto

Es TRUE si el parámetro chChar es el tipo de carácter que permite el parámetro chMaskChar; de lo contrario, es FALSE.

Comentarios

Invalide este método para validar los caracteres de entrada por su cuenta. Para obtener más información sobre los caracteres de máscara, vea el método CMFCMaskedEdit::EnableMask.

CMFCMaskedEdit::SetValidChars

Especifica una cadena de caracteres válidos que el usuario puede introducir.

void SetValidChars(LPCTSTR lpszValid=NULL);

Parámetros

lpszValid
[in] Cadena que contiene el conjunto de caracteres de entrada válidos. NULL significa que todos los caracteres son válidos. El valor predeterminado de este parámetro es NULL.

Comentarios

Use este método para definir una lista de caracteres válidos. Si un carácter de entrada no está en esta lista, el control de edición enmascarado no lo aceptará.

En el ejemplo de código siguiente solo se aceptan números hexadecimales.

//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

Muestra un mensaje en el control de edición enmascarado.

void SetWindowText(LPCTSTR lpszString);

Parámetros

lpszString
[in] Apunta a una cadena terminada en null que se usará como mensaje.

Comentarios

Este método establece el texto del control.

Este método vuelve a definir CWnd::GetWindowText.

Consulte también

Gráfico de jerarquías
Clases
CEdit (clase)