設(shè)計(jì)變更:類(lèi)數(shù)量不變,因?yàn)榻?jīng)過(guò)分析,是因?yàn)樵趀xe和dll之間傳遞VCL特有數(shù)據(jù)類(lèi)型所致。
原先的二進(jìn)制部署亦不變。
定義數(shù)據(jù)類(lèi)型,模仿TMenuItem的形式,里面封裝了id, name, caption, hint, shortcut和一個(gè)void(*pFun)()的函數(shù)指針,該指針指向DLL內(nèi)部的一個(gè)非成員函數(shù),該函數(shù)內(nèi)部調(diào)用類(lèi)成員函數(shù)(前提是exe中的DLLManager的LoadDLL方法創(chuàng)建了該類(lèi)的實(shí)例)。
EXE的AddMenu接口接受該數(shù)據(jù)類(lèi)型的參數(shù),根據(jù)其中的資源創(chuàng)建TAction,TAction和pFun一并壓入自身容器中,所有Action的OnExecute均指向Main中的一個(gè)可以賦值給TNotifyEvent指針的函數(shù)。
添加完畢,EXE執(zhí)行激活操作(初始化的時(shí)候已經(jīng)根據(jù)UI配置文件創(chuàng)建了狀態(tài)為Idel的菜單)將添加的Action對(duì)號(hào)入座,激活菜單。
OnClick事件觸發(fā)TNotifyEvent操作,遍歷Exe容器,找到pFun()觸發(fā)之。
問(wèn)題解決!
下一步:美化界面。