RegisterClassEx函数返回的ATOM有什么用?

时间:2011-02-03 10:22:23

标签: c winapi system-calls systems-programming

我正在阅读RegisterClassEx函数的文档,发现该函数的返回类型为ATOM

ATOM RegisterClassEx(CONST WNDCLASSEX *lpwcx);

使用CreateWindowEx创建窗口时,我们可以在lpClassName中传递classname或ATOM Class。

那么将ATOM传递给classname有什么意义吗?或者它只是一种替代方式?

感谢。

2 个答案:

答案 0 :(得分:2)

它只是一种替代方式。在引入此API的Windows 3上(如果不是Windows 2.x),字符串比较是缓慢的操作。 ATOM允许频繁创建窗口的速度更快。

答案 1 :(得分:2)

ATOM是字符串的别名,就像系统字符串数组的索引一样。在窗口类的上下文中,它是类名的别名。

所以,这只是做同样事情的另一种方式,但理论上这更有效。

我认为ATOM在使用GetProp / SetProp时更有意义,您可能会在每个处理的Windows消息中查找该字符串。也许你可以通过使用ATOM获得一些性能;无论如何它也很容易使用,你也可以。

有趣的是,ATOM表也是系统范围的,所以如果两个进程注册一个同名的窗口类,它们将收到相同的ATOM值,即使类信息不同。