Получение пользовательского ввода из Win32 C ++. WPARAM кастуется как int? - PullRequest
0 голосов
/ 05 декабря 2009

Я работаю над уже существующей кодовой базой и хочу, чтобы пользователь в любое время вводил 1-2 цифры, а затем клавишу ввода во время выполнения кода и передавал это число функции. В настоящее время пользовательский ввод обрабатывается так:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;

    switch (message)
    {
    case WM_KEYDOWN:
        Engine::GetInstance()->GetInput()->GetKeyboard()->SetKeyPressed(static_cast<int>(wParam));
        break;
        //snip

Теперь я не уверен в некоторых вещах,

  • а) Почему нажатие клавиши должно передаваться как целое число, а не как символ?

  • б) Каков будет результат отправки «F1» в этом случае aa и

  • в) Как я могу использовать это, чтобы прочитать 1-2-значный номер и передать его только при нажатии Enter?

1 Ответ

4 голосов
/ 05 декабря 2009

a) Отправленное здесь значение является кодом виртуальной клавиши, а не обязательно символом.

b) См. Список кодов виртуальных ключей здесь (приведено в комментарии). F1 будет представлен VK_F1 (0x70).

в) Когда нажата цифра, добавьте ее в строку, содержащую нажатие последней цифры. Когда любая другая клавиша нажата, очистите строку. Когда нажата кнопка ввода, действуйте на основе строкового значения.

Редактировать : Это будет немного сложно в WM_KEYDOWN, так как вам придется обрабатывать как обычные цифровые клавиши, так и цифровые клавиши. Вместо этого будет проще обрабатывать сообщение WM_CHAR, которое получает код символа в wParam.

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