function GetColor(AHandle: THandle; Col: LongInt): LongInt;
var
Form1: TForm1;
begin
Application.Handle := AHandle;×××××××××××××××××××××
Result := Col;
Form1 := TForm1.Create(Application);
try
Form1.SelColor := Col;
if Form1.ShowModal =mrOK then
Result := Form1.Shape1.Brush.Color;
finally
Form1.Free;
end;
end;以上程序是一个DLL的输出函数,由调用程序(主程序)调用。其中×××××××××××这一行有什么作用?为何要把调用程序(主程序)的句柄传给dll。我试过删除这一行程序执行时也没问题。请高手指教!!谢谢
var
Form1: TForm1;
begin
Application.Handle := AHandle;×××××××××××××××××××××
Result := Col;
Form1 := TForm1.Create(Application);
try
Form1.SelColor := Col;
if Form1.ShowModal =mrOK then
Result := Form1.Shape1.Brush.Color;
finally
Form1.Free;
end;
end;以上程序是一个DLL的输出函数,由调用程序(主程序)调用。其中×××××××××××这一行有什么作用?为何要把调用程序(主程序)的句柄传给dll。我试过删除这一行程序执行时也没问题。请高手指教!!谢谢
解决方案 »
- 学习DELPHI网络编程
- delphi 中用ado 连接服务器上db2 数据库,客户机需安装什么
- 广州程序员购买技术书籍大调查.
- 强烈求教 sql 语句的写法问题 ‘’和;+ 问题等等
- 关于字段解密的问题!
- 关于循环播放背景音乐死机的问题
- 怎样屏蔽掉sql的登录提示窗口呢?急~~~
- 在combobox里进行查找
- ====CLX應用程序報表製作:RAVE40=====如何与DELPHI60結合使用,急需各位指點……
- 如何在运行期获得listbox中被选中的一项?
- Operation not allowed on a unidirectional dataset错误?
- 请问怎样通过代码让TDBLookupComboBox选中所要的行
Form1 := TForm1.Create(Application);
这样Form1就属于Application的一部分,也就是说,当Application释放的时候,会自动释放Form1.如果写成:
Form1 := TForm1.Create(nil);
就必须自己释放Form1,要不在关闭Application时,可能会产生内存泄漏不过他这里是模式显示窗体,并用finally保证释放,用不用Application和Handle无所谓,但如果为非模式显示窗体,还是这样的好
如果只是保证释放form1那么我可以在finally里free掉;另外,即使要Form1 := TForm1.Create(Application);这里的Application是Dll的Application,这么看也没有必要把主程序的application传过来:Application.Handle := AHandle;是不是??????????????????????
Dll里的窗体显示时会在任务栏上出现按纽,而不象普通的调用窗体不会在任务栏上增加额外按纽。