Ejemplos usando el Api de windows para Visual basic
Volver al Listado Api - Anterior - Siguiente
Contenido
Ejemplo que crea un procedimiento que captura los mensajes de windows, en este caso para poder saber cuando una ventana se está moviendo, o se cambia de posición
En código, se instala un Hook que espera el mensaje llamado WM_WINDOWPOSCHANGING. Este mensaje llega o se produce cuando una ventana ha cambiado de posición.
El ejemplo que armé, consiste en 2 formularios, el que instala el Hook es el Form1, pasandole en el parámetro al procedimiento que crea el Hook, el Hwnd de otro Form, en este caso Form2:
ret_Hook = SetWindowLong(Form2.hwnd,
GWL_WNDPROC, AddressOf Hook)
El Procedimiento que intercepta los mensajes debe estar en un módulo bas. Dentro del Módulo se coloca, donde está la clausula If que comprueba si se ha movido el Form2, lo siguiente:
If msg = WM_WINDOWPOSCHANGING Then Form1.Caption = "Posición X e Y del Form2 2: " & lParam.x & " -- " & lParam.y End If
Es decir imprime en el caption del Form1, la nueva posición x y la posición Y del Form2.
Nota: También podríamos interceptar el cambio de posición de cualquier ventana de windows, solo hay que pasar el Hwnd de la ventana en cuestión
Esta es una imagen de ejemplo:
Importante: Hay que estar seguros de que no se produzca ningún error en el programa, mientras se está ejecutando el HooK, ya que si no se cerrará el IDE de visual basic.
Agregar un Form1, un Form2 y un Módulo bas
Código fuente del Módulo bas
Código fuente en el Form1:
Este otro ejemplo, lo que hace es , al querer mover la ventana de lugar ( cuando se dispara el mensaje WM_WINDOWPOSCHANGING ), impide el cambio, en realidad lo que hace es establecer nuevamente el Left y Top actual del Formulario a la variable lParam.
Ejemplo
Código fuente en el formulario
Código fuente en un módulo bas
Este otro ejemplo , muestra una forma de poder limitar el movimiento del formulario en el área de trabajo del escritorio, es decir cuando se intenta mover mas allá del costado izquierdo, derecho , arriba o abajo.
El código es prácticamente igual a los anteriores, es decir se utiliza el mensaje de windows WM_WINDOWPOSCHANGING para saber cuando se está moviendo la ventana. Si se está moviendo, entonces se averigua el rectángulo del área del escritorio con la Api systemParametrsInfo con el mensaje SPI_GETWORKAREA para devolver una variable de tipo Rect con los datos , y luego poder cambiar la posición x e y del form mediante la variable lParam. También se usa la función GetWindowRect para saber las dimensiones del formulario ( ancho y alto )
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar