有关delphi中THandle的问题
源代码procedureTfrmMain.SendCompass(Value:Double);vards:TCopyDataStruct;hd:THandle;*****...
源代码
procedure TfrmMain.SendCompass(Value : Double);
var
ds:TCopyDataStruct;
hd:THandle; ************************* 1
S: string;
begin
S := FloatToStr(Value);
ds.cbData:=length(S)+1;
GetMem(ds.lpData,ds.cbData);
StrCopy(ds.lpData,PChar(S));
hd:=FindWindow(nil,'Compass'); *********************************2
if hd<>0 then*********************************3
SendMessage(hd,WM_COPYDATA,frmMain.Handle,Cardinal(@ds));
FreeMem(ds.lpData);
该程序中1处 THandle 是什么类型 3处 为什么可以对他进行是否为0的条件判断?
如果是判定FindWindow(nil,'Compass')>0 又是什么意思?
findwindow()是起什么功能的 ? 展开
procedure TfrmMain.SendCompass(Value : Double);
var
ds:TCopyDataStruct;
hd:THandle; ************************* 1
S: string;
begin
S := FloatToStr(Value);
ds.cbData:=length(S)+1;
GetMem(ds.lpData,ds.cbData);
StrCopy(ds.lpData,PChar(S));
hd:=FindWindow(nil,'Compass'); *********************************2
if hd<>0 then*********************************3
SendMessage(hd,WM_COPYDATA,frmMain.Handle,Cardinal(@ds));
FreeMem(ds.lpData);
该程序中1处 THandle 是什么类型 3处 为什么可以对他进行是否为0的条件判断?
如果是判定FindWindow(nil,'Compass')>0 又是什么意思?
findwindow()是起什么功能的 ? 展开
3个回答
展开全部
handle它就是个长整型,可以跟integer比较一下,
FindWindow(nil,'Compass')>0 说明能找到这个窗口的句柄,找不到则返回空/0,
FindWindow只是查找窗口,但是找到的窗口并不一定是当前窗口。
一个窗口有2个部分组成,1个是窗口的类名,一个是窗口的窗口名称。通常情况下,我们自己做的窗口类名和窗口名称都是知道的,因为是自己给它们加上去的。但对于模板窗口,我们一般是不知道它的类名的,但它的窗口名称是可以知道的,就是显示在标题栏中的标题,就是它的窗口名称。
当有2个窗口在桌面上时,一个窗口有个编辑框,而另一个没有编辑框。当我们想要用那个有编辑框的窗口时,必须先得到那个窗口的句柄,FindWindow就是帮助我们取得这个窗口句柄。
我们可以任意指定FindWindow中两个参数的其中一个,或同时2个都指定来找到那个带有编辑框的窗口,然后FindWindow就会返回这个窗口的句柄(hwnd)。
窗口类名好比人的小名,窗口标题名称好比是人的大名。
我们一般知道一个人的大名,但不太清楚他的小名如对话框的类名#32776。FindWindow给了我们两个参数,以便我们在不知道一个人小名的情况下,可以通过大名来找到该人。
FindWindow(nil,'Compass')>0 说明能找到这个窗口的句柄,找不到则返回空/0,
FindWindow只是查找窗口,但是找到的窗口并不一定是当前窗口。
一个窗口有2个部分组成,1个是窗口的类名,一个是窗口的窗口名称。通常情况下,我们自己做的窗口类名和窗口名称都是知道的,因为是自己给它们加上去的。但对于模板窗口,我们一般是不知道它的类名的,但它的窗口名称是可以知道的,就是显示在标题栏中的标题,就是它的窗口名称。
当有2个窗口在桌面上时,一个窗口有个编辑框,而另一个没有编辑框。当我们想要用那个有编辑框的窗口时,必须先得到那个窗口的句柄,FindWindow就是帮助我们取得这个窗口句柄。
我们可以任意指定FindWindow中两个参数的其中一个,或同时2个都指定来找到那个带有编辑框的窗口,然后FindWindow就会返回这个窗口的句柄(hwnd)。
窗口类名好比人的小名,窗口标题名称好比是人的大名。
我们一般知道一个人的大名,但不太清楚他的小名如对话框的类名#32776。FindWindow给了我们两个参数,以便我们在不知道一个人小名的情况下,可以通过大名来找到该人。
展开全部
个人认为THandle可以理解为DWord,也就是非负数的整数类型。
FindWindow(nil,'Compass')>0;//查找无类型,标题(Caption)为Compass的窗口,大于零说明该窗口存在,如果等于说明该窗口不存在
FindWindow(nil,'Compass')>0;//查找无类型,标题(Caption)为Compass的窗口,大于零说明该窗口存在,如果等于说明该窗口不存在
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
THandle = Cardinal;
四字节无符号整型。
FindWindow返回值为0的意义,你去查对应的api函数说明。
四字节无符号整型。
FindWindow返回值为0的意义,你去查对应的api函数说明。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询