如题:在调用DLL中的MDI子窗体中按回车和方向键无效?当焦点在按钮上的时候,按回车没反映,按方向建也不移动焦点。DLL项目代码如下:var
DllApplication: TApplication;
DllScreen: TScreen;procedure DLLUnloadProc(Reason: Integer); register;
begin
if Reason = DLL_PROCESS_DETACH then
begin
Application := DllApplication;
Screen := DllScreen;
end;
end;procedure DLLEntry(Reason: DWORD);
begin
case Reason of
DLL_PROCESS_ATTACH:
CoInitialize(nil);
DLL_PROCESS_DETACH:
CoUninitialize();
end;
end;exports
OpenCoaLeft;begin
DLLProc := @DLLEntry;
DLLEntry(DLL_PROCESS_ATTACH);
DllApplication := Application;
DllScreen := Screen;
DLLProc := @DLLUnloadProc;
end.从DLL导出的的函数如下:……
varMyParentForm: TForm;
MyParentApplication: TApplication;……procedure OpenCoaLeft(ParentApplication: TApplication;
H: THandle;
ParentForm: TForm;
AConn: TSMBLogin); stdcall;
begin
Application.Handle := H;
Application := ParentApplication;
OpenForm(TFormCOALeft, FormCOALeft, ParentForm);
FormCOALeft.SMBLogin1 := AConn;
FormCOALeft.MyParentForm := ParentForm;
FormCOALeft.MyParentApplication := ParentApplication;
end;
找了一些资料看了,不过都没有解决,请大家帮忙,谢谢!
DllApplication: TApplication;
DllScreen: TScreen;procedure DLLUnloadProc(Reason: Integer); register;
begin
if Reason = DLL_PROCESS_DETACH then
begin
Application := DllApplication;
Screen := DllScreen;
end;
end;procedure DLLEntry(Reason: DWORD);
begin
case Reason of
DLL_PROCESS_ATTACH:
CoInitialize(nil);
DLL_PROCESS_DETACH:
CoUninitialize();
end;
end;exports
OpenCoaLeft;begin
DLLProc := @DLLEntry;
DLLEntry(DLL_PROCESS_ATTACH);
DllApplication := Application;
DllScreen := Screen;
DLLProc := @DLLUnloadProc;
end.从DLL导出的的函数如下:……
varMyParentForm: TForm;
MyParentApplication: TApplication;……procedure OpenCoaLeft(ParentApplication: TApplication;
H: THandle;
ParentForm: TForm;
AConn: TSMBLogin); stdcall;
begin
Application.Handle := H;
Application := ParentApplication;
OpenForm(TFormCOALeft, FormCOALeft, ParentForm);
FormCOALeft.SMBLogin1 := AConn;
FormCOALeft.MyParentForm := ParentForm;
FormCOALeft.MyParentApplication := ParentApplication;
end;
找了一些资料看了,不过都没有解决,请大家帮忙,谢谢!
解决方案 »
- ADO操作ORACLE的BLOB字段的问题?急啊,请高手帮忙
- 用delphixe如何写sql server2008可调用的dll
- 菜鸟求教日期问题
- ███Delphi access数据库 提醒功能怎么实现?请高手赐教,小弟不甚感激!████
- extend 转 int??
- edit 输入字符时间隔时间记录
- oracle中创建作业的一个问题 万分紧急
- 100分,谁知道如何得到及局域网的网络号,及子网掩码?
- 急! 急! 急! 关于画图的问题?
- delphi xe10 编译提示armlinuxandroideabild.exe找不到
- TXPManifest与TPanel是否冲突?
- activeform编译的ocx在ie中使用的线程问题
我网上找了一个例子,好像可以的,不过创建多个MDI子窗口就会出现什么类已经存在的异常错误,然后就不能执行下去了。
CoInitialize(nil);
DLL_PROCESS_DETACH:
CoUninitialize();
end;你使用了COM吗?如果没有用去掉这个.
cantu(《delphi从入门到精通》作者)建议用bpl代替dll。我在一些项目中就是这样做的,配合优胜rtti或接口技术,这确实是一个好办法。
有没有例子,能不能发一个给我看看,不胜感激![email protected]
这是干什么?