如何制作带MFC界面的DLL
1个回答
展开全部
方法/步骤
1
新建MFC DLL项目,项目名称“MyDLL”,创建新解决方案,解决方案名称为“MFCDLL”。
2
进入MFC DLL向导,选择下一步,选择“使用共享MFC DLL的规则DLL”。点击“完成”按钮。
3
创建MFC DLL项目成功。运行时库选择:属性-->c/c++-->代码生成-->运行库 “多线程调试 DLL (/MDd)”。
4
点击项目右键,添加MFC类。输入类名:IHpDllWin,选择基类:CDialog,点击完成。
5
动态库将定义一个导出函数,该函数返回导出界面基类的指针。在IHpDllWin.cpp写导出接口:
// 定义导出接口
extern "C" __declspec(dllexport) IHpDllWin* ShowDialog()
{
// 切记,此处需要加下面这行代码,不然对话框显示不出来。
AFX_MANAGE_STATE(AfxGetStaticModuleState());
IHpDllWin *ph = new IHpDllWin;
ph->Create(IHpDllWin::IDD);
ph->ShowWindow(SW_SHOW);
return ph;
}
6
生成MyDLL.dll。MFC DLL程序创建完成。
7
新建MFC应用程序,名称为MyMFC,解决方案名称为MFCEXE。
8
进入MFC应用程序向导,点击下一步,应用程序类型选择“基于对话框”,然后一直点击下一步,最后点击完成。
9
在对话框中拖入按钮,双击该按钮,进入代码编辑。
10
采用动态方式调用该动态库,调用步骤如下:
1.加载动态库
HINSTANCE m_hDll = LoadLibrary("MyDLL.dll");
if (NULL == m_hDll)
{
MessageBox("加载 MyDLL.dll 失败");
}
2.获取导出函数指针
typedef IHpDllWin* (*hpDllFun)();
hpDllFun pShowDlg = (hpDllFun)GetProcAddress(m_hDll,"ShowDialog");
if (NULL==pShowDlg)
{
MessageBox("DLL中函数寻找失败");
return;
}
3.获取导出类对象指针
IHpDllWin* m_hpwin = pShowDlg();
获取导出窗口类指针,获取了对该导出窗口的控制。
11
把MyDLL.dll拷到目标工程的Debug目录下,复制IHpDllWin.h到目标工程的目录下。
12
添加IHpDllWin.h,右键,添加现有项,选择IHpDllWin.h,添加。
13
在MyMFCDlg.cpp头部加入#include "IHpDllWin.h",然后编译生成exe。主界面完成。
14
运行。按“Ctrl+F5”运行,运行结果如图。
1
新建MFC DLL项目,项目名称“MyDLL”,创建新解决方案,解决方案名称为“MFCDLL”。
2
进入MFC DLL向导,选择下一步,选择“使用共享MFC DLL的规则DLL”。点击“完成”按钮。
3
创建MFC DLL项目成功。运行时库选择:属性-->c/c++-->代码生成-->运行库 “多线程调试 DLL (/MDd)”。
4
点击项目右键,添加MFC类。输入类名:IHpDllWin,选择基类:CDialog,点击完成。
5
动态库将定义一个导出函数,该函数返回导出界面基类的指针。在IHpDllWin.cpp写导出接口:
// 定义导出接口
extern "C" __declspec(dllexport) IHpDllWin* ShowDialog()
{
// 切记,此处需要加下面这行代码,不然对话框显示不出来。
AFX_MANAGE_STATE(AfxGetStaticModuleState());
IHpDllWin *ph = new IHpDllWin;
ph->Create(IHpDllWin::IDD);
ph->ShowWindow(SW_SHOW);
return ph;
}
6
生成MyDLL.dll。MFC DLL程序创建完成。
7
新建MFC应用程序,名称为MyMFC,解决方案名称为MFCEXE。
8
进入MFC应用程序向导,点击下一步,应用程序类型选择“基于对话框”,然后一直点击下一步,最后点击完成。
9
在对话框中拖入按钮,双击该按钮,进入代码编辑。
10
采用动态方式调用该动态库,调用步骤如下:
1.加载动态库
HINSTANCE m_hDll = LoadLibrary("MyDLL.dll");
if (NULL == m_hDll)
{
MessageBox("加载 MyDLL.dll 失败");
}
2.获取导出函数指针
typedef IHpDllWin* (*hpDllFun)();
hpDllFun pShowDlg = (hpDllFun)GetProcAddress(m_hDll,"ShowDialog");
if (NULL==pShowDlg)
{
MessageBox("DLL中函数寻找失败");
return;
}
3.获取导出类对象指针
IHpDllWin* m_hpwin = pShowDlg();
获取导出窗口类指针,获取了对该导出窗口的控制。
11
把MyDLL.dll拷到目标工程的Debug目录下,复制IHpDllWin.h到目标工程的目录下。
12
添加IHpDllWin.h,右键,添加现有项,选择IHpDllWin.h,添加。
13
在MyMFCDlg.cpp头部加入#include "IHpDllWin.h",然后编译生成exe。主界面完成。
14
运行。按“Ctrl+F5”运行,运行结果如图。
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询