Thandle类型(66分)

  • 主题发起人 主题发起人 千中元
  • 开始时间 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
var
hThread:Thandle;
ThreadID:Dword;
begin
hThread:=createThread(nil,0,@Threadfunc,nil,0,ThreadID);
if hthread=0 then
MessageBox(Handle,'No Thread',nil,MB_Ok);
end;
问题1: 如果form1.handle是form的身份标志,这里单单的句柄类型该怎么 理解? (请结合hthread=0)
问题2:ThreadID “是由windows分配的一个值的变量”
----怎么理解‘windows分配’?
问题3: messageBox(Handle,'....)
-------此Handle是??
 
1. 句柄类型就是句柄类型啊,可以把它看作(只是看作)一个指针.
可以指向一个窗体,一个线程,或是别的什么资源

2. 意思是你用不着替这个参数操心,它其实是个变参, 即函数内
可以改变它的值的,一般情况可以设为0,当然直接传一个DWORD
型变量比较正规,因为你没有给它初值,当然它的值是运行时
系统给的.

3. 是指这段代码里self的Handle,一般是Form的
 
三个问题可以一起回答,其实就是HANDLE的概念

一般在WINDOWS之前,要访问一个对象,典型的是通过指针
pointer --> 一块内存区(某个对象)
但是因为指针容易出错,因而很多对象如window,pen,dc 等以handle方式各给出
handle和对象和指针的关系在于一个表handle pointer的对应表


handle + pointer -->内存区

该表有windows系统维护(而不是任何应用程序),这样给程序员的将是
一个整数的HANDLE ,而不再是危险的指针。
你把handle交给windows api ,它将在表中查找对应的指针,获得系统对象
并相应作出
操作。
从对象角度来说,任何对象都有一个标识,如同人有身份证一样,比起指针
来说也更加容易理解。同时对几乎所有windows对象 无论线程,还是windows,
都可以有一个集中的,一致的管理方式来处理


》》》 问题2:ThreadID “是由windows分配的一个值的变量”
》》》 ----怎么理解‘windows分配’?

表有windows维护,handle有系统自动生成,当然是windows分配


问题3: messageBox(Handle,'....)
-------此Handle是??

handle是你的当前form的


------------------
实际上,handle是windows系统引入的一个重要概念,和DLL,DDE,GUI等一样重要。



 
老千出手好快,下午问完我就查书去了 :-)
 
你把他当成身份证号码就行了!
 
老千的问题,我老答不上。
 
SuperMXX:不急不急!
 
SupperMMX,答不上也给你分
 
superMMX,问个你会的,为什么kang不对而敏哥对?

http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=259098下灌
 
这位老兄没接触过VC吧,呵呵
Handle是一个无符号整数,是windows中每一个对象的唯一标识
 
vc要分大小写,多麻烦.

CreateThread(
lpThreadAttributes: Pointer; {a pointer to a TSecurityAttributes structure}
dwStackSize: DWORD; {initial stack size of the thread in bytes}
lpStartAddress: TFNThreadStartRoutine; {address of the thread routine}
lpParameter: Pointer
{argument of the new thread}
dwCreationFlags: DWORD
{creation flags}
var lpThreadId: DWORD {address of the thread id}

): THandle; {returns the handle of the new thread}
结束.


 

Similar threads

后退
顶部