Ejemplos usando el Api de windows para Visual basic
<Volver> - Anterior - Siguiente
Contenido:
El siguiente ejemplo muestra como usar las funciones del Api SetWindowsHookEx ( Instala el hook) UnhookWindowsHookEx ( remueve el Hook) y el Api SetDlgItemText que es el que cambia el texto del botón de la caja de mensajes.
El funcionamiento es mas o menos el siguiente :
Antes de llamar al MsgBox clásico, hay que instalar el Hook. Lo que hace el hook es interceptar el momento en que se activa el MsgBox para poder cambiarle el texto. El texto del botón como se mencionó , se cambia con el Api SetDlgItemText.
Esta última función tiene tres parámetros. Los que interesan son los últimos dos (nIDDlgItem as Long y lpString As String)
En el primer parámetro ( nIDDlgItem ) , debemos indicar el botón que se va a cambiar. Acá podemos pasar los valores de constantes de vb para indicar los botones (vbAbort, vbCancel, vbIgnore, vbNo , vbOK , vbRetry y vbYes)
El otro parámetro ( lpString ) es un String con el texto para el botón.
En base a esto, hice la siguiente función de ajuste llamada MsgBoxExText.
Esa función es exactamente igual a un MsgBox común y corriente, la único diferencia es que tiene dos parámetros mas al final de todo. Uno que indica el botón que se cambiará ( El_Boton As Ebuttons ) y el otro el texto: ( TextButton As String )
Function MsgBoxExText(Prompt As String, _ Buttons As VbMsgBoxStyle, _ Title As String, _ El_Boton As Ebuttons, _ TextButton As String) As VbMsgBoxResult
Notar que la función devuelve un tipo de dato vbMsgBoxResult, exactamente igual que un MsgBox de vb
A continuación se lista el código para agregar en un módulo bas ( Importante: debe estar en un módulo bas si o si ya que los Hook NO se pueden implementar en un formulario o módulo de clase, al menos no de esta forma.)
Código en el módulo BAS
Lo siguiente llama a un MsgBox con el botón VbYesNo, y le cambia el texto al botón " Si " por el texto " Continuar "
ret = MsgBoxExText(" Ejemplo ", vbYesNo + vbExclamation, _ "Titulo", YES, " .. Continuar ")
Lo siguiente llama a un MsgBox con el botón VbYesNo, y le cambia el texto al botón " NO " por el texto " No Continuar "
Dim ret As VbMsgBoxResult ret = MsgBoxExText(" Desea continuar ? ", vbYesNo + vbQuestion, _ "Titulo", NO, " No Continuar ") If ret = vbYes Then ' .... Else ' ..... End If
Esto otro despliega un MsgBox con los botones Si , No y Cancelar ( vbYesNoCancel ), y le cambia el texto al botón Cancelar por el texto " Salir "
Dim ret As VbMsgBoxResult ret = MsgBoxExText(" Continuar ? ", vbYesNoCancel + vbQuestion, _ "Titulo", Cancel, " Salir ")
Importante: Cualquier error que se produzca mientras se ejecuta el Hook, se cerrará el Ide de visual basic por completo y por lo tanto si no hubiésemos guardado los cambios ..perderemos todo lo realizado.
Buscar en Recursos vb
Recursos visual basic - Buscar - Privacidad - Copyright © 2005 - 2009 - www.recursosvisualbasic.com.ar