Я хочу создать свой собственный LPARAM для передачи в win32-функцию GetKeyNameText (), (первый параметр принимает переменную LPARAM).
Может показаться, что делать что-то нелегко, но это работаиз-за того, что у меня нет определенного количества информации, а также работа на уровне битов, ДЕЙСТВИТЕЛЬНО сбивает меня с толку, поэтому я хочу ознакомиться с этим.
Итак, что я хочу добавить в мою переменную LPARAM:установить 16-23 бита для клавиатуры. Код сканирования: у меня есть код сканирования, я просто не знаю, как бы я скомбинировал его в 32-битную переменную?- установить 24-й бит в флаг расширенного ключа (я пока не знаю, как получить это, пока как в одиночку, как объединить его в 32-битную переменную) - установить 25-й бит в бит безразличия, чтобы мне было все равно - так бы яустановите этот бит на 1?
Так что я понимаю, как работают двоичные файлы и биты ... Я думаю, это поразительно, я понимаю понятия более высокого уровня lvl, такие как полиморфизм, но не низкоуровневое компьютерное оборудование: P
Итак, у меня есть 32-битная (или байтовая?) Переменная, значит ли это, что у меня есть 32 0 и 1: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ИЛИ У меня есть переменная, такая как XXXXXX, например, 100011 (что составляет 35), где последнее число равно 2 ^ 0(так 1), затем 2 ^ 1 (2), затем 2 ^ 2 (4), .... затем, наконец, 2 ^ 5 (32).
Итак, чтобы создать свой LPARAM, я бы сделал это:
DWORD scanCode = 0x??; // a DWORD is a 32bit var, but the scan code is only 7 bits long?
bit extFlag = 1; // now is there a bit variable? How can I find out the extended-key flag also?
bit careBit = 1;
//Now to combine it all would I do this?
DWORD myLParam = scanCode & extFlag & careBit;
// OR
LPARAM myLParam = scanCode & extFlag & careBit;