tag: wndproc

WPF - Recibir notificaciones cuando hay cambios de sesión

Afortunadamente es muy fácil de hacer si hacemo uso de esta libreria: Win32 Session Changes Notifier Que he creado yo mismo y esta disponible en Github. Lecturas recomendadas C# – Win32SessionChangesNotifier libreria para recibir notificaciones de cambios de sesión Qué es el bucle de mensajes, message loop o WndProc ? Forms - Recibir notificaciones cuando hay cambios de sesión Cómo obtener un manejador (handle) para una ventana de WPF Como usar el WndProc en una Ventana WPF Para Windows forms esta tarea es bastante sencilla e intuitiva, pero este no es el caso de WPF dadas las propias características de esta tecnología.…

leer más...

Forms - Recibir notificaciones cuando hay cambios de sesión

Afortunadamente es muy fácil de hacer si hacemo uso de esta libreria: Win32 Session Changes Notifier Que he creado yo mismo y esta disponible en Github. Lecturas recomendadas C# – Win32SessionChangesNotifier libreria para recibir notificaciones de cambios de sesión Qué es el bucle de mensajes, message loop o WndProc ? WPF - Recibir notificaciones cuando hay cambios de sesión Divide y vencerás!, mi principio favorito. Seguiremos estos tres pasos: Registrar la ventana para recibir notificaciones Modificar el comportamiento del WndProc Des registrar la ventana para dejar de recibir notificaciones He creado una aplicacion Windows Forms en blanco, tan solo con un ListBox…

leer más...

Como usar el WndProc en una Ventana WPF

WPF es una parte del .Net Framework muy robusta, pero a veces necesitamos que nuestra aplicación interactue con aspectos más relacionados con el sistema de ventanas del OS. En estos casos requerimos interceptar mensajes en el WndProc. Lecturas recomendadas Si de plano no sabes que es el WndProc no te pierdas este otro artículo que te pondrá en contexto: Qué es el bucle de mensajes, message loop o WndProc ? Más abajo verás que necesitamos obtener un handler a la ventana WPF, para ello revisa: C# – Como obtener un manejador (handle) para una ventana de WPF Para lograr acceder al WndProc…

leer más...

Qué es el bucle de mensajes, message loop o WndProc ?

Las ventanas – y los demás controles – funcionan gracias a un bucle de mensajes, todo lo que manejamos nosotros como eventos : click del mouse, mover, cerrar, cambiar tamaño, maximizar etc, realmente es controlado por un bucle en donde se envían diferentes mensajes a la ventana, esta a su vez tiene un procedimiento que recibe estos mensajes y con base a los mensajes recibidos puede hacer una u otra cosa según se programe. Los mensajes no son sino números, cada número representa un mensaje diferente, en la API de Windows solemos encontrarnos cosas cómo: #define WM_INITDIALOG 0x0110 #define WM_COMMAND 0x0111…

leer más...

C# - Forms - El extraño caso de la ventana sin borde que no se deja maximizar ni minimizar

En algunas aplicaciones llega a ser necesario tener una ventana sin borde en algún momento, una ventana sin borde se logra estableciendo la propiedad FormBorderStyle = None en el diseñador de Windows Forms o a través de código: this.FormBorderStyle = FormBorderStyle.None; Hasta ahí todo esta bien y no hay ningún problema al respecto, hasta que nos damos cuenta que una ventana sin borde no se deja maximizar ni minimizar ni siquiera por programación. De esto tratare en este artículo, el porqué de esta situación y como solucionarlo. Cómo sabe una ventana que se debe maximizar o minimizar? El bucle de…

leer más...

C# - Cómo modificar el comportamiento del botón minimizar, maximizar, etc.

Para cambiar el comportamiento del botón minimizar se debe recurrir a un mecanismo pocas veces utilizado por los desarrolladores de código administrado, hay que acceder al bucle de mensajes del sistemas de ventana de ventanas, más conocido como WndProc. En Windows Forms esta es una tarea relativamente sencilla, la cual veremos unas líneas más adelante. Cómo sabe una ventana que se debe maximizar o minimizar? El bucle de mensajes Las ventanas – y los demás controles – funcionan gracias a un bucle de mensajes, todo lo que manejamos nosotros como eventos : click del mouse, mover, cerrar, cambiar tamaño, maximizar etc, realmente es…

leer más...