VC 动态链接库(DLL)编程深入浅出4.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 APIENTRY DllMain(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)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档