- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC 动态链接库(DLL)编程深入浅出4
这是《VC++动态链接库(DLL)编程深入浅出》的第四部分,阅读本文前,请先阅读前三部分:(一)、(二)、(三)。 MFC扩展DLL的内涵为MFC的扩展,用户使用MFC扩展DLL就像使用MFC本身的DLL一样。除了可以在MFC扩展DLL的内部使用MFC以外, MFC扩展DLL与应用程序的接口部分也可以是MFC。我们一般使用MFC扩展DLL来包含一些MFC的增强功能,譬如扩展MFC的CStatic、 CButton等类使之具备更强大的能力。
?
使用Visual C++向导生产MFC扩展DLL时,MFC向导会自动增加DLL的入口函数DllMain:
extern C int APIENTRYDllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved){?// Remove this if you use lpReserved?UNREFERENCED_PARAMETER(lpReserved);?if (dwReason == DLL_PROCESS_ATTACH)?{??TRACE0(MFCEXPENDDLL.DLL Initializing!\n);??// Extension DLL one-time initialization??if (!AfxInitExtensionModule(MfcexpenddllDLL, hInstance))???return 0;??// Insert this DLL into the resource chain??// NOTE: If this Extension DLL is being implicitly linked to by??//? an MFC Regular DLL (such as an ActiveX Control)??//? instead of an MFC application, then you will want to??//? remove this line from DllMain and put it in a separate??//? function exported from this Extension DLL.? The Regular DLL??//? that uses this Extension DLL should then explicitly call that??//? function to initialize this Extension DLL.? Otherwise,??//? the CDynLinkLibrary object will not be attached to the??//? Regular DLLs resource chain, and serious problems will??//? result.??new CDynLinkLibrary(MfcexpenddllDLL);?}?else if (dwReason == DLL_PROCESS_DETACH)?{??TRACE0(MFCEXPENDDLL.DLL Terminating!\n);??// Terminate the library before destructors are called??AfxTermExtensionModule(MfcexpenddllDLL);?}?return 1;?? // ok}
上述代码完成MFC扩展DLL的初始化和终止处理。
由于MFC扩展DLL导出函数和变量的方式与其它DLL没有什么区别,我们不再细致讲解。下面直接给出一个MFC扩展DLL的创建及在应用程序中调用它的例子。
6.1 MFC扩展DLL的创建
下面我们将在MFC扩展DLL中 导出一个按钮类CSXButton(扩展自MFC的CButton类),类CSXButton是一个用以取代 CButton的类,它使你能在同一个按钮上显示位图和文字,而MFC的按钮仅可显示二者之一。类CSXbutton的源代码在Internet上广泛流 传,有很好的“群众基础”,因此用这个类来讲解MFC扩展DLL有其特殊的功效。
MFC中包含一些宏,这些宏在DLL和调用DLL的应用程序中被以不同的方式展开,这使得在DLL和应用程序中,使用统一的一个宏就可以表示出输出和输入的不同意思:
// for data#ifndef AFX_DATA_EXPORT?#define AFX_DATA_EXPORT __declspec(dllexport)#endif#ifndef
文档评论(0)