Desactivar los repintados de un formulario

En ocasiones es conveniente que durante un cierto tiempo una ventana determinada no produzca repintados, ya que la información que se quiere mostrar es amplia y no interesa que el usuario vaya viendo cómo se va generando. La función LockWindowUpdate permite inhibir los repintados hasta que se vuelva a llamar de nuevo a esta función con el parámetro NULL.

Al llamar a la función LockWindowUpdate, la ventana no procesa los repintados no pudiendo tampoco el usuario moverla de posición.

Para probar el siguiente ejemplo, debes crear en un formulario 2 botones “Btn_DesActivar” y “Btn_Activar” y 2 etiquetas “Label1” y “Label2”.

Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long

Private Sub Btn_DesActivar_Click()
     ' Mostramos un texto antes para comprobar que se actualiza
     Label1.Caption = "Rellenando texto sin mostrar"
     ' Refrescamos el control para forzar su repintado antes del bloqueo
     ' sino puedo coincidir con el bloqueo y no pintar el control
     Label1.Refresh
    
     ' Bloqueamos el formulario y pintamos de nuevo
     LockWindowUpdate Me.hWnd
     Label2.Caption = "Rellenando texto sin mostrar"
End Sub

Private Sub Btn_Activar_Click()
     ' Desbloqueamos el formulario para que repinte
     LockWindowUpdate 0&
End Sub
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s