Требуются самые значимые 8 бит 32-битного значения, так что, например, 0x12345678
становится 0x12
.
Как правило, lParam
будет содержать несколько бит информации иэто становится одним из них.Похоже, что это идентификатор шокового вызова, и два других макроса получат разные биты из lParam
для других целей (идентификатор канала и информация о канале).
C # будет выглядеть примерно так:
uint lParam = 0x12345678; // for testing.
uint callID = (lParam >> 24) & 0xff;
uint chanID = ...; // These depend on where the
uint info = ...; // other bits are in lParam.
Технически, & 0xff
не требуется для этого случая, но будет, если lParam
окажется со знаком int (так как отрицательные числа имеют знак расширения) или со значением больше 32 бит (что маловероятно).