文章相关视频教程下载地址点击打开链接
MFC扩展动态库的内部可以使用MFC,导出的函数或者类也可以是MFC类型的。一般使用MFC扩展动态库来包含一些MFC的增强功能,比如扩展MFC的CStatic或者CButton等控件类,使其具备更强大的功能。
1 动态库的生成
1.1 创建动态库
在VS2015中新建一个MFC的动态库项目,在“MFC DLL向导”对话框中的“DLL类型”上选择“MFC扩展DLL”,创建MFC扩展动态库程序。该动态库程序包含了入口函数dllMain()。
1.2 导入类
在该MFC的扩展动态库中,我们将定义一个CEdit类的派生类。该派生类实现了自定义文字颜色和背景的文本框。
1.2.1 生成派生类
在VS2015界面中选择菜单栏的“项目->添加类”,之后弹出的“添加类”对话框的左侧选择“Visual C++->MFC”,在右侧选择“MFC类”,点击对话框右下方的“添加”按键,如图1所示。
图1 添加MFC类
接下来在“MFC添加类向导”对话框中将类名设置为“CMyEdit”,基类设置为CEdit,如图2所示。
图2 添加CEdit类的派生类
这样,在DLL项目中就添加了CMyEdit类对应的MyEdit.h头文件和MyEdit.cpp源文件。
1.2.2 实现CMyEdit派生类
(1)条件编译
使用“VS2015动态库编程之导出C++类”的“1.3定义类的导出属性”提到的方法实现类的条件编译。
在MyEdit.h中添加如下代码
#pragma once
#ifdef DLL_MY_EDIT
#else
#define DLL_MY_EDIT _declspec(dllimport)
#endif
并且在CMyEdit的声明中添加DLL_MY_EDIT的修饰
class DLL_MY_EDIT CMyEdit :public CEdit
{
......
}
在MyEdit.cpp中添加如下代码
#define DLL_MY_EDIT _declspec(dllexport)
#include "MyEdit.h"