Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


CDialog, modifyStyle

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

CDialog, modifyStyle

Notapor Amorevieta el Vie Sep 02, 2005 4:24 am

Hola, tengo que utilizar una ventana CDialog para varias funciones. En la mayor parte de los casos el usuariofinal puede introducir lo que le apetezca (números, palabras, ..) pero en algunos casos debo restringir las entradas a números.

He consultado bibliografía, he buscado en internet, ... y he visto que la opción modifyStyle permite restringir la entrada a sólo números pero no sé cómo utilizarla.

Si intento ponerlo directamente donde invoco al CDialog da un Assert error, porque la ventana no está creada aun, sabe alguien cómo sobrecargar la función OnInitDialog para poder restringir a sólo números cuando lo necesite?

Muchas gracias por adelantado,
Amorevieta
Amorevieta
Novato
Novato
 
Mensajes: 3
Registrado: Vie Sep 02, 2005 4:18 am

Re: CDialog, modifyStyle

Notapor latindeveloper el Vie Sep 02, 2005 7:53 am

Un CDialog en sí no acepta entradas de tipo texto, seguramente estas utilizando controles de tipo CEdit para ello.

Se puede realizar modificaciones a los controles CEdit para que solo acepte numeros, para eso tienes que escribir esto en tu OnInitDialog.


Código: Seleccionar todo
m_edit.ModifyStyle(0,ES_NUMBER);


O modificar las propiedades de tu "edit" en tu dialogo con el editor de reursos.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor Amorevieta el Vie Sep 02, 2005 8:28 am

Eso es lo que intento hacer pero no sé cómo hacerlo.. me da errores. El código que yo escribo es:

bool ProcessPNewOption::OnInitDialog()
{
CDialog::OnInitDialog();
if(forceNumber)
{
m_CEdit_NewOption.ModifyStyle(0,ES_NUMBER);
return TRUE;
}
else
{
m_CEdit_NewOption.ModifyStyle(ES_NUMBER,0);
return TRUE;
}
}

donde forceNumber es un flag que he definido yo dentro de la clase del CDialog. Pero el error que me da es:

error C2555: 'ProcessPNewOption::OnInitDialog': overriding virtual function return type differs and is not covariant from 'CDialog::OnInitDialog'

Y creo que la función OnInitDialog devuelve boolean, también he probado utilizar void OnInitDialog(), pero me da el mismo error.

Alguna idea de cómo arreglar este problemilla? estoy segura de que es una tontería pero llevo dos días dándole vueltas y no doy con el error.

Muchas gracias de nuevo,
Amorevieta
Amorevieta
Novato
Novato
 
Mensajes: 3
Registrado: Vie Sep 02, 2005 4:18 am

Tipo de dato

Notapor latindeveloper el Vie Sep 02, 2005 5:56 pm

Cambia bool por BOOL.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Gracias

Notapor Amorevieta el Lun Sep 05, 2005 2:35 am

Muchas gracias, ese era el problema, lo habia puesto en minusculas porque al ponerlo en mayusculas no lo escribia en azul.

Un saludo,
Amorevieta
Amorevieta
Novato
Novato
 
Mensajes: 3
Registrado: Vie Sep 02, 2005 4:18 am


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados