- 0
- 0
- 约9.55千字
- 约 10页
- 2017-06-11 发布于北京
- 举报
VC++动态链接库编程之MFC扩展 DLL
资料引用:/395359.html
DLL类型入口函数 非 MFC DLL 编程者提供DllMain函数 MFC规则 DLL CWinApp对象的InitInstance 和 ExitInstance MFC扩展 DLL MFC DLL向导生成DllMain 函数
对于MFC扩展DLL,系统会自动在工程中添加如下表所示的宏,这些宏为DLL和应用程序的编写提供了方便。像AFX_EXT_CLASS、AFX_EXT_API、AFX_EXT_DATA这样的宏,在DLL和应用程序中将具有不同的定义,这取决于_AFXEXT宏是否被定义。这使得在DLL和应用程序中,使用统一的一个宏就可以表示出输出和输入的不同意思。在DLL中,表示输出(因为_AFXEXT被定义,通常是在编译器的标识参数中指定/D_AFXEXT);在应用程序中,则表示输入(_AFXEXT没有定义)。
宏定义 AFX_CLASS_IMPORT __declspec(dlleXPort) AFX_API_IMPORT __declspec(dllexport) AFX_DATA_IMPORT __declspec(dllexport) AFX_CLASS_EXPORT __declspec(dllexport) AFX_API_EXPORT __declspec(dllexport) AFX_DATA_EXPORT __declspec(dllexport) AFX_EXT_CLASS #ifdef _AFXEXT
AFX_CLASS_EXPORT
#else
AFX_CLASS_IMPORT AFX_EXT_API #ifdef _AFXEXT
AFX_API_EXPORT
#else
AFX_API_IMPORT AFX_EXT_DATA #ifdef _AFXEXT
AFX_DATA_EXPORT
#else
AFX_DATA_IMPORT
6.2 MFC扩展DLL导出MFC派生类
在这个例子中,我们将产生一个名为“ExtDll”的MFC扩展DLL工程,在这个DLL中导出一个对话框类,这个对话框类派生自MFC类CDialog。
使用MFC向导生成MFC扩展DLL时,系统会自动添加如下代码:
static AFX_EXTENSION_MODULE ExtDllDLL = { NULL, NULL };
extern C int APIENTRY
DllMain( HINSTANCE hInstance, DWord dwReason, LPVOID lPReserved )
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER( lpReserved );
//说明:lpReserved是一个被系统所保留的参数,对于隐式链接是一个非零值,对于显式链接值是零
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0( EXTDLL.DLL Initializing!\n );
// Extension DLL one-time initialization
if ( !AfxInitExtensionModule( ExtDllDLL, hInstance ))
return 0;
// Insert this DLL into the resource chain
new CDynLinkLibrary( ExtDllDLL );
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0( EXTDLL.DLL Terminating!\n );
// Terminate the library before destrUCtors are called
AfxTermExtensionModule( ExtDllDLL );
}
return 1; // ok
}
这一段代码含义晦涩,我们需要对其进行解读:
(1)上述代码完成MFC扩展DLL的初始化和终止处理;
(2)初始化期间所创建的 CDynLinkLibrary 对象使MFC扩展 DLL 可以将 DLL中的CRuntimeClass 对象或资源导出到应用程序;
(3)AfxInitExtensionModule函数捕捉模块的CRuntimeClass 结构和在创建 CDynLinkLibrary 对象时使用的对象工厂(COleObjectFactory 对象);
(4)AfxTermExtensionModule函数使 M
您可能关注的文档
最近下载
- 内科住培基地工作汇报.pptx VIP
- 3.2.2 光合作用 课件生物学七年级下册(共30张PPT).pptx VIP
- 年产8000吨塑料颗粒项目环评环境影响报告表(新版环评).pdf VIP
- 山西省太原市2025-2026学年上学期期末八年级物理试卷及答案(含答案).pdf VIP
- 人教版高中物理选择性必修第三册期末复习全册知识点考点提纲.docx
- 2025年山东化工职业学院单招语文考试题库及答案解析.docx VIP
- 国外油藏描述及方案编制的启示.pptx VIP
- 精神科暴力行为防范与处理.pptx
- 2025年山东化工职业学院单招数学考试模拟试题及答案解析.docx VIP
- 2025-2026学年新教材高中生物期末综合检测卷新人教版必修1 .pdf VIP
原创力文档

文档评论(0)