Правильно ли разделен этот LPARAM сейчас? - PullRequest
0 голосов
/ 10 августа 2011

Я изучаю значение LPARAM, когда получаю событие WM_KEYDOWN.Но я не уверен, что правильно проверяю первые 16 битов, затем следующие 8 битов и так далее.Вот как MSDN объясняет, что LPARAM организован для сообщения WM_KEYDOWN: http://msdn.microsoft.com/en-us/library/ms646280(v=vs.85).aspx

Правильно ли введен мой бит?

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

Вот, пожалуйста.

void outputLParam( LPARAM lParam )
{
    printf("Repeat Count        : %d\n", (lParam) & 0xFFFF);      // print the value of the 1st 16 bits
    printf("Scan Code           : %d\n", (lParam >> 16) & 0xFF);  // print the value of the next 8 bits
    printf("Extended Key        : %d\n", (lParam >> 24) & 0x1);   // print the value of the next bit
    printf("Reserved            : %d\n", (lParam >> 25) & 0xF));  // print the value of the next 4 bits
    printf("Context             : %d\n", (lParam >> 29) & 0x1);   // print the value of the next bit
    printf("Prev Key State      : %d\n", (lParam >> 30) & 0x1);   // print the value of the next bit
    printf("Transition Key State: %d\n", (lParam >> 31) & 0x1);   // print the value of the next bit
}
0 голосов
/ 12 августа 2011

Как я уже ответил в вашем предыдущем вопросе , вы действительно должны объявить свою собственную структуру . Это гораздо более согласованно и менее подвержено ошибкам. Это просто имеет больше смысла для этой конкретной ситуации и в полной мере использует конструкты языка. Здесь нет необходимости выполнять битовую арифметику.

РЕДАКТИРОВАТЬ: Тем не менее, решение Антона является правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...