可能回传一个窗体就行,我用这样的方法做了一个试验,一切正常。
DLL代码如下:
library dll_Form;
uses
Windows,Forms;
{$R res}
var
TestForm:TForm;
Function LoadForm:TForm; export; stdcall;
begin
if TestForm=nil then
TestForm := TFormCreate(nil);
TestFormShow;
Result:=TestForm;
end;
exports
LoadForm;
begin
end
调用的程序这样:
unit dll_form_test;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
end;
Function LoadForm:TForm; stdcall;external 'dll_Formdll';
var
Form1: TForm1;
Form2: TForm;
implementation
{$R dfm}
procedure TForm1Button1Click(Sender: TObject);
begin
Form2:=LoadForm;
end;
procedure TForm1FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2Free;
end;
end
if AlogoTag<>0 then//登陆成功,进入main窗口
只有登录成功后才执行ApplicationCreateForm(Tmain, main);
但是不成功时,main是为空的,所以if mainActive=false then肯定会报错。这样试试呢:
begin
ApplicationInitialize;
ApplicationCreateForm(TdataModule, dataModule);//加载数据模块
Alogo:=TAlogoCreate(nil);//创建登陆窗口
AlogoShowModal;
if AlogoTag<>0 then//登陆成功,进入main窗口
begin
AlogoFree;
ApplicationCreateForm(Tmain, main);
ApplicationRun;
end
else begin
AlogoFree;
dataModuleCloseQuery;
dataModuleClose;
applicationterminate;
end;
end
//Form1的CloseQuery事件
procedure TForm1FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
n :integer;
begin
n := Messagebox(handle,'是否退出并保存','退出',mb_yesnocancel);
if n = 6 then
begin
n22Click;
CanClose := true;
end
else if n = 7 then
CanClose := true
else
CanClose := false;
end;
或者这样
//Form的Close事件
procedure TForm1FormClose(Sender: TObject; var Action: TCloseAction);
var
n :integer;
begin
n := Messagebox(handle,'是否退出并保存','退出',mb_yesnocancel);
if n = 6 then
begin
n22Click;
applicationTerminate;
end
else if n = 7 then
applicationTerminate
else
Action := caNone;
end;
以上就是关于Delphi开发的dll中创建了一个窗体退出在进程退出时碰到的问题全部的内容,包括:Delphi开发的dll中创建了一个窗体退出在进程退出时碰到的问题、Delphi程序开发,仓库管理系统登陆界面直接退出会出现Exception EAcessViolation错误,求解、delphi中在form1的onclose中写退出代码时,点击取消怎么才能返回程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)