设计变更:类数量不变,因为经过分析,是因为在exe和dll之间传递VCL特有数据类型所致。
原先的二进制部署亦不变。
定义数据类型,模仿TMenuItem的形式,里面封装了id, name, caption, hint, shortcut和一个void(*pFun)()的函数指针,该指针指向DLL内部的一个非成员函数,该函数内部调用类成员函数(前提是exe中的DLLManager的LoadDLL方法创建了该类的实例)。
EXE的AddMenu接口接受该数据类型的参数,根据其中的资源创建TAction,TAction和pFun一并压入自身容器中,所有Action的OnExecute均指向Main中的一个可以赋值给TNotifyEvent指针的函数。
添加完毕,EXE执行激活操作(初始化的时候已经根据UI配置文件创建了状态为Idel的菜单)将添加的Action对号入座,激活菜单。
OnClick事件触发TNotifyEvent操作,遍历Exe容器,找到pFun()触发之。
问题解决!
下一步:美化界面。
posted on 2008-07-16 15:19
创建更好的解决方案 阅读(1076)
评论(0) 编辑 收藏 引用 所属分类:
C++专栏 、
UI美学 、
软件设计