谢谢你的参与。 举个例子:
有一个菜单配置表:
菜单一 对应的函数 menu1();
菜单二 对应的函数 menu2();
.. ..
有一个编译好的dll调用此表,动态生成菜单项,而菜单对应的函数可能是后加的,即是另一个dll,在不需要重新编译生成菜单DLL的情况下、只要修改菜单表和实现的DLL即可完成工作。
有的用户水平很高,他们有能力改写具体实现的DLL,所以要实现这种功能了。 我记得C语言可以实现这种功能,具体忘了。好像用指针吧! 请大家多多帮忙。。
有一个菜单配置表:
菜单一 对应的函数 menu1();
菜单二 对应的函数 menu2();
.. ..
有一个编译好的dll调用此表,动态生成菜单项,而菜单对应的函数可能是后加的,即是另一个dll,在不需要重新编译生成菜单DLL的情况下、只要修改菜单表和实现的DLL即可完成工作。
有的用户水平很高,他们有能力改写具体实现的DLL,所以要实现这种功能了。 我记得C语言可以实现这种功能,具体忘了。好像用指针吧! 请大家多多帮忙。。
[Root]
Count=2Item1=菜单1
SubItem1=
Command1=Paint.exeItem2=菜单2
SubItem2=SubItem2
Command2=[SubItem2]
Count=1Item1=子菜单1
SubItem1=
Command1=NotePad.exe在程序中用递归的方式读取,并动态创建MenuItem
[email protected]
var
hLib: integer;
hrun:function(param1:type1;param2:type2...):rtntype;stdcall;//你的过程或函数的格式
begin
hlib:=loadlibrary(pchar('yourlib.dll'));
if hlib<>0 then
hrun:=GetProcAddress(win.hlib,'YourProcName');
if @hrun<>nil then hrun;
end;
然后 yourobject.onevent:=yourhandlefunction; 就行了,程序运行时也是可以随时更改的,很方便啊