Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: _Grey en 23 de Diciembre de 2004, 04:32:39 PM

Título: Novato Al Volante De Mfc
Publicado por: _Grey en 23 de Diciembre de 2004, 04:32:39 PM
 Estoy haciendo una pequeña aplicacion con MFC y tengo algun problema por mi falta de experiencia en ello, tengo un libro que me ayuda algo pero, tengo algun problema que parece que es facil ..... pero no doy con la solucion por que desconozco donde me muevo.

Primero una duda un poco general, tengo un EditBot para introducir valores en un ListBox.Cuando pulsaba return me cerraba la ventana de dialogo, e puesto un boton para introducir el valor y le he activado la propiedad defaultbutton, ahora cuando se pulsa return estando en el EditBox se llama a la funcion del boton de insertar valor.
Es la forma correcta de trabajar, o tendria que capturar "ese" return de otra forma??

El siguiente punto me extraña mas. Cuando señalo una opcion del ListBox y le doy a la tecla suprimir o de borrar, no elimina esa opcion, esperaba que fuera algo automatico, quiza e de capturar ese evento? como?

Por ultimo, es mejor asociar a estos elementos un objeto control o valor??? y por que??

Gracias por vuestro tiempo, saludos.
Título: Novato Al Volante De Mfc
Publicado por: fiero en 24 de Diciembre de 2004, 01:00:13 AM
 Hola,

Por defecto un diálogo siempre resonde a dos pulsaciones, el ENTER y el ESC, enviando los mensajes IDOK y IDCANCEL respectivamente. Las funciones que manejan por defecto estos mensajes, OnOk() y OnCancel() respectivamente, hacen que el diálogo se cierre. Para evitarlo la mejor forma que he conseguido es sobreescribir esas funciones en tu clase derivada de CDialog y quitar las llamadas a la clase base. Puedes dejar esas funciones vacias o especificar el código que quieres que se ejecute al pulsar intro o escape, así:

en MiClaseDlg.h:

class CMiClaseDlg : public CDialog
{
   ...
   virtual void OnCancel();
   virtual void OnOK();
{

en MiClaseDlg.cpp:

void CMiClaseDlg::OnCancel()
{
}

void CMiClaseDlg::OnOK()
{
}


Lo de pulsar la tecla suprimir no lo he hecho nunca, ¿has mirado el mensaje LVN_KEYDOWN de la lista?

Lo de asignar variables al control de tipo valor o control, como lo veas más cómodo. Si vas a utilizar solamente el valor retornado por el control, igual es más cómodo utilizar una tipo valor, aunque recuerda que siempre necesitarás llamar a UpdateData(bool) para actualizar el valor en uno u otro sentido.
Si vas a hacer más cosas con el control, como ocultarlo y mostrarlo, cambiarle de tamaño o posición en tiempo de ejecución, etc, entonces es mejor usar una variable de tipo control y manejarlo con ella. Si vas a hacer todas estas cosas y no tienes una variable de tipo control, necesitarás llamar a GetDlgItem(int nID) para obtener un puntero al control cada vez.

un saludo
Título: Novato Al Volante De Mfc
Publicado por: _Grey en 24 de Diciembre de 2004, 01:35:00 AM
 
muchas gracias!!

Saludos.
Título: Novato Al Volante De Mfc
Publicado por: [EX3] en 24 de Diciembre de 2004, 01:46:57 AM
 MFC, solo de recordar esas siglas me entran escalofrios, ke putas la pase en el curso cuando las toke, me hicieron odiar C++ a unos niveles increibles  (uoh)

Salu2...
Título: Novato Al Volante De Mfc
Publicado por: _Grey en 24 de Diciembre de 2004, 06:14:55 AM
 No hace falta que lo digas [EX3], las toco por que me a venido a cuento por el programita, pero me cuesta lo suyo ...... esta muy lejos de nuestros programillas a pantalla completa, pero me era necesario. :P

Saludotes.