Какая польза от ATOM, возвращаемого функцией RegisterClassEx?
-
28-10-2019 - |
Вопрос
Я читал документацию по RegisterClassEx и обнаружил, что возвращаемый тип функции - ATOM
.
При создании окна с использованием кода CreateWindowEx
мы можем передать имя класса или класс ATOM в lpClassName.
Так есть ли смысл передавать ATOM вместо имени класса?или это просто альтернативный способ?
Спасибо.
Решение
ATOM
- это псевдоним строки, например индекс системного массива строк.В контексте оконных классов это псевдоним имени класса.
Итак, это просто другой способ сделать то же самое, но теоретически он более эффективен.
Я думаю, что использование ATOM имеет больше смысла, так это в GetProp
/ SetProp
, где вы можете искать эту строку для каждого обработанного сообщения Windows.Может быть, вы сможете повысить производительность, используя ATOM;в любом случае им так легко пользоваться, что и вы тоже можете.
Интересно, что таблицы ATOM также являются общесистемными, поэтому, если два процесса зарегистрируют класс окна с одинаковым именем, они получат одинаковое значение ATOM, даже если информация о классе будет разной.
Другие советы
Это просто альтернативный способ.В Windows 3, где этот API был представлен (если не в Windows 2.x даже), сравнение строк было медленным.ATOM позволял довольно часто создавать окна намного быстрее.