关于TForm和longint之间的转换(50分)

  • 主题发起人 主题发起人 EdwinYeah
  • 开始时间 开始时间
E

EdwinYeah

Unregistered / Unconfirmed
GUEST, unregistred user!
在<delphi 5 开发人员指南关于dll的第九章,有一个例子,我有一个疑问.

dll中有两个函数
下面这个显示dll中的一个窗体
function ShowCalendar(AHandle: THandle; ACaption: String): Longint;
var
; DLLForm: TDllForm;
begin
; // Copy application handle to DLL's TApplication object
; Application.Handle := AHandle;
; DLLForm := TDLLForm.Create(Application);
; Result := Longint(DLLForm);
; DLLForm.Caption := ACaption;
; DLLForm.Show; ;
end;

下面这个关闭dll中的一个窗体
procedure CloseCalendar(AFormRef: Longint);
begin
; if AFormRef > 0 then
; ; TDLLForm(AFormRef).Release;
end;

为什么TForm和longint之间可以转换且传递?
难道Longint(DLLForm)返回的是一个窗体句柄?但DLLForm是一个TForm的子类呀!
请大侠解惑!
 
DLLForm其实就是一个TDLLForm实例的指针,所以Logint(DllForm)返回的是一个指针,只
不过把指针转换成LongInt,同理TDLLForm(AFormRef)就是把AFormRef转换成TDLLForm实例
的指针
 
明白!谢谢Jedei !
其实是不是所有reord,tclass变量都是一个指针?
 
接受答案了.
 
是的,其实他们都是一个指针。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
735
import
I
后退
顶部