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

5

在Windows 8.1中有许多用户交互API/技术可用:

  • 高级GUI框架(Windows Forms,WPF和许多其他第三方框架)
  • 直接操作 - 可能也是高级的。
  • 指针输入消息和通知(MSDN链接) - 有趣,但键盘API类比在哪里?
  • DirectInput / XInput - 标记为遗留
  • 原始输入 - 标记为遗留
  • WM_MOUSEMOVEWM_LBUTTONDOWNWM_KEYDOWN等消息 - 标记为遗留
  • 其他,请参见此MSDN页面

有人能简要概述这些API并揭示以下方面(每个API):

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

因此,我正在寻找最接近这些需求的本机最新低级全功能输入API或其混合版本(上述描述),并且不会在即将到来的Windows 10中过时。

有人能制作一种比较表吗?


微软的文档从来都不是特别完整或正确。但是把它的营销信号视为重要的可能是有效的,因为这种印象通常是由技术作家传达的,无论是有意还是无意的。微软花费了两个Windows版本、一堆投诉和可能日益减少的销售额才重新引入开始菜单,而且据我所知只是半心半意地(我还没有使用过Windows 10)。就在那场灾难之前,市场上出现了降级Windows的趋势,这迫使微软修复了Vista的一些过度问题。 - Cheers and hth. - Alf
无论如何,你所说的“这个API”是什么意思?请明确一点。你列出了很多API,并询问一个未指定的特定API - 是哪一个? - Cheers and hth. - Alf
通过“此 API”,我指的是“我上面给出的列表中的每个 API”。 - Injector
仅仅因为某些东西被标记为“遗留”,并不意味着它会消失。Windows 10需要运行数百万已经存在的使用这些方法的应用程序。 - Retired Ninja
并不是真的。其他输入机制被标记为遗留,因为它们面向使用键盘和鼠标的桌面应用程序,而不是微软在Windows 8及以上版本中推出的触摸界面。我很惊讶没有键盘输入机制被标记为遗留(触摸键盘没有API吗?我在那个列表上没看到...)。当涉及到原始键盘和鼠标输入时,你真的不能比WM_MOUSExxxWM_KEYxxx消息更低级了,除非直接钩入键盘驱动程序。这仍然是100%正确的。 - andlabs
显示剩余2条评论
1个回答

1
指针输入消息和通知似乎是已知的消息循环的扩展,以支持多点触摸设备。您可以轻松地将其与标准键盘消息集成,以获得完整功能的API。正如Retired Ninja所指出的那样,消息传递API很可能比大多数“现代”API更加持久。
我会避免使用任何新的花哨技术,因为这些范例似乎来了又去。使低级输入处理程序变得轻量化、松耦合和标准化将有助于您的程序保持可维护性。
关于Windows消息API的事情是,每次引入新设备或功能时都会进行扩展,这就是它的连贯性。任何更高级别的接口都可能首先不完整,然后过时,并且很可能基于WinAPI调用。
我已经放弃了让WndProc看起来漂亮的想法,包括嵌套的switches、多个if...else等等。现在我将其保存在自己的源文件中,在那里它可以执行将值传递给外部代码的肮脏工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接