从Win32 C ++获取用户输入。 WPARAM是否为int?

时间:2009-12-05 01:19:28

标签: c++ winapi input keyboard

我正在处理预先存在的代码库,我希望用户在运行代码期间随时输入任意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

现在,我不确定一些事情,

  • a)为什么keypressed会以整数而不是字符的形式传递?

  • b)在这种情况下发送“F1”的结果是什么aaand

  • c)如何使用此数字读取1-2位数字并仅在按下输入时传递?

1 个答案:

答案 0 :(得分:4)

a)此处发送的值是虚拟密钥代码,不一定是字符。

b)查看虚拟密钥代码列表here(在评论中给出)。 F1将由VK_F1(0x70)表示。

c)按下数字后,将其添加到包含最后一位数字的字符串中。按任何其他键时,清除该字符串。按Enter键时,根据字符串值进行操作。

编辑:这在WM_KEYDOWN中会有点复杂,因为您需要同时处理普通数字键和小键盘键。更容易处理WM_CHAR消息,它接收wParam中的字符代码。