Bueno no espero que esto sea una enciclopedia api, pero espero que esto pueda ser el
primer paso para empezar a usar apis en VB de muchos y dejar de lado el tedioso trabajo
de llevar archivos .OCX a cada lugar donde llevamos nuestra aplicación. Además en mi
caso el haber usado mucho las apis desde VB6 me facilito muchísimo pasar a
MASM32 desde el tasm para ms-dos.... bla bla bla ya parezco una vieja...
como dijeron The Ramones jei jou! letsgou!
***********************************************************************************************
PRIMER EJEMPLO: Un ejemplo sencillo
***********************************************************************************************
ACLARACION!!!: todo los ejemplos están hechos en VB6
1) creamos un nuevo proyecto con un formulario Form1 y copiamos el siguiente código
'<el codigo empieza justo despues de esta etiqueta>
Option Explicit
Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal wType As Long) As Long
Private Sub Form_Load()
MessageBox Me.hwnd, "PRIMER EJEMPLO DE APIS HECHO POR ACHERNAR", "Ejemplo API", 0
End Sub
'<el codigo termino justo antes de esta etiqueta>
2) listo... le damos F5 para ejecutarlo y voila... un msgbox con un texto hermoooossssso
¿no? a mi me parece muy lindo y esta hecho con una sencilla api... que no te gusta, hey
no me presiones que estoy ebrio y puedo llegar a decir cosas como que detrás de la simpleza
de una margarita se haya todo el poder de la naturaleza, pero no te lo voy a decir
Bueno dejo mi vaso y vamos a analizar un poco esto
Primero tenemos lo de "Private Declare Function MessageBox..." acá estamos avisando que
función vamos a usar y en que librería esta (user32 --> user32.dll dentro de System32),
si usamos Alias quiere decir que dentro de la dll la función se llama MessageBoxA, pero
nosotros la vamos a llamar MessageBox para que VB sepa que estamos diciendo cuando llamemos
a una función MessageBox.
Este alias por ejemplo se usa en la función Winsock select para verificar el estado de
un socket si esta en alguna combinacion de lectura/escritura/error. Como No se puede
usar una función select en vb (porque es una palabra reservada "Select Case") se la
puede llamar vbSelect
Volviendo a MessageBox vemos que a la derecha esta los parametros hwnd, lpText,
lpCaption y WType
hwnd: este es el MANEJADOR (o handle) de la ventana padre (la que crea la ventanita msgbox hija).
en este ejemplo la ventana padre seria el form1. En windows las ventanas son creadas en
algún momento (no existe una ventana dios que existe y existirá por siempre... a menos
que Bill nos haya ocultado algo), bueno y cuando se crea una ventana, esta tiene un
numero que la identifica como cuando creamos un archivo algo así:
Open "archivo.txt" for Random as #1 Len = Len(Registro)
Put #1,,Registro
close #1
puede verse que para grabar un registro en el archivo o cerrarlo no usa "archivo.txt"
para referirse al archivo, sino el numero #1 que es el MANEJADOR del archivo
Volviendo al ejemplo del msgbox... este argumento hwnd puede ser nulo indicando que el
msgbox no tiene ventana padre (no genera ningún problema).
lpText: este argumento es el mensaje propiamente dicho, en vb se pasa una cadena, pero vale
aclarar este detalle: si ven el nombre de la variable comienza con lp eso se usa en
otros lenguajes (como masm32) para destacar que dicha variable es un puntero y en dichos
lenguajes no se pasa una cadena, sino la dirección de memoria donde esta guardada la
cadena, en este caso, en VB ,se facilita bastante, pero muchas veces hay problemas con las
apis porque VB no permite manipular tan bien la memoria como C++ o MASM32 entonces hay
que recurrir a ciertos artilugios.
lpCaption: similar al anterior fíjense que también empieza con lp, es un puntero, pero nosotros
solo pasamos una cadena y listo... casi me olvido, este es el titulo de la ventana
wType: esto indica el tipo de ventana msgbox... o sea.. con solo un botón OK o Yes/NO
o Yes/No/Cancel etc el valor cero = solo OK, podemos experimentar agregando las
siguientes constantes a nuestro proyecto anterior y sustituyéndolas por el ultimo termino
Private Const MB_OK = 0
Private Const MB_OKCANCEL = 1
Private Const MB_ABORTRETRYIGNORE = 2
Private Const MB_YESNOCANCEL = 3
Private Const MB_YESNO = 4
Private Const MB_RETRYCANCEL = 5
luego la llamada a la función podría quedar algo así
MessageBox Me.hwnd, "Este Es El Primer Ejemplo", "Ejemplo API", MB_ABORTRETRYIGNORE