句柄就是windows下的32位无符号的一个整形量,是系统的对象的标志。

解决方案 »

  1.   

    看看这个关于句柄的讨论:*********************************************************************************
    主  题:我看句柄这个概念满天飞,但却不很清楚到底是个什么东西,请大家来扶扶贫吧!!
    作  者: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)  
    *****************************************************************************************