COMO HACER UNA DLL CON FUNCIONES MIEMBRO DE LA MFC Y LLAMARLAS DESDE VISUAL BASIC.


Hasta ahora hemos creado nosotros las funciones que hemos llamado desde visual basic, pero lo grande de todo este asunto creo que es poder acceder a la MFC desde Visual Basic
La MFC o MICROSOFT FOUNDATION CLASS Contiene muchas de las Apis de Window agrupadas en clases. Es una Superclase con funciones y variables que heredarán todos sus elementos
¿Cómo accedemos desde Visual Basic?
Es muy sencillo
Hacemos el mismo proceso que en la dll normal
En el .h ponemos
#ifndef __MyDLL_H
#define __MyDLL_H
#define dllexport __declspec(dllexport)
dllexport int duerme(long wait);
dllexport int pita(void);
#endif
donde duerme y pita son dos funciones a través de las cuales accedemos a funciones miembro de la MFC , que en este caso son Sleep( ) y MessageBeep( ).
y en el cpp
Tenemos que poner la directiva en donde está incluida está función(#include "windows.h")
#include "windows.h"
#include "MyDLL.h"
int duerme(long wait)
{
Sleep(wait);
return 1;
}
int pita(void)
{
MessageBeep((WORD)-1);
return 1;
}
Compilamos la dll
Accedemos desde visual basic
Agregamos un proyecto que constará de un form y un módulo
Declaramos la función a la que vamos a llamar en el modulo
Vamos a llamar a la función pita cuyo ordinal es el 2
Public Declare Function pita Lib "C:\..\MyDLL.dll" Alias "#2" ( ) As Long
Fijaros que no le pasamos ningún parámetro a la función porque void (que no devuelve nada) no tiene equivalente en visual basic
Agregamos un botón en el form y en el evento clic escribimos
Private Sub Command1_Click()
Dim pepe As Long
Dim i As Integer
For i = 0 To 200
pepe = pita()
Next i
End Sub
Y ya estamos utilizando una función miembro de la MFC. A partir de aquí cada cual que entre coja , utilice cualquier función de la MFC, es siempre el mismo proceso.

Fijaros que esto lo podeis hacer con la función Beep de Visual Basic, pero estoy seguro que habrá cosas que será más interesante hacerlo desde aqui o simplemente que hacerlo desde Visual Basic no se puede.
Espero que os sirva de ayuda


Joaquin Roca Verges
[email protected]