今天终于完成基于MFC框架的插件模式1.0版本,后续使用中再完善
使用插件目的:减少模块之间的依赖,便于程序功能扩展维护。
实现方式:
1、所有接口直接或间接继承CObject,只支持单接口继承。
知道类名后,所有接口实例可以使用CRuntimeClass::CreateObject()创建
2、支持MFC单文档,多文档,对话框。框架插件接口目前只有一个函数
BOOL OnPluginEvent(int nEvent,CObject* pFrame);
可以动态增加菜单,工具条等
为了方便以后修改接口,采用IDispatch接口调用方式,可以部分实现接口函数。
COleDispatchDriver dispatch;
static BYTE parms[] = VTS_I4 VTS_I4;
dispatch.InvokeHelper(1,DISPATCH_METHOD,VT_EMPTY,NULL,parms,nEvent,pSender);
3、多模块之间传递变量
1、单一实例
2、支持接口查询,定义通用接口类,增加接口名称获取
4、DLL模块的事件响应
继承CCmdtarget
5、CWnd控件功能扩展
采用SubClassWnd方式。