现代Windows输入API /用户交互API

Inj*_*tor 5 c c++ windows winapi

Windows 8.1中提供了各种各样的用户交互API /技术:

  • 高级GUI框架(Windows窗体,WPF和许多其他第三方框架)
  • 直接操纵 - 也可能是高级操作.
  • 指针输入消息和通知(MSDN链接) - 有趣,但键盘API模拟在哪里?
  • DirectInput/XInput - 标记为遗留.
  • 原始输入 - 标记为遗产.
  • WM_MOUSEMOVE,WM_LBUTTONDOWN,WM_KEYDOWN,等消息- 标记为遗产.
  • 其他,在此MSDN页面上列出

任何人都可以给我一个这些API的简要概述,并揭示以下几个方面(对于每个方面):

  • 此API是基于另一个底层API还是在核心中实现的?
  • 这个API可以与哪些设备进行交互?
  • 任何独家功能,未在其他API中实现?
  • 性能/开销考虑因素:它的速度有多快(与其他人相比)?

所以我正在寻找原生的最新低级全功能输入API,它不会在即将推出的Windows 10中过时,或者是最接近这种需求的那些(如上所述)API的混合.

任何人都可以制作某种比较表吗?

小智 1

指针输入消息和通知似乎是众所周知的消息周期的扩展,以支持多点触控设备。您可以轻松地将其与标准键盘消息集成,以获得功能齐全的 API。正如 Retired Ninja 指出的那样,消息传递 API 可能比大多数“现代”API 更耐用。

我会避免任何与标准 WinAPI 不同的奇特新技术,因为这些范例似乎来了又去。使低级输入处理程序变得精简、松散耦合和标准化将有助于您的程序保持可维护性。

Windows 消息传递 API 的特点是,每次引入新设备或新功能时,它都会得到扩展,而且这几乎是一致的。任何更高级别的接口一开始都可能是不完整的,然后就过时了,并且可能无论如何都基于 WinAPI 调用。

我已经放弃让 WndProc 看起来漂亮,使用嵌套开关、多个 if...else 等。现在我将它保留在自己的源文件中,在那里它可以完成将值传递给外部代码的肮脏工作。