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

对象是C++的概念,C++的类对象

句柄是Windows SDK的概念,指向某种资源的一种“指针”(有时候底层不一定是指针)

资源ID在MFC里仅仅是一个宏,也就是个整数。

  其实,句柄是控件在数据结构上的外部标识代理,因为不便于通过内存指针暴露(防止用户通过指针越权修改,暴露细节,同时破坏黑盒式的封装)用户,所以便通过一个代理指针,即句柄来代理一个windows对象,可以近似的把句柄理解为一个指针,但是该指针不暴露内存细节,只是一个代理而已。

ID是用户定义的值,句柄是系统生成并管理的。

ID的作用有哪些呢?ID是一个宏  在你创建该组件的时候  由IDE自动生成的。
对于顶级窗口,ID不存在,它的含义变成了HMENU,窗口拥有的菜单句柄。
对于子窗口,ID在创建窗口时就能随意指定,可以相同,也可以不同,可以调用 GetDlgItem 检索ID对应的窗口句柄。但ID在某些特殊情形下有特殊含义,当子窗口是 RADIO 类型时,多个RADIO需要分配相同的ID(且属于同一个GROUP)才被认为是一组单选项,否则这些单选项各自独立。除此之外,ID基本上没有作用。

原文地址:https://www.cnblogs.com/zhanjxcom/p/4428452.html