API和Delphi的句柄都有哪些种类, 他们之间在概念上和应用上有什么区别, 如何转化? 请问哪里有详细讲述句柄的文章?谢谢!

解决方案 »

  1.   

    Api中的句柄和Delphi中的是一样的,Delphi中从TWinControl继承下来的都有句柄,句柄是系统的标识
      

  2.   

    哦, 可是具体又什么区别, 又各自有什么用呢? 比如说:
    int SetBkMode(
        HDC hdc,   // handle of device context
        int iBkMode   // flag specifying background mode
       );
    我用SetBkMode(DBGrid1.Handle, TRANSPARENT); 就没反映. 函数要求的是HDC类型, 而DBGrid1.Handle返回的是HWND类型, 类型不匹配.WindowsAPI中像HDC, HWND这样的句柄都有哪些, 它们都有什么区别, 相互之间又应该如何转化? Delphi中用THandle把它们都包括进去了, 可使用起来还是显得不太兼容呀, 例如本例. 请高手能借这个问题展开, 讲讲API中的句柄... (谢谢了! 发言就有分! 分不够再补!)
      

  3.   

    HDC是绘画设备的handle,句柄是长整型数
    THandle也是长整型,你找它的定义就知道了
      

  4.   

    API 句柄是对系统内部对象指针的包装,避免了用户直接使用那些内部对象可能带来的问题。
    我有个同学说得很有意思,说句柄就是那些东西的把柄,拿住了那些把柄就可以用这些东西干活了。Windows 的句柄都是无符号整形数,不管是HDC 还是窗体的Handle,所以Delphi 直接用一个THandle就说完了。在Windef.h 里面有这样一个定义:DECLARE_HANDLE(HDC);这个DECLARE_HANDLE 是一个宏,在Winnt.h 下我们可以看到,它的含义是
    #define DECLARE_HANDLE(name) typedef HANDLE name而HANDLE 是什么呢?
    typedef void *HANDLE;这样我们就可以看到,其实一个HDC 不过就是一个指针而已,或者我们可以说,HDC不过是32 位的无符号整数而已。同样的,我们也可以看到,HWND 是一个16位的无符号整形数。这样的描述,不知道对你有没有帮助
      

  5.   

    HDC是设备环境字
    虽然也是handle但是和一般说的句柄是不同的。
    同意huojiehai(海天子)说的,handle是系统的标识,据我理解可能映射到进程地址。
    HDC在这点上和HWND不同
      

  6.   

    HWND指能够用于窗口句柄(要不然怎么叫HWND=Handle of window)
    THandle则没有多大限制。文件句柄,钩子句柄等都可以用THandle