动态链接库dll编程深入浅出

动态链接库dll编程深入浅出

ID:29717650

大小:100.01 KB

页数:10页

时间:2018-12-22

动态链接库dll编程深入浅出_第1页
动态链接库dll编程深入浅出_第2页
动态链接库dll编程深入浅出_第3页
动态链接库dll编程深入浅出_第4页
动态链接库dll编程深入浅出_第5页
资源描述:

《动态链接库dll编程深入浅出》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、这是《VC++动态链接库(DLL)编程深入浅出》的第四部分,阅读本文前,请先阅读前三部分:(一)、(二)、(三)。MFC扩展DLL的内涵为MFC的扩展,用户使用MFC扩展DLL就像使用MFC本身的DLL一样。除了可以在MFC扩展DLL的内部使用MFC以外,MFC扩展DLL与应用程序的接口部分也可以是MFC。我们一般使用MFC扩展DLL来包含一些MFC的增强功能,譬如扩展MFC的CStatic、CButton等类使之具备更强大的能力。  使用VisualC++向导生产MFC扩展DLL时,MFC向导会自动增加DLL的入口函数DllMain:extern"C"intAPIE

2、NTRYDllMain(HINSTANCEhInstance,DWORDdwReason,LPVOIDlpReserved){ //RemovethisifyouuselpReserved UNREFERENCED_PARAMETER(lpReserved); if(dwReason==DLL_PROCESS_ATTACH) {  TRACE0("MFCEXPENDDLL.DLLInitializing!");  //ExtensionDLLone-timeinitialization  if(!AfxInitExtensionModule(Mfcexpenddl

3、lDLL,hInstance))   return0;  //InsertthisDLLintotheresourcechain  //NOTE:IfthisExtensionDLLisbeingimplicitlylinkedtoby  // anMFCRegularDLL(suchasanActiveXControl)  // insteadofanMFCapplication,thenyouwillwantto  // removethislinefromDllMainandputitinaseparate  // functionexportedfromthi

4、sExtensionDLL. TheRegularDLL  // thatusesthisExtensionDLLshouldthenexplicitlycallthat  // functiontoinitializethisExtensionDLL. Otherwise,  // theCDynLinkLibraryobjectwillnotbeattachedtothe  // RegularDLL'sresourcechain,andseriousproblemswill  // result.  newCDynLinkLibrary(Mfcexpenddll

5、DLL); } elseif(dwReason==DLL_PROCESS_DETACH) {  TRACE0("MFCEXPENDDLL.DLLTerminating!");  //Terminatethelibrarybeforedestructorsarecalled  AfxTermExtensionModule(MfcexpenddllDLL); } return1;  //ok}  上述代码完成MFC扩展DLL的初始化和终止处理。  由于MFC扩展DLL导出函数和变量的方式与其它DLL没有什么区别,我们不再细致讲解。下面直接给出一个MFC扩展DLL的创建

6、及在应用程序中调用它的例子。6.1MFC扩展DLL的创建  下面我们将在MFC扩展DLL中导出一个按钮类CSXButton(扩展自MFC的CButton类),类CSXButton是一个用以取代CButton的类,它使你能在同一个按钮上显示位图和文字,而MFC的按钮仅可显示二者之一。类CSXbutton的源代码在Internet上广泛流传,有很好的“群众基础”,因此用这个类来讲解MFC扩展DLL有其特殊的功效。  MFC中包含一些宏,这些宏在DLL和调用DLL的应用程序中被以不同的方式展开,这使得在DLL和应用程序中,使用统一的一个宏就可以表示出输出和输入的不同意思:/

7、/fordata#ifndefAFX_DATA_EXPORT #defineAFX_DATA_EXPORT__declspec(dllexport)#endif#ifndefAFX_DATA_IMPORT #defineAFX_DATA_IMPORT__declspec(dllimport)#endif//forclasses#ifndefAFX_CLASS_EXPORT #defineAFX_CLASS_EXPORT__declspec(dllexport)#endif#ifndefAFX_CLASS_IMPORT #defineAFX_CLASS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。