C++ 捕获文本类型输入的最佳方法?

C++ 捕获文本类型输入的最佳方法?,c++,windows,winapi,directx-9,C++,Windows,Winapi,Directx 9,我最近一直在努力获取文本类型输入(例如,在搜索栏、消息栏等中键入内容) 我已尝试使用GetAsyncKeyState(0x1)的最低位,但这不会按我希望的方式工作。它的速度很慢,几乎不记录击键。我有一个带有标准m_键数组的键盘类,在这里你只需做ifm_键[vkey],但那太快了。因此,我尝试使用GetTickCount()限制它,并检查GetTickCount()是否大于或等于laststrope。这比0x1稍微好一点,但它仍然没有注册一些击键 你的建议是什么 (请注意,这不是控制台应用程序,它

我最近一直在努力获取文本类型输入(例如,在搜索栏、消息栏等中键入内容)

我已尝试使用
GetAsyncKeyState
(0x1)的最低位,但这不会按我希望的方式工作。它的速度很慢,几乎不记录击键。我有一个带有标准m_键数组的键盘类,在这里你只需做if
m_键[vkey]
,但那太快了。因此,我尝试使用
GetTickCount()
限制它,并检查
GetTickCount()
是否大于或等于
laststrope
。这比0x1稍微好一点,但它仍然没有注册一些击键

你的建议是什么


(请注意,这不是控制台应用程序,它是DirectX9应用程序)

您不能只使用
WM\u CHAR
WM\u KEYDOWN
?它们甚至可以在DirectX应用程序中工作。@JonathanPotter我切换到使用SetWindowsHook(WH_键盘和KeyHook),这是我的KeyHook回调:我如何将代码转换为字符?你没有正常的消息循环吗?如果您正在调用
TranslateMessage
@JonathanPotter,您的焦点窗口将获得已转换为字符的键盘消息。哦,我不知道,是的,我的窗口有一个正常的窗口进程,但是如何从中提取字符?谢谢你的帮助!但是该死的,在我的WindowProc中这样做只会给我的所有其他类带来麻烦:/在你调用
GetMessage
,调用
TranslateMessage
之后,你的WindowProc将得到
WM\u CHAR
消息。你不能只使用
WM\u CHAR
WM\u KEYDOWN
?它们甚至可以在DirectX应用程序中工作。@JonathanPotter我切换到使用SetWindowsHook(WH_键盘和KeyHook),这是我的KeyHook回调:我如何将代码转换为字符?你没有正常的消息循环吗?如果您正在调用
TranslateMessage
@JonathanPotter,您的焦点窗口将获得已转换为字符的键盘消息。哦,我不知道,是的,我的窗口有一个正常的窗口进程,但是如何从中提取字符?谢谢你的帮助!但是该死的,在我的WindowProc中这样做只会为我的所有其他类做准备:/在你调用
GetMessage
,调用
TranslateMessage
之后,你的WindowProc将得到
WM\u CHAR
消息。