我正在处理预先存在的代码库,我希望用户在运行代码期间随时输入任意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位数字并仅在按下输入时传递?
答案 0 :(得分:4)
a)此处发送的值是虚拟密钥代码,不一定是字符。
b)查看虚拟密钥代码列表here(在评论中给出)。 F1将由VK_F1(0x70)表示。
c)按下数字后,将其添加到包含最后一位数字的字符串中。按任何其他键时,清除该字符串。按Enter键时,根据字符串值进行操作。
编辑:这在WM_KEYDOWN
中会有点复杂,因为您需要同时处理普通数字键和小键盘键。更容易处理WM_CHAR
消息,它接收wParam中的字符代码。