总结动态链接库(DLL)编程深入浅出(4)h.docx

总结动态链接库(DLL)编程深入浅出(4)h.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

这是《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:

externCintAPIENTRY

DllMain(HINSTANCEhInstance,DWORDdwReason,LPVOIDlpReserved)

{

//RemovethisifyouuselpReservedUNREFERENCED_PARAMETER(lpReserved);

if(dwReason==DLL_PROCESS_ATTACH)

{

TRACE0(MFCEXPENDDLL.DLLInitializing!\n);

//ExtensionDLLone-timeinitialization

if(!AfxInitExtensionModule(MfcexpenddllDLL,hInstance))return0;

//InsertthisDLLintotheresourcechain

//NOTE:IfthisExtensionDLLisbeingimplicitlylinkedtoby

// anMFCRegularDLL(suchasanActiveXControl)

// insteadofanMFCapplication,thenyouwillwantto

// removethislinefromDllMainandputitinaseparate

// functionexportedfromthisExtensionDLL. TheRegularDLL

// thatusesthisExtensionDLLshouldthenexplicitlycallthat

// functiontoinitializethisExtensionDLL. Otherwise,

// theCDynLinkLibraryobjectwillnotbeattachedtothe

// RegularDLLsresourcechain,andseriousproblemswill

// result.

newCDynLinkLibrary(MfcexpenddllDLL);

}

elseif(dwReason==DLL_PROCESS_DETACH)

{

TRACE0(MFCEXPENDDLL.DLLTerminating!\n);

//Terminatethelibrarybeforedestructorsarecalled

AfxTermExtensionModule(MfcexpenddllDLL);

AfxTermExtensionModule(MfcexpenddllDLL);

}

return1; //ok

}

上述代码完成MFC扩展DLL的初始化和终止处理。

由于MFC扩展DLL导出函数和变量的方式与其它DLL没有什么区别,我们不再细致讲解。下面直接给出一个MFC扩展DLL的创建及在应用程序中调用它的例子。

MFC扩展DLL的创建

下面我们将在MFC扩展DLL中导出一个按钮类CSXButton(扩展自MFC的CButton类),类CSXButton是一个用以取代CButton的类,它使你能在同一个按钮上显示位图和文字,而MFC的按钮仅可显示二者之一。类CSXbutton的源代码在Internet上广泛流传,有很好

的“群众基础”,因此用这个类来讲解MFC扩展DLL有其特殊的功效。

MFC中包含一些宏,这些宏在DLL和调用DLL的应用程序中被以不同的方式展开,这使得在DLL和应用程序中,使用统一的一个宏就可以表示出输出和输入的不同意思:

//fordata

//fordata

#ifndefAFX_DATA_EXPORT

#defineAFX_DATA_EX

文档评论(0)

hao187 + 关注
官方认证
内容提供者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档