Windows零基础入门:4.2 获取窗口类信息之查询窗口类名称ID

2015-10-16 15:51:292263人围观会员文章,禁止转载
简介ATOM类型的窗口类ID就对应的注册窗口类的窗口类名称,窗口类结构体中的每一个成员都可以获取和修改。因为ATOM是大家所不熟悉的,前面也没有介绍,这里就花了很大的篇幅来详细介绍了。同时也详细介绍了INT资源ID转换宏MAKEINTRESOURCE的定义和使用方法。
   上一节课《Windows零基础入门:4.1 获取窗口类信息之查询窗口类函数详细介绍》,我们详细介绍了获取窗口类信息的函数的参数等知识。函数的使用很简单,关键是函数背后的技术知识背景,很少有人深入了解过。我们就对此做深入的探讨学习。
   在注册窗口类的时候,在窗口类结构体的成员lpszClassName填写的是窗口类的名称,就是一个字符串。通过这个窗口类名称字符串,我们就可以找到窗口类,进而可以使用窗口类名称来创建一个窗口。
   那么,在窗口类有效的范围内,窗口类名字是唯一的。只要我们用这个窗口类名称来创建窗口,总会创建出这个特定样式的窗口。
   然而窗口类信息注册好后,生成了一个ID,是一个数字,就像一个表格的序号一样的,这个ID的类型就是ATOM类型。我们现在来认识一下ATOM类型。
   ATOM英文是原子的意思,表示最小的意思。我们可以理解为这个类型是Windows中的基本类型,就好像C/C++中的int类型一样。我们看看ATOM类型最根本的数据类型是什么,从语言级别来看。
   在VS2015中,我们查看ATOM的定义,如下:


typedef WORD ATOM;//BUGBUG-might want to remove this from minwintypedef unsigned short WORD;
   对于ATOM,没有找到直接的解释,但是我们通过在VS中查看定义,可以看到这个类型是这么定义的。ATOM时友WORD类型重定义的,而WORD是由unsigned short类型重定义的,所以根本上,ATOM就是unsigned short类型的。然而注释中却标注BUGBUG,并解释说可能将这个类型从minWin系统版本中移除。


   我们可以肯定的是,ATOM是一个整数,至于具体多少位,是哪一种整型类型,我们就不细究了。也没有必要,因为从注释可以看出,这个类型可能会变化,但是一定会是整型类型。知道这些我们就够了。
   这个ATOM类型出现在注册窗口类函数中,是注册窗口类函数的返回值类型。如果注册失败,则返回0,注册成功,则返回一个窗口类的唯一ID。可以说,这个ID和注册的窗口类是一一对应的。
   那么返回的这个ATOM值可以在以下这些函数中使用:
Crea
登陆系统,查看更多

阅读排行