設計變更:類數量不變,因為經過分析,是因為在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
創建更好的解決方案 閱讀(1087)
評論(0) 編輯 收藏 引用 所屬分類:
C++專欄 、
UI美學 、
軟件設計