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