我正在阅读RegisterClassEx函数的文档,发现该函数的返回类型为ATOM
。
ATOM RegisterClassEx(CONST WNDCLASSEX *lpwcx);
使用CreateWindowEx
创建窗口时,我们可以在lpClassName中传递classname或ATOM Class。
那么将ATOM传递给classname有什么意义吗?或者它只是一种替代方式?
感谢。
答案 0 :(得分:2)
它只是一种替代方式。在引入此API的Windows 3上(如果不是Windows 2.x),字符串比较是缓慢的操作。 ATOM允许频繁创建窗口的速度更快。
答案 1 :(得分:2)
ATOM
是字符串的别名,就像系统字符串数组的索引一样。在窗口类的上下文中,它是类名的别名。
所以,这只是做同样事情的另一种方式,但理论上这更有效。
我认为ATOM在使用GetProp
/ SetProp
时更有意义,您可能会在每个处理的Windows消息中查找该字符串。也许你可以通过使用ATOM获得一些性能;无论如何它也很容易使用,你也可以。
有趣的是,ATOM表也是系统范围的,所以如果两个进程注册一个同名的窗口类,它们将收到相同的ATOM值,即使类信息不同。