Red de conocimiento informático - Material del sitio web - Cómo crear una DLL con interfaz MFC

Cómo crear una DLL con interfaz MFC

Método/Pasos

1

Cree un nuevo proyecto DLL de MFC con el nombre de proyecto "MyDLL" y cree una nueva solución con el nombre de solución "MFCDLL". .

2

Ingrese al asistente de DLL de MFC, seleccione Siguiente y seleccione "Usar la DLL de regla que comparte la DLL de MFC". Haga clic en el botón "Listo".

3

El proyecto DLL de MFC se creó correctamente. Selección de biblioteca en tiempo de ejecución: propiedades --gt; c/c --gt; generación de código --gt; biblioteca en tiempo de ejecución "DLL de depuración multiproceso (/MDd)".

4

Haga clic derecho en el proyecto y agregue la clase MFC. Ingrese el nombre de la clase: IHpDllWin, seleccione la clase base: CDialog y haga clic en Finalizar.

5

La biblioteca dinámica definirá una función de exportación que devuelve un puntero a la clase base de la interfaz exportada. Escriba la interfaz de exportación en IHpDllWin.cpp:

// Defina la interfaz de exportación

extern "C" __declspec(dllexport) IHpDllWin* ShowDialog()

{

// Recuerde, debe agregar la siguiente línea de código aquí; de lo contrario, no se mostrará el cuadro de diálogo.

AFX_MANAGE_STATE(AfxGetStaticModuleState());

IHpDllWin *ph = nuevo IHpDllWin

ph-gt; >

ph-gt;ShowWindow(SW_SHOW);

return ph;

}

6

Generar MyDLL.dll . Se crea el programa MFC DLL.

7

Cree una nueva aplicación MFC denominada MyMFC y el nombre de la solución MFCEXE.

8

Ingrese al Asistente de aplicaciones MFC, haga clic en Siguiente, seleccione "Basado en diálogo" como tipo de aplicación, luego siga haciendo clic en Siguiente y finalmente haga clic en Finalizar.

9

Arrastre el botón al cuadro de diálogo y haga doble clic en el botón para ingresar a la edición de código.

10

Utilice un método dinámico para llamar a la biblioteca dinámica. Los pasos de llamada son los siguientes:

1. p> HINSTANCE m_hDll = LoadLibrary ("MyDLL.dll");

if (NULL == m_hDll)

{

MessageBox("Cargando MyDLL.dll falló");

p>

}

2. Obtenga el puntero de función exportado

typedef IHpDllWin* (*hpDllFun)();

hpDllFun pShowDlg = (hpDllFun)GetProcAddress (m_hDll, "ShowDialog");

if (NULL==pShowDlg)

{

MessageBox("Error para encontrar la función en DLL");

p>

return;

}

3. Obtenga el puntero del objeto de clase exportado

IHpDllWin* m_hpwin = pShowDlg();

Obtenga el puntero de clase de la ventana de exportación y obtenga el control de la ventana de exportación.

11

Copie MyDLL.dll al directorio de depuración del proyecto de destino y copie IHpDllWin.h al directorio del proyecto de destino.

12

Agregar IHpDllWin.h, hacer clic derecho, agregar elemento existente, seleccionar IHpDllWin.h, agregar.

13

Agregue #include "IHpDllWin.h" al encabezado de MyMFCDlg.cpp y luego compile y genere el archivo exe. La interfaz principal está completa.

14

Ejecutar. Presione "Ctrl F5" para ejecutar y los resultados de la ejecución se muestran en la figura.