MFC中对象、句柄、ID之间的区别

MFC中的所有对象也就是C++中的对象,为什么有个窗口对象还要窗口句柄呢?还有什么线程句柄,甚至还有控件ID和进程ID呢?下面一一道来:

MFC中的对象,比如应用程序对象,视图对象等,是对象就会占用内存空间,我们就可以用指针指向此对象进行访问,但windows还提供了句柄访问,初看好像有点多余,实则不然。如果我们一个进程想访问另一个进程,根据对象指针访问就不行了。我们现在的Windows是一个完全保护的系统,应用程序工作于CPU的保护模式下,引入了虚存技术。每个进程拥有独立的4GB的地址空间,所以在应用程序中的地址是自己眼中的地址,不具有通用性。

那么两个进程就不能简单地传个地址就行了,窗体句柄就是windows内核的一种数据结构,不同窗体(可以是不同进程的不同窗体)有不同的窗体句柄,windows通过句柄可以识别不同的窗体对象。

那么进程句柄也是全局唯一的么?非也!进程句柄也是在本进程内有效,由创建进程或者打开进程时得到的句柄。进程ID才是全局唯一的。

那么控件ID是全局唯一的么?也不是!控件ID代表一个资源,很多时候就是代表一个资源所在的路径及资源名。

 

http://blog.csdn.net/solomon1/article/details/2027158#comments

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值