我做了一个dll名字为testdll1,里面包含一个子窗口,主程序为testmain里面包含主窗口,在调用时报如下两个错误:Project testMain.exe raised exception class EInvalidOperation with message 'Cannot make a visible window modal'.Process stopped.Use Step or Run to continue.Exception EInvalidOperation in module testdll1.dll at 0005BF31.我跟了一下dll程序,
ptr:=@(application.MainForm);
ptr^:=longint(mainform);
form1:=tfrm_carinfo.Create(mainform);
form1.ShowModal;//错误出现在这句。但是除了这两句错误以外其它的运行结果都正确,不明白是哪里做错了,请指教
ptr:=@(application.MainForm);
ptr^:=longint(mainform);
form1:=tfrm_carinfo.Create(mainform);
form1.ShowModal;//错误出现在这句。但是除了这两句错误以外其它的运行结果都正确,不明白是哪里做错了,请指教
解决方案 »
- ADOQuery1.FieldValues[‘字段1’]返回的是什么类型
- 如何标识DELPHI中的TreeView的某一个节点??
- 数字操作的一个小问题
- EmbeddedWb 有for D7的版本吗?
- 这句源码错在哪里了?
- 急啊!!ListView里item的排序!
- 如何阅读DELPHI代码? 大家能否谈谈阅读代码的技巧? 我是菜鸟,刚学DELPHI
- 寻找可以多个单元垂直合并显示或编辑的Grid数据感知控件?
- 关于zswang(伴水)找了个CSDN的漏洞到底是怎么回事?
- 一个关于大对象的问题?我的代码为什么出错?
- 做软件的自动演示用什么工具?各位大侠快点帮帮我啊!急、、、
- 有关Excel的对齐方式设置的问题
form1.ShowModal;//错误出现在这句。
procedure jh(mainform:Tform);stdcall;
var
ptr:PLongInt;
form1:tfrm_carinfo;
begin
ptr:=@(application.MainForm);
ptr^:=longint(mainform);
form1:=tfrm_carinfo.Create(mainform);
form1.ShowModal; //错误出现在这句
end;主程序中的调用程序
procedure Tfrm_mainOPT.menu_CarInfoClick(Sender: TObject);
type
mypointer=procedure(form:TForm);stdcall;
var
showform:mypointer;
Moudel: THandle;
begin
moudel:=Loadlibrary('testdll1.dll');
if Moudel > 32 then
begin
showform:= GetProcAddress(moudel, 'jh');
showform(application.MainForm);
FreeLibrary(moudel);
end;
end;
var
Form1 :TForm1;procedure ShowWindow(Handle :THandle);
begin
Application.Handle :=Handle;
Form1 :=TForm1.Create(Application.Handle);
Form1.ShowModel;
end;调用代码
TShowWindow = procedure (Handle :THandle);procedure CallWindow;
var
ShowWindow :TShowWindow;
LibHandle :THandle;
begin
LibHandle :=LoadLibrary('xxx.dll');
if LibHandle <> 0 then
begin
@ShowWindow :=GetProcAddress(LibHandle, 'ShowWindow');
if @ShowWindow <> nil then
ShowWindow(Application.Handle);
end;
end;
//在主窗体释放的时候再调用FreeLibrary