关于windows API函数? 句柄就是windows下的32位无符号的一个整形量,是系统的对象的标志。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看这个关于句柄的讨论:*********************************************************************************主 题:我看句柄这个概念满天飞,但却不很清楚到底是个什么东西,请大家来扶扶贫吧!!作 者:cwpower所属论坛:C++ Builder问题点数:22回复次数:23发表时间:2001-6-12 11:01:00 我也看了一些书的说法,不知道是我看不懂还是没说清楚,现在还没弄懂,而且大部分书上都没有句柄到底是什么?指针?在程序他起到什么作用?提示会只能给22分,不好意思了 回复贴子: 回复人:wjzhuang(程序猪) (2001-6-12 11:09:00) 得0分 句柄就是指针.是windows系统中专用的关于窗口的指针.在程序中就是标明你要访问对象(比如:某个窗口)的位置. 回复人:xycleo(虚竹(和尚)) (2001-6-12 11:10:00) 得0分 就是一个标示!! 回复人:xycleo(虚竹(和尚)) (2001-6-12 11:11:00) 得0分 比如!!用Findwindow找出一个窗口句柄副给Hwnd然后SendMessage(Hwnd,WM_CLOSE,0,0)就是关闭改窗口 回复人:comanche(太可怕) (2001-6-12 11:12:00) 得0分 像指针,但只能说是个表的索引,保护模式中引入的描术符表概念,句柄是这个描述符表的索引锁定后它是个指针,但一定要 unlock!你明白类的this吗?句柄大概就有这的意思,它是变量的一个相对基址 基址+偏址=变量地址不少书都有对句柄一词的滥用。 回复人:cwpower(知已难求,不醉不归) (2001-6-12 11:13:00) 得0分 能给几个使用句柄的例子吗?我知道它应该就是指针,但不知在C++里他将起到一些什么作用? 回复人:comanche(太可怕) (2001-6-12 11:13:00) 得0分 在历史中有不少这样的讨论,你自已去 search一下 回复人:comanche(太可怕) (2001-6-12 11:23:00) 得0分 .你的程序本身就有个句柄 Application->Handle.所有的窗体也有个句柄 Form->Handle.句柄定义类型很多,但意义一样,比方说 Handle, HWND, HGLOBAL, void *, int 都可以用作句柄声明, MS常让人不明白,什么要用如此多的 typedef 定义同一个东东.你也可以自已分配一个句柄Handle hMem = GlobalAlloc( GMEM_MOVEABLE ); // 如果是 GMEM_FIXED 你可以当指针用try{ void *pAddress = GlobalLock( hMem ); ...}__finally{ GlobalUnlock( hMem );} 回复人:songhtao(三十年孤独) (2001-6-12 11:25:00) 得0分 句柄表索引,能唯一标识进程 回复人:cwpower(知已难求,不醉不归) (2001-6-12 11:27:00) 得0分 为什么我明明给了分,却显示得0分,CSDN怎么会事,我ASP还可以,需不需我来改进啊??? 回复人:rh(有花须酌酒) (2001-6-12 11:29:00) 得0分 你想象成调羹的把柄就可以啦:) 回复人:dbxmcf(刀板虾米) (2001-6-12 15:42:00) 得0分 我在一本老外的书上很清楚的写句柄不是指针的Handle is not a pointer,it is a integer value. 回复人:sephil(为什么我还是这么菜) (2001-6-12 16:10:00) 得0分 呵呵就象身份证一样是唯一的 回复人:comanche(太可怕) (2001-6-12 20:43:00) 得0分 没人说句柄是指针来着? 回复人:Wingsun(孙春阳) (2001-6-12 20:48:00) 得0分 句并本来就不是一个指针. 回复人:hlfsoft(海滨鸟) (2001-6-12 20:54:00) 得0分 句柄是指针???句柄实际是整形类型,是一个标识。 回复人:ThinkX() (2001-6-12 21:38:00) 得0分 大部分句柄是指针,就是void*,如HDC, HWND等,由于api是c的,句柄就是其操作的内存位置的标识 回复人:xycleo(虚竹(和尚)) (2001-6-12 21:52:00) 得0分 是整形的!! 回复人:weenyboy(小公子) (2001-6-12 23:15:00) 得0分 呵呵~ 大家在争论这个话题?句柄在目前windows版本中是个32位的整数,争论它是指针还是整数是没有意义的,因为它们都占用4byte的空间,只不过在c中它通常申明void *类型,看起来象个指针定义而已,在pascal中,它定义位Integer型句柄是标识唯一性的,通常被windows内部作为索引来用,正如comanche说他们说的一样,不过也不排除被作为指针使用的可能 回复人:xrbeck(xiaozi) (2001-6-12 23:43:00) 得0分 我的理解。。比如以前DOS下打开FILE时。会返回一个HANDLE。这个HANDLE其实是设备程序表中的一个索引。是个整数。在一个STRUCT的LINK中。。指向一个结构维护着这个FILE的信息。所以道理上来讲其实也是个指针吧。 回复人:sephil(为什么我还是这么菜) (2001-6-12 23:44:00) 得0分 一般是整型的不过有时也是指针 回复人:cwpower(知已难求,不醉不归) (2001-6-13 8:36:00) 得0分 多谢大家了虽然还有些模糊,但已经有感性认识了我发现我今年最值得庆幸的就是发现了这个论坛 回复人:cwpower(知已难求,不醉不归) (2001-6-13 9:05:00) 得0分 又有人回答了,虽然我很穷了,还是给吧 回复人:dbxmcf(刀板虾米) (2001-6-13 14:32:00) 得0分 to xrbeck(xiaozi):对,那本书上举的就是这个例子一般我们都写FILE *fp;但是这本上写int fp;我试了,可以的(tc2.0) ***************************************************************************************** 内存释放问题 请教高手!双机数据互考! 放分200支持menggirl yy 有没有将PCHAR转化为STRING的函数。 急问:关于delphi6报表中QRCompositeReport控件的问题 不是很清楚的函数与过程,请高手进来指点迷津。。谢谢! 请教高手一个简单的小问题 如何调用系统默认邮件处理软件发送一个附件?(急!在线等!) 谁知道列侬的Double Fantasy(双重幻想)哪里有下载,3q 如何遍历treeview并修改个节点的值 调查!大家都用什么浏览器!! 如何在一次查询的基础之上做另一次查询
主 题:我看句柄这个概念满天飞,但却不很清楚到底是个什么东西,请大家来扶扶贫吧!!
作 者:cwpower
所属论坛:C++ Builder
问题点数:22
回复次数:23
发表时间:2001-6-12 11:01:00
我也看了一些书的说法,不知道是我看不懂还是没说清楚,现在还没弄懂,而且大部分书上都没有
句柄到底是什么?指针?
在程序他起到什么作用?
提示会只能给22分,不好意思了
回复贴子:
回复人:wjzhuang(程序猪) (2001-6-12 11:09:00) 得0分
句柄就是指针.
是windows系统中专用的关于窗口的指针.
在程序中就是标明你要访问对象(比如:某个窗口)的位置.
回复人:xycleo(虚竹(和尚)) (2001-6-12 11:10:00) 得0分
就是一个标示!!
回复人:xycleo(虚竹(和尚)) (2001-6-12 11:11:00) 得0分
比如!!
用Findwindow找出一个窗口句柄副给Hwnd然后SendMessage(Hwnd,WM_CLOSE,0,0)就是关闭改窗口
回复人:comanche(太可怕) (2001-6-12 11:12:00) 得0分
像指针,但只能说是个表的索引,保护模式中引入的描术符表概念,句柄是这个描述符表的索引
锁定后它是个指针,但一定要 unlock!
你明白类的this吗?句柄大概就有这的意思,它是变量的一个相对基址 基址+偏址=变量地址
不少书都有对句柄一词的滥用。
回复人:cwpower(知已难求,不醉不归) (2001-6-12 11:13:00) 得0分
能给几个使用句柄的例子吗?
我知道它应该就是指针,但不知在C++里他将起到一些什么作用?
回复人:comanche(太可怕) (2001-6-12 11:13:00) 得0分
在历史中有不少这样的讨论,你自已去 search一下
回复人:comanche(太可怕) (2001-6-12 11:23:00) 得0分
.你的程序本身就有个句柄 Application->Handle
.所有的窗体也有个句柄 Form->Handle
.句柄定义类型很多,但意义一样,比方说 Handle, HWND, HGLOBAL, void *, int 都可以用作句柄声明, MS常让人不明白,什么要用如此多的 typedef 定义同一个东东
.你也可以自已分配一个句柄
Handle hMem = GlobalAlloc( GMEM_MOVEABLE ); // 如果是 GMEM_FIXED 你可以当指针用
try
{
void *pAddress = GlobalLock( hMem );
...
}
__finally
{
GlobalUnlock( hMem );
}
回复人:songhtao(三十年孤独) (2001-6-12 11:25:00) 得0分
句柄表索引,能唯一标识进程
回复人:cwpower(知已难求,不醉不归) (2001-6-12 11:27:00) 得0分
为什么我明明给了分,却显示得0分,CSDN怎么会事,我ASP还可以,需不需我来改进啊???
回复人:rh(有花须酌酒) (2001-6-12 11:29:00) 得0分
你想象成调羹的把柄就可以啦:)
回复人:dbxmcf(刀板虾米) (2001-6-12 15:42:00) 得0分
我在一本老外的书上很清楚的写句柄不是指针的
Handle is not a pointer,it is a integer value.
回复人:sephil(为什么我还是这么菜) (2001-6-12 16:10:00) 得0分
呵呵
就象身份证一样
是唯一的
回复人:comanche(太可怕) (2001-6-12 20:43:00) 得0分
没人说句柄是指针来着?
回复人:Wingsun(孙春阳) (2001-6-12 20:48:00) 得0分
句并本来就不是一个指针.
回复人:hlfsoft(海滨鸟) (2001-6-12 20:54:00) 得0分
句柄是指针???
句柄实际是整形类型,是一个标识。
回复人:ThinkX() (2001-6-12 21:38:00) 得0分
大部分句柄是指针,
就是void*,如HDC, HWND等,
由于api是c的,句柄就是其操作的
内存位置的标识
回复人:xycleo(虚竹(和尚)) (2001-6-12 21:52:00) 得0分
是整形的!!
回复人:weenyboy(小公子) (2001-6-12 23:15:00) 得0分
呵呵~ 大家在争论这个话题?句柄在目前windows版本中是个32位的整数,争论它是指针还是整数是没有意义的,因为它们都占用4byte的空间,只不过在c中它通常申明void *类型,看起来象个指针定义而已,在pascal中,它定义位Integer型句柄是标识唯一性的,通常被windows内部作为索引来用,正如comanche说他们说的一样,不过也不排除被作为指针使用的可能
回复人:xrbeck(xiaozi) (2001-6-12 23:43:00) 得0分
我的理解。。比如以前DOS下打开FILE时。会返回一个HANDLE。
这个HANDLE其实是设备程序表中的一个索引。是个整数。
在一个STRUCT的LINK中。。指向一个结构维护着这个FILE的信息。
所以道理上来讲其实也是个指针吧。
回复人:sephil(为什么我还是这么菜) (2001-6-12 23:44:00) 得0分
一般是整型的
不过有时也是指针
回复人:cwpower(知已难求,不醉不归) (2001-6-13 8:36:00) 得0分
多谢大家了
虽然还有些模糊,但已经有感性认识了
我发现我今年最值得庆幸的就是发现了这个论坛
回复人:cwpower(知已难求,不醉不归) (2001-6-13 9:05:00) 得0分
又有人回答了,虽然我很穷了,还是给吧
回复人:dbxmcf(刀板虾米) (2001-6-13 14:32:00) 得0分
to xrbeck(xiaozi):
对,那本书上举的就是这个例子
一般我们都写FILE *fp;
但是这本上写int fp;
我试了,可以的(tc2.0)
*****************************************************************************************