基于MFC的插件应用程序设计与实现(1)
2014-05-16 01:28
导读:计算机应用论文论文,基于MFC的插件应用程序设计与实现(1)应该怎么写,有什么格式要求,科教论文网提供的这篇文章是一个很好的范例:
摘 要 讨论了插件应用系统的基础理论及应用优势,据此设计了基本的插
摘 要 讨论了插件应用系统的基础理论及应用优势,据此设计了基本的插件应用系统框架模块并通过MFC基础平台予以具体实现。 关键字 插件;动态链接库;MFC1 插件体系结构 软件开发手段的演化,就在于以最小的代价得到更健壮且易于扩展和维护的“好”的应用系统,开发工具的持续改进和开发思想的进化使得我们有可能实现上述目标。 从面向过程的开发至面向对象的编程,直至目前面向组件的开发,正是上述思维的展现。基于插件的应用系统从体系结构设计出发,着力构建低耦合的,灵活可扩展的且支持无编译热插拔的应用系统,通过分析应用需求,提炼功能相似的模块并设计相应的模块间接口,我们就可以将该部分功能分离出来,综合来看,基于插件的应用系统有以下优势: (1)实现真正意义上的软件组件的“即插即用”。 (2)在二进制级上集成软件, 减少大量的软件重新编译与发布所带来的麻烦。 (3)能够很好地实现软件模块的分工开发, 并且能够大量吸取他人的优点。 (4)可以较好地实现代码隐藏, 保护知识产权。基于插件的体系结构如图1所示。

图1 插件应用系统体系结构 从图1可知,一个完成的基于插件的应用系统共分两部分:插件主控程序(含插件调度核心模块)以及插件池(存放所有插件)。主控程序通过核心模块提供插件管理功能,主要包括: (1)注册及卸载插件:插件在使用之前必须注册或存放于特定的路径中,主控程序根据相关配置参数对插件完成初始化工作。 (2)启用及禁用插件:主控程序可以根据用户指令,对某些已装载的插件予以启用或禁用。 (3)显示插件信息:包括插件描述,开发者信息,版本和版权声明等。 (4)配置插件参数:插件本身的运行需要对某些参数进行定制。根据模块规划,插件实现特定的功能并将接口暴露出来,根据需要,可能还需要调用主控程序提供的方法以操作资源或数据。2 设计思路及MFC实现 据上述讨论,我们设计一个基本的插件应用系统框架,其中主控程序是基于MFC对话框的应用程序,插件使用动态库实现,插件管理部分使用专门的CPluginManager类实现,其实现的函数如图2所示。

图2 插件管理类视图 就主要函数说明如表1所示。表1 插件管理类提供的函数
函数名称函数说明
Init初始化,搜索所有有效插件
Shutdown释放资源
GetAll得到所有插件名,用CString对象返回,名之间用:隔开
Count返回可用插件的个数
Run调用插件提供的函数接口
Load载入所有插件
UnLoad卸载所有插件
ExtractFilePath提取插件存放路径
以Load函数为例,我们使用STL的MAP数据结构存放插件句柄和插件的对应,代码如下:void CPluginManager::Load(){ //……相关变量定义省略 GetModuleFileName(AfxGetApp()-