关于HInstance和Handle的区别。。。 ( 积分: 10 )

  • 主题发起人 主题发起人 javesun
  • 开始时间 开始时间
J

javesun

Unregistered / Unconfirmed
GUEST, unregistred user!
关于HInstance和Handle的区别。。。<br>我只知道Handle是句柄,而HInstance是Application或Library的Handle。<br>他们两者有什么具体的区别吗?<br>不要拿Delphi Help说事。。。
 
关于HInstance和Handle的区别。。。<br>我只知道Handle是句柄,而HInstance是Application或Library的Handle。<br>他们两者有什么具体的区别吗?<br>不要拿Delphi Help说事。。。
 
handle都只是一个标记而已嘛,使人们能够通过它找到它标记的对象,具体表示的是什么,或者说里面存者什么值,如何根据这个值找到目标对象,这些都是操作系统内部实现的细节。具体我也不太清楚。<br>不过想起来,handle都是可以在不同进程间传递的,肯定不是指针之类的东西。应该操作系统会有一些全局的数据结构,用来标示进程窗口之类的东西,而handle应该是里面的索引。<br><br>继续查查资料了
 
当你启动一个程序时,操作系统会给这个程序起一个名字,这个名字就叫 Handle。<br>当你启动一个程序时,操作系统会将这个程序装载到某个内存空间,这个空间的起始地址就是HInstance。在 NT 系统这个 HInstance 一般都是 400000h。
 
Handle是操作系统用来标识一个对象的全局指针 它是全局的也是唯一的
 
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)<br><br>hInstance 是本程式的 handle ,或者可以稱作 PID (Process ID),hInstance 所存儲的數值是唯一的。 HINSTANCE 是特殊的 windows handler ,負責儲存主程式父視窗 (parent window) 的 handle
 
to jb99334:<br>父視窗 (parent window) 的 handle还是handle啊,和前面的有什么差别吗?
 
个人认为,HInstance与Handle是一回事,其实际类型均为Cardinal
 
to xrs:<br>可是实际的应用上,通用的好象没有几个。不能通用的有很多哦。。
 
HInstance是代码所在模块(EXE/DLL)的句柄.也是一种Handle.<br>就比如我们LoadLibrary装入DLL,返回的DLL句柄等同于该DLL的HInstance
 
当你创建一个可以获得windows消息的控件时这个控件就会获得一个Handle&lt;句柄&gt;,delphi中只有继承于TWinControl的才有这个属性.<br>HInstance正如gzgzlxg所说的:.......这个空间的起始地址就是HInstance。在 NT 系统这个 HInstance 一般都是 400000h。<br>这点在开发人员指南中的关于DLL章节有介绍,里面说可以通过{$IMAGEBASE }修改DLL的HInstance使得多个进程共享一个DLL映象,具体使用情况查看delphi help中的image base addresses(这可是书上的^_^)
 
&lt;&lt;Delphi5 开发人员指南&gt;&gt;这本书偶有电子版的,可是没有仔细看到后面,[:(]<br>一会再仔细看看。。。
 
还是没有看明白。。。。
 

Similar threads

S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部