C/Visual C - Boton presionado.

 
Vista:

Boton presionado.

Publicado por Vito (17 intervenciones) el 24/04/2007 16:03:24
Hola.
Estoy desarrollando un programa, como algunas propiedades de los botones en Visual c++ no me gustaban, me bajé un ocx con otro boton más personalizable. El tema es que este boton tiene un problema con el foco. Me explico.

El boton si quereis buscarlo es MyHoverButton.
Cuando tenemos varios botones, y pulsas uno todo va bien. Pero cuando pulsas el segundo, al hacer clic solo pasas el foco. Y hay que volver a hacer clic para que se ejecute en Click. Como hacer clic dos veces es algo engorroso, cambie el codigo y en vez de ponerlo en el evento Click, lo puse en el MouseDown, con lo que ahora funciona todo correctamente.

Sin embargo, cuando pulso el boton se ejecuta el evento MouseDown y su codigo, pero el boton NO APARECE PRESIONADO. Lo que yo quiero es saber si existe alguna manera, o alguna propiedad para hacer que ese boton, aparezca como presionado.

Espero haberme explicado... Gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Boton presionado.

Publicado por fernando.gomez (1603 intervenciones) el 24/04/2007 19:56:11
Hola. ¿No era más fácil derivar de CButton que instalar un ActiveX?

En fin, ¿de dónde bajaste este control? Hice una búsqueda en Google y no aparecen resultados... Esto, para ver el código, igual hay problemas entre los focos del botón con respecto a su ventana padre (el ActiveX) y ésta con respecto a la ventana principal.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Boton presionado.

Publicado por Vito (17 intervenciones) el 25/04/2007 09:06:17
Gracias por contestar. Primero, no he usado el boton de la clase CButton por que no podia cambiarle el color del fondo, por eso me busque otro active X.

Tambien he de decir que soy nuevo con esto, asi que si se me esta pasando algo por alto y que puede ser muy sencillo echadme la bronca. ; ) Y lo del foco de la ventana padre y con la ventana principal... Perdona pero no te entiendo. Si me pudieras aclarar mas por favor...

Gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Boton presionado.

Publicado por Nelek (5 intervenciones) el 25/04/2007 09:31:00
Hola,

en cuanto a lo del CButton de VC++, si no te gusta el fondo... si se puede cambiar el formato sin necesidad de usar un ActiveX. A fin de cuentas un CButton esta derivado de la CWnd, por lo tanto puedes sobrecargar su constructor y modificar su apariencia. Echa un vistazo a la ayuda en CButton -> Button Styles (Estilos de botton), ahi tienes el BS_OWNERDRAW y el CBitmapButton, echale un vistazo a ver si te sirve para lo que tu quieres.

En cuanto a lo de tu problema con el OnMouseDown y el click... Pq no haces un chequeo de la posicion dentro de OnMouseMove para ver si estas encima del boton en cuestion o no y, en caso de estarlo, le pasas el focus. Asi ya lo tendrias en él y, cuando hicieras un click, ya podrias usar el codigo normalmente sin necesidad de hacer dos clicks ni usar el OnMouseDown.

De todas maneras coincido con Fernando, te estas complicando mas de la cuenta. Y anyado que... si quieres Botones personalizables, echale un vistazo a la pagina www.codeguru.com ahi seguro que encuentras algo que te pueda servir sin necesidad de salirte de las MFC o de complicarte con otras cosas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Boton presionado.

Publicado por Vito (17 intervenciones) el 25/04/2007 11:01:21
Ya he arreglado el asunto. Siguiendo la pista de Nelek sobre el MouseMove, he encontrado una funcion que sirve para mandar mensajes a los objetos ( ¿¿?? ) o algo asi. El resultado ha sido poner dentro del evento OnMouseMove del boton que tiene que recibir el foco al pasar por encima:

SendDlgItemMessage ( ******** , WM_SETFOCUS ) ;

Donde los asteriscos son el ID del boton.

Muchisimas gracias a todos por vuestra ayuda!!!!!! Sigo con el proyecto. Si necesito alguna cosa no dudare en volver a postear!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar