有关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()是起什么功能的 ?
展开
 我来答
苦守无奈
2010-10-19 · TA获得超过608个赞
知道小有建树答主
回答量:725
采纳率:41%
帮助的人:137万
展开全部
handle它就是个长整型,可以跟integer比较一下,
FindWindow(nil,'Compass')>0 说明能找到这个窗口的句柄,找不到则返回空/0,

FindWindow只是查找窗口,但是找到的窗口并不一定是当前窗口。

一个窗口有2个部分组成,1个是窗口的类名,一个是窗口的窗口名称。通常情况下,我们自己做的窗口类名和窗口名称都是知道的,因为是自己给它们加上去的。但对于模板窗口,我们一般是不知道它的类名的,但它的窗口名称是可以知道的,就是显示在标题栏中的标题,就是它的窗口名称。
当有2个窗口在桌面上时,一个窗口有个编辑框,而另一个没有编辑框。当我们想要用那个有编辑框的窗口时,必须先得到那个窗口的句柄,FindWindow就是帮助我们取得这个窗口句柄。
我们可以任意指定FindWindow中两个参数的其中一个,或同时2个都指定来找到那个带有编辑框的窗口,然后FindWindow就会返回这个窗口的句柄(hwnd)。
窗口类名好比人的小名,窗口标题名称好比是人的大名。
我们一般知道一个人的大名,但不太清楚他的小名如对话框的类名#32776。FindWindow给了我们两个参数,以便我们在不知道一个人小名的情况下,可以通过大名来找到该人。
ysjqrmpv
2010-10-18 · TA获得超过116个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:205万
展开全部
个人认为THandle可以理解为DWord,也就是非负数的整数类型。

FindWindow(nil,'Compass')>0;//查找无类型,标题(Caption)为Compass的窗口,大于零说明该窗口存在,如果等于说明该窗口不存在
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
临崖策马
2010-10-18 · 超过35用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:53万
展开全部
THandle = Cardinal;
四字节无符号整型。
FindWindow返回值为0的意义,你去查对应的api函数说明。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式