目录
一、创建主程序
二、添加MFC动态链接库
三、引用动态链接库
四、编译运行
一、创建主程序
这里使用VS2019进行演示。
创建MFC应用,项目名称为MainProgram
应用程序类型为“基于对话框”
完成后删除原有控件,再添加一个按钮,双击添加一个响应函数
二、添加MFC动态链接库
右击解决方案,添加,新建项目,选择MFC动态链接库
项目名称为DllDlg
点击创建后,DLL类型为“使用共享 MFC DLL的常规 DLL”,然后点击确定
给DllDlg添加对话框
右击窗体,添加类,输入类名称“DlgWithShow”,点击确定
在DlgWithShow.h中添加两个头文件
#include "framework.h"
#include "afxdialogex.h"
在DllDlg的头文件中添加头文件“DlgFun.h”
加入如下代码:
#pragma once
_declspec(dllexport) void ShowDlg();
鼠标选中方法,按Alt+Enter组合键,再回车,生成ShowDlg的定义
DlgFun.cpp代码如下
#include "pch.h"
#include "DlgFun.h"
#include "DlgWithShow.h"
void ShowDlg()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
DlgWithShow dlg;
dlg.DoModal();
}
AFX_MANAGE_STATE(AfxGetStaticModuleState());这一句很重要,作用就是在这个dll中找对应的资源,如果没加这个,就会在主程序中找这个对话框,找不到,就不会弹窗了。
三、引用动态链接库
右击主项目,属性,在C/C++ -> 常规的附加包含目录中添加..\DllDlg。用以引用DllDlg中的头文件
在MainProgramDlg.cpp的文件中引用头文件
#include "DlgFun.h"
再添加如下代码
#pragma comment(lib, "..\\Debug\\DllDlg.lib")
_declspec(dllimport) void ShowDlg(); //这一行可以不加
对_declspec(dllexport)和_declspec(dllimport)不熟悉的可以参考这个
__declspec(dllexport) 和 __declspec(dllimport)的作用
在按钮的点击响应函数中添加弹窗
void CMainProgramDlg::OnBnClickedButton1()
{
ShowDlg();
}
四、编译运行
选中解决方案,重新生成解决方案
运行后点击按钮,弹窗显示如下