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

时间:2015-03-29 06:23:08

标签: c++ c windows winapi

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

  • 高级GUI框架(Windows窗体,WPF和许多其他第三方框架)
  • 直接操作 - 也可能是高级别
  • 指针输入消息和通知(MSDN link) - 有趣,但键盘API类似物在哪里?
  • DirectInput / XInput - 标记为旧版
  • 原始输入 - 标记为旧版
  • WM_MOUSEMOVEWM_LBUTTONDOWNWM_KEYDOWN等消息 - 标记为传统
  • 其他,列于this MSDN page

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

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

因此,我正在寻找本地最新的低级全功能输入API,其中不会过时即将推出的 Windows 10 ,或者最接近此需求的那些(如上所述)API的混合。

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

1 个答案:

答案 0 :(得分:1)

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

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

关于Windows消息传递API的问题是,每次引入新设备或功能时它都会得到扩展,而且这种设备或功能也会得到一致。任何更高级别的界面最初都可能不完整,然后过时,可能还是基于WinAPI调用。

我已经放弃使WndProc看起来很好,有嵌套开关,多个if ... else等。现在我将它保存在自己的源文件中,它可以将值传递到外部代码。