Cambiar aspecto de ventanas

26/01/2007 - 15:22 por Roberto Val | Informe spam
Hola a todos. Soy programador de C/C++ y hace poco que estoy en esto de
vb.net y me encuentro bloqueado al intentar cambiar el sapecto de las
ventanas.

Digamos que deseo que todas las ventanas de mis aplicaciones tengan un
aspecto determinado, por ejemplo la zona no cliente que sea de color verde.
Esto en C/C++ lo lograría interceptando el mensaje de Windows WM_NCPAINT y
haciéndome cargo del repintado en lugar de la función por defecto
(DefWindowProc).

El problema es que no encuentro la forma de hacerlo en vb.net y al ser
novato no tengo entrenada la intuición a la hora de buscar en internet.
¡Alguien me puede ayudar con alguna pista sobre el camino a explorar o algún
ejemplo de aplicación capaz de cambiar su aspecto respecto del aspecto
estandar deWindows.

Gracias y un saludo.

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
26/01/2007 - 19:29 | Informe spam
Hola Roberto

Prueba a reemplazar el método WndProc de la clase Window, en el cual puedes
escribir una estructura de procesamiento de los mensajes WM_ de la ventana.

'////////////////////////////////////
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
' estructura de proceso de mensajes
Select Case (m.Msg)
Case WM_XXXXX_1
' cuando se detecte el mensaje, realizar
' nuestras operaciones personalizadas
'

Case WM_XXXXX_2
'

End Select

' llamar a la estructura de proceso de mensajes por defecto
' para que el mensaje sea tratado con el comportamiento base
MyBase.WndProc(m)
End Sub
'////////////////////////////////////

Espero que estas indicaciones te orienten aunque sea un poco para lo que
necesitas.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Roberto Val" wrote:

Hola a todos. Soy programador de C/C++ y hace poco que estoy en esto de
vb.net y me encuentro bloqueado al intentar cambiar el sapecto de las
ventanas.

Digamos que deseo que todas las ventanas de mis aplicaciones tengan un
aspecto determinado, por ejemplo la zona no cliente que sea de color verde.
Esto en C/C++ lo lograría interceptando el mensaje de Windows WM_NCPAINT y
haciéndome cargo del repintado en lugar de la función por defecto
(DefWindowProc).

El problema es que no encuentro la forma de hacerlo en vb.net y al ser
novato no tengo entrenada la intuición a la hora de buscar en internet.
¡Alguien me puede ayudar con alguna pista sobre el camino a explorar o algún
ejemplo de aplicación capaz de cambiar su aspecto respecto del aspecto
estandar deWindows.

Gracias y un saludo.



Respuesta Responder a este mensaje
#2 Luis Miguel Blanco
27/01/2007 - 07:26 | Informe spam
Hola Cid

Muchas gracias por tus ánimos, me alegra mucho el haberte resultado de ayuda
en alguna ocasión y espero poder seguir siéndolo en otras próximas 8-))))

Respecto a la cuestión que planteas sobre el cambio de color en el título de
un formulario, lamentablemente no es una cuestión sencilla como a priori
podría parecer, ya que en cuanto se encuentran involucradas las operaciones
de captura de mensajes de las ventanas, y el dibujo de sus elementos de forma
personalizada, hay una gran cantidad de trabajo en aspectos relativos al
dibujo de dichos elementos de la ventana que pasan al programador, y que
hasta ese momento nosotros feliz y despreocupadamente dejábamos al sistema
operativo encargarse de ellos ;-)

En las siguientes direcciones encontrarás un artículo de Szymon Kobalczyk en
el que trata sobre este aspecto de los formularios:

http://www.geekswithblogs.net/kobus...Forms.aspx
http://www.geekswithblogs.net/kobus...orms2.aspx

Se trata de un artículo interesante, aunque tiene el inconveniente de que el
código está escrito en C#. No obstante la conversión a VB no creo que entrañe
mucha dificultad. Espero que te sea útil para lo que necesitas.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Cid" wrote:

Hola Luis Miguel espero que te nominen MVP porque te lo estas mereciendo, tus respuestas ya me han sacado de un par de apuros.

En relacion a este post, yo busco la manera de cambiar en mi aplicacion el color de la barra de titulo, solo eso, si se puede te agradezco pongas un ejemplo sencillo, gracias. slds.


/\_
( /
(() //)
| \\ ,,;;'\
__ _( )m=(((((((((((((=--
/' ' '()/~' '.(, |
,;( )|| | ~
,;' \ /-(.;, )
) / ) /
// CID ||
)_\ )_\

Por necesidad batallo,
y una vez puesto en la silla
se va ensanchando Castilla
al paso de mi caballo"





"Luis Miguel Blanco" escribió en el mensaje news:
Hola Roberto

Prueba a reemplazar el método WndProc de la clase Window, en el cual puedes
escribir una estructura de procesamiento de los mensajes WM_ de la ventana.

'////////////////////////////////////
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
' estructura de proceso de mensajes
Select Case (m.Msg)
Case WM_XXXXX_1
' cuando se detecte el mensaje, realizar
' nuestras operaciones personalizadas
'

Case WM_XXXXX_2
'

End Select

' llamar a la estructura de proceso de mensajes por defecto
' para que el mensaje sea tratado con el comportamiento base
MyBase.WndProc(m)
End Sub
'////////////////////////////////////

Espero que estas indicaciones te orienten aunque sea un poco para lo que
necesitas.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Roberto Val" wrote:

> Hola a todos. Soy programador de C/C++ y hace poco que estoy en esto de
> vb.net y me encuentro bloqueado al intentar cambiar el sapecto de las
> ventanas.
>
> Digamos que deseo que todas las ventanas de mis aplicaciones tengan un
> aspecto determinado, por ejemplo la zona no cliente que sea de color verde.
> Esto en C/C++ lo lograría interceptando el mensaje de Windows WM_NCPAINT y
> haciéndome cargo del repintado en lugar de la función por defecto
> (DefWindowProc).
>
> El problema es que no encuentro la forma de hacerlo en vb.net y al ser
> novato no tengo entrenada la intuición a la hora de buscar en internet.
> ¡Alguien me puede ayudar con alguna pista sobre el camino a explorar o algún
> ejemplo de aplicación capaz de cambiar su aspecto respecto del aspecto
> estandar deWindows.
>
> Gracias y un saludo.
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida