unit aa
interface
   
   ...
function showcalendar(AHandle:THandle;ACaption:String);TDateTime;stdcall;
   ...implementationfunction showcalendar(AHandle:THandle;ACaption:String);TDateTime;
...
   Application.Handle:=AHandle;
...请问AHandle是个什么类型的句柄?(书上好像是讲应用程序的句柄)是当前所在应用程序的句柄吗?还是所在模块的句柄?
另外:HInstance不也是应用程序的句柄吗?这之间有什么区别?
还请高手指点,谢谢!

解决方案 »

  1.   

    如果你看一下VC中的一些东西或者Delphi的帮助,对这里的应该比较容易理解
    HInstance在VC中的类型是HInstance,表示应用程序或者Dll模块的实例句柄
    而THandle一般是窗口的的句柄,如Form, Button,ListBox等,
    针对Application来说,这两个变量的含义也是不一样的
    Application.Handle是应用程序主窗口的名柄,即MainForm.Handle
    HInstance是HInstance contains the instance handle of the application or library as provided by the Windows environment
      

  2.   

    你可以认为THandle就是Windows API里面的HANDLE。其实呢,它就是一个LongWord。
      

  3.   

    Application.Handle即程序在操作系统中的标识,一个LongWord型的数字。
      

  4.   

    你这里所说的AHandle是应该是指调用这个dllForm的那个窗口的句柄.
      

  5.   

    和windows api打交道的时候用到的,由于用delphi编程一般都是通过vcl类封装的,很少直接和windows api打交道,所以很少用到这个句柄
      

  6.   

    句柄,标识一个WINDWOS对象的LongWord型
      

  7.   

    句柄,标识一个WINDOWS对象的LongWord型
      

  8.   

    偶到是认为想要深入学习编程,提高自己的水平必须对句柄,实例,对象等的本质有比较深入的了解,而在这些方面DELPHI的帮助资料显得有些不够,建议多看看VC一些帮助,对于理解这些个东西是很有帮助的。个人愚见。
      

  9.   

    句柄的概念,恐怕还是接触过VC的人才会有深刻的理解。简单的说,Handle就是一个LongInt。
    由Windows系统管理的一些对象,比如窗口,菜单,应用程序等等,用户的应用程序可能需要使用这些对象,但是如果Windows系统简单的把指向这些对象的指针交给程序员,就像爱捣蛋的C程序员经常干的那样,这些程序员可能会通过这些指针,有意无意的破坏系统数据,导致整个系统出问题。
    所以不能直接把这些系统对象的指针交给程序员,windows系统自己维护了一个表,用Handle来唯一标示这些系统对象,程序员通过调用API,传递Handle来操纵这些系统对象,Windows内部再通过这些Handle找到实际的系统对象,然后进行相应的操作。
    这就避免了让程序员直接接触系统对象内存指针的可能。说白了,Handle就是所有由Windows系统管理的对象的一个身份证号码。
      

  10.   

    Handle就是一个LongInt。说白了,Handle就是所有由Windows系统管理的对象的一个身份证号码。