設(shè)計變更:類數(shù)量不變,因為經(jīng)過分析,是因為在exe和dll之間傳遞VCL特有數(shù)據(jù)類型所致。
原先的二進制部署亦不變。
定義數(shù)據(jù)類型,模仿TMenuItem的形式,里面封裝了id, name, caption, hint, shortcut和一個void(*pFun)()的函數(shù)指針,該指針指向DLL內(nèi)部的一個非成員函數(shù),該函數(shù)內(nèi)部調(diào)用類成員函數(shù)(前提是exe中的DLLManager的LoadDLL方法創(chuàng)建了該類的實例)。
EXE的AddMenu接口接受該數(shù)據(jù)類型的參數(shù),根據(jù)其中的資源創(chuàng)建TAction,TAction和pFun一并壓入自身容器中,所有Action的OnExecute均指向Main中的一個可以賦值給TNotifyEvent指針的函數(shù)。
添加完畢,EXE執(zhí)行激活操作(初始化的時候已經(jīng)根據(jù)UI配置文件創(chuàng)建了狀態(tài)為Idel的菜單)將添加的Action對號入座,激活菜單。
OnClick事件觸發(fā)TNotifyEvent操作,遍歷Exe容器,找到pFun()觸發(fā)之。
問題解決!
下一步:美化界面。
posted on 2008-07-16 15:19
創(chuàng)建更好的解決方案 閱讀(1087)
評論(0) 編輯 收藏 引用 所屬分類:
C++專欄 、
UI美學(xué) 、
軟件設(shè)計