22.3 MFC常规DLL的创建与使用实例
22.2节中介绍了非MFC DLL的创建和使用实例,与之不同的是,本节介绍内部使用MFC,但是提供的访问接口不支持DLL而是标准的C接口的常规DLL。除了介绍基本概念和创建方法外,本节还介绍MFC常规DLL的创建实例和调用方法。
22.3.1 基本概念
MFC常规DLL,从字面上理解有两点。一是MFC的,这是指DLL内部使用MFC进行编程(www.cppentry.com)。二是指其是常规的,这是指此种DLL提供的接口是常规的而不是DLL的。从这种类型的DLL中导出的函数可以被MFC也可以被非MFC应用程序调用,从其中导出的函数使用标准的C接口。
MFC常规DLL具有一个对应的CwinApp对象,并且初始化和析构任务与MFC应用程序的处理位置是相同的,分别在DLL的CwinApp派生类的InitInstance()成员函数和ExitInstance()成员函数中处理。因为MFC提供了DllMain()函数,因此,不需要手动编写此函数。DllMain()函数在DLL装载时,调用InitInstance()函数,在DLL卸载时,调用ExitInstance()函数。MFC常规DLL分为两种,分类标准是链接MFC DLL的方式。
静态链接MFC的规则DLL,在内部使用MFC,使用MFC的静态链接库生成DLL。
动态链接MFC的规则DLL,在内部使用MFC并动态链接到MFC。使用此方式的规则DLL,则必须在 DLL的所有导出的函数的开头使用AFX_MANAGE_STATE宏,设置当前模块状态为DLL中的一个。