Delphi开发的dll中创建了一个窗体退出在进程退出时碰到的问题

Delphi开发的dll中创建了一个窗体退出在进程退出时碰到的问题,第1张

可能回传一个窗体就行,我用这样的方法做了一个试验,一切正常。

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中写退出代码时,点击取消怎么才能返回程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10115908.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存