MVV
|
Posted: Fri Oct 21, 2022 23:15 Post subject: |
|
|
Вообще, есть определенные диапазоны сообщений, и лучше придерживаться их. Указаны, например, тут.
Коды 0x0000 .. 0x03FF - для системных сообщений, сюда лучше не лезть.
Сообщения в диапазонах 0x0400 (= WM_USER) .. 0x7FFF и 0x8000 (= WM_APP) .. 0xBFFF - для идентификаторов элементов и пользовательских классов окон (т.е. классов окон тотала). В этом диапазоне лежат тоталовские WM_USER+50 и WM_USER+51, но могут быть и другие коды, используемые элементами в Delphi/Lazarus. По идее, в этом диапазоне должно быть довольно безопасно использовать старшие номера, т.к. шанс, что элементы тотала начнут их использовать, мал, а кроме них эти номера никто не должен использовать.
Диапазон 0xC000 .. 0xFFFF - для уникальных идентификаторов, регистрируемых вызовом функции RegisterWindowMessage. Эта функция предназначена для регистрации кодов, уникальных для всех окон системы, каждый её вызов для одной и той же строки возвращает тот же код, и вызовы для разных строк возвращают разные коды (думаю, если коды закончатся, функция начнёт возвращать ошибку). По идее, эти диапазоны нужны для резидентных утилит, взаимодействующих с окнами (или может быть для того, чтобы некоторая утилита могла принимать команды от других процессов без фиксации числовых кодов), и с командами самого тотала они пересекаться не будут (в пределах одного процесса удобнее фиксировать номера). В TCFS2 есть возможность отправки сообщений с такими кодами через функцию regmsg.
Насколько я понимаю, коды выше 0xFFFF официально не поддерживаются, т.к. изначально параметр кода сообщения был 16-битным, поэтому там никто ничего не гарантирует. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|