gpt4 book ai didi

c++ - 来自 WM_CHAR 的奇怪输入 - WinAPI

转载 作者:行者123 更新时间:2023-11-28 08:20:59 27 4
gpt4 key购买 nike

这是我之前问题的延续:WinAPI: How to process keyboard input in custom edit control我觉得我应该把它放在一个不同的问题中,因为问题的性质有点不同。

所以我的程序现在正在接收输入,但输入有点不正常。最好的解释方式是只向您展示代码和结果...

这是处理 WM_CHAR 的代码:

    case WM_CHAR:
{
TCHAR inc;
inc = MapVirtualKey(wParam, 2);

for(short i = 0; i < sizeof(TCHAR); i++)
{
unsigned char* x = reinterpret_cast<unsigned char*>(&inc);
printf("0x%.2X ", x[i]);
}

//InvalidateRect(t_hwnd, NULL, 0); // Repaint the window...

}
break;

该程序被编译为 unicode,因此所有函数调用默认为其 unicode 变体。

这是输入“asdf”的结果:

0x31 0x00 0x00 0x00 0x34 0x00 0x36 0x00
TCHAR 的大小为 2 个字节,因此结果为“1\046”

有人知道这是怎么回事吗?

最佳答案

MapVirtualKey 接受键的扫描码。但是 WM_CHAR 中的 wParam 不是扫描码——它是一个字符。你应该用WM_KEYDOWN,wParam里面有个扫码。

给你的链接:

http://msdn.microsoft.com/en-us/library/ms646280(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/ms646276(v=vs.85).aspx

关于c++ - 来自 WM_CHAR 的奇怪输入 - WinAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5845204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com