某个个TPopupMenu位于dll中,用这样一个record封装起来:
TModule = record
Name:PChar;
TrayMenu:TMenuItem;
end;dll中的调用接口为: function GetInfo:TModule;stdcall;export;
begin
Result.Name := 'Demo';
Result.TrayMenu := FrmMain.pm1.Items;
end;dll入口: begin
FrmMain:=TFrmMain.Create(nil);
end.到主程序里加载dll,主程序是MDI Form。 type
pGetInfo=function():TModule;stdcall;procedure LoadMod(DllPath:PChar);
var Hnd:THandle;
FItem:TMenuItem;
GetInfo:pGetInfo;
Info:TMoudle;
begin
Hnd:=LoadLibrary(DllPath);
if Hnd<>0 then begin
GetInfo:=GetProcAddress(Hnd,'GetInfo');
if Assigned(GetInfo) then begin
Info:=GetInfo;
FItem:=Info.TrayMenu;
FItem.Caption:=Info.Name;
FrmMain.P2.Add(FItem); // P2是某个TPopmenu中的一项
end;
end;
end;
情况是,在主窗体中无法响应新菜单项的事件,而这个菜单又确实是Dll中的指定菜单。
个人是黔驴技穷了,到这里求解决办法!
TModule = record
Name:PChar;
TrayMenu:TMenuItem;
end;dll中的调用接口为: function GetInfo:TModule;stdcall;export;
begin
Result.Name := 'Demo';
Result.TrayMenu := FrmMain.pm1.Items;
end;dll入口: begin
FrmMain:=TFrmMain.Create(nil);
end.到主程序里加载dll,主程序是MDI Form。 type
pGetInfo=function():TModule;stdcall;procedure LoadMod(DllPath:PChar);
var Hnd:THandle;
FItem:TMenuItem;
GetInfo:pGetInfo;
Info:TMoudle;
begin
Hnd:=LoadLibrary(DllPath);
if Hnd<>0 then begin
GetInfo:=GetProcAddress(Hnd,'GetInfo');
if Assigned(GetInfo) then begin
Info:=GetInfo;
FItem:=Info.TrayMenu;
FItem.Caption:=Info.Name;
FrmMain.P2.Add(FItem); // P2是某个TPopmenu中的一项
end;
end;
end;
情况是,在主窗体中无法响应新菜单项的事件,而这个菜单又确实是Dll中的指定菜单。
个人是黔驴技穷了,到这里求解决办法!
解决方案 »
- ModelMaker 好用不?
- 如何隐藏我的form窗体上面的标题栏?
- 修改数据时用Delphi自身的错误信息来判断是哪种错误??
- 如何删除ListView控件里选中的项目?
- 两层结构中关于事务处理的捆扰 100分
- 就是隐藏不了qq的登陆窗口,有哪位高手请赐教,在下感激不进
- 安装ms sql2000后,打不开企业管理器,错误提示mmc无法创建节点管理器,请确认mmcndngr.dll已经注册
- 我编了一个键盘纪录软件,愿意与大家分享
- 誰知道2589是什么意思,女友问我的
- 请问:OE里的“我的服务器要求身份验证”与SMTP控件里的哪个属性相对应?
- access中,为什么 select top 10 * from table比select * from table还慢?
- 请问dephi7中有Bebel这个一个组件么??我怎么找不到啊!!!
begin
FrmMain.Visible := not FrmMain.Visible;
N1.Checked := not N1.Checked;
end;
这是DLL中测试用菜单的OnClick事件。。在Dll中TFrmMain下这个过程的声明后加上了stdcall;
结果发现可以用它显示出dll窗体了,但是第二句报错;
然后以试一试的心态,注释掉了stdcall,结果居然能用了也不知道IDE抽了还是我虎躯一震RP爆发了。。晕死
既然问题已经不存在,放分吧~