社区
PowerBuilder
帖子详情
哪位能很好的的解释一下句柄的概念
bingofuel
2002-11-08 11:12:43
我是初学者,对句柄不是很了解,希望高人给个明白的解释,谢谢
...全文
31
5
打赏
收藏
哪位能很好的的解释一下句柄的概念
我是初学者,对句柄不是很了解,希望高人给个明白的解释,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
billxia
2002-11-09
打赏
举报
回复
你可以找一本大概叫: 《Windows 技术内幕》 的书来看,上面使用了200页关于各种对象的句柄所指向的数据结构的详细介绍。好像是95年出版的
billxia
2002-11-09
打赏
举报
回复
句柄:win 系统中用来表达一个对象的内存起始地址的变量,内存中的对象一般是一个特殊的数据结构,这个结构可以是数据(字符串对象),或者句柄集合(窗口对象).
右:对象和数据结构就不用我解释了吧
bingofuel
2002-11-08
打赏
举报
回复
谢谢二位!
megnet
2002-11-08
打赏
举报
回复
是用tree控件么?
在tree控件里,每一个项目都称之为1个treeitem对象,既然是对象就有属性和函数了.为了标志这个treeitem对象,就用1个阿拉伯数字来标志,这个数字就叫句柄.
balloonman2002
2002-11-08
打赏
举报
回复
VC编程基础——句柄篇
作者:贾旭滨 来自:重庆大学光电工程学院
句柄概念在WINDOWS编程中是一个很重要的概念,在许多地方都扮演着重要的角色。但由此而产生的句柄概念也大同小异,比如:
<<Microsoft Windows 3 Developer's Workshop>>(Microsoft Press,by Richard Wilton)一书中句柄的概念是:在Windows环境中,句柄是用来标识项目的,这些项目包括:
*.模块(module)
*.任务(task)
*.实例(instance)
*.文件(file)
*.内存块(block of memory)
*.菜单(menu)
*.控制(control)
*.字体(font)
*.资源(resource),包括图标(icon),光标(cursor),字符串(string)等
*.GDI对象(GDI object),包括位图(bitmap),画刷(brush),元文件(metafile),调色板(palette),画笔(pen),区域(region),以及设备描述表(device context)。
WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。
在<<WINDOWS编程短平快>>(南京大学出版社)一书中是这么说的:句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。
从上面的2个定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。在WINDOWS编程中会用到大量的句柄,比如:HINSTANCE(实例句柄),HBITMAP(位图句柄),HDC(设备描述表句柄),HICON(图标句柄)等等,这当中还有一个通用的句柄,就是HANDLE,比如下面的语句:
HINSTANCE hInstance;
可以改成:
HANDLE hInstance;
上面的2句语句都是对的。
一个WINDOWS应用程序可以用不同的方法获得一个特定项的句柄。许多API函数,诸如CreateWindow,GlobalAlloc,OpenFile的返回值都是一个句柄值。另外,WINDOWS也能通过应用程序的引出函数将一个句柄作为参数传送给应用程序,应用程序一旦获得了一个确定项的句柄,便可在WINDOWS环境下的任何地方对这个句柄进行操作。其实句柄的大量使用已经影响到了每一个WINDOWS的程序设计。
句柄只有当唯一的确定了一个项目的时候,它才开始有意义。句柄对应着项目表中的一项,而只有WINDOWS本身才能直接存取这个表,应用程序只能通过API函数来处理不同的句柄,举个例子来说吧!比如:我们可以为我们的应用程序申请一块内存块,通过调用API函数GlobalAlloc,来返回一个句柄值:
hMem=GlobalAlloc(......);
其实现在hMem的值只是一个索引值,不是物理地址,应用程序还不能直接存取这块内存。这儿还有一个话外题,就是,一般情况下我们在编程的时候,给应用程序分配的内存都是可以移动的或者是可以丢弃的,这样能使有限的内存资源充分利用,所以,在某一个时候我们分配的那块内存的地址是不确定的,因为他是可以移动的,所以得先锁定那块内存块,这儿应用程序需要调用API函数GlobalLock函数来锁定句柄。如下:
lpMem=GlobalLock(hMem);
这样应用程序才能存取这块内存。
我想现在大家已经能对句柄概念有所了解了,我希望我的文章能对大家有所帮助。其实如果你学过SDK编程,那对句柄的概念理解会更好,更深。如果你是直接学VC6的MFC编程的,建议你看一下SDK编程,这会对你大有好处。
句柄
是什么
句柄
(Handle)是一个是用来标识对象或者项目的标识符,可以用来描述窗体、文件等,值得注意的是
句柄
不能是常量。 Windows之所以要设立
句柄
,根本上源于内存管理机制的问题,即虚拟地址。简而言之数据的地址需要...
Linux文件
句柄
泄漏
在 Linux 平台上运行的进程都会从系统...
句柄
是在 Windows 中引入的一个
概念
,它是和对象一一对应的 32 位无符号整数值。
句柄
可以映射到唯一的对象,它是处理对象的一个接口,对于所涉及的对象,可以通过相应的
句柄
来操
C++:关于函数
句柄
含义的解释
句柄
概念
在WINDOWS编程中是一个很重要的
概念
,在许多地方都扮演着重要的角色。但由此而产生的
句柄
概念
也大同小异,比如:<<Microsoft Windows 3 Developer's Workshop>>(Microsoft Press,by Richard ...
Matlab自学笔记:
句柄
、函数
句柄
、图像
句柄
(
概念
、用法、原理和区别)
句柄
作为一种变量,它的特殊性在于,它指向的不是一个简单具体的值,而是一个结构体,这个结构体包含了很多可以读写的分支数据,一般称为属性或者方法,例如图窗类的
句柄
;函数
句柄
,它虽然也称为
句柄
,但用法上,...
matlab 函数
句柄
详解
MATLAB中的函数
句柄
是一个非常重要的
概念
,可以让我们更加灵活地使用函数,并且可以提高代码的可读性和可维护性。MATLAB中的匿名函数就是一个简单的使用函数
句柄
定义的函数。通过使用匿名函数,我们可以方便地定义...
PowerBuilder
1,077
社区成员
66,438
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章