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()
{ p>
// 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.