1

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

ATOM RegisterClassEx(CONST WNDCLASSEX *lpwcx);

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

那么将 ATOM 传递给 classname 有什么意义吗?还是只是另一种方式?

谢谢。

4

2 回答 2

3

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

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

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

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

于 2011-02-03T11:22:10.173 回答
2

它只是另一种方式。在引入此 API 的 Windows 3 上(如果不是 Windows 2.x 甚至),字符串比较是缓慢的操作。ATOM 允许相当频繁地创建窗口以更快地进行。

于 2011-02-03T11:15:58.700 回答