与其他鼠标事件不同,双击事件在Windows中是可选的。除非开发人员具体,否则窗口不会接收双击事件选择接收它们(通过使用CS_DBLCLKS样式注册窗口类)。
我想知道为什么是?在启用双击检测时,是否存在性能或兼容性罚款,这就是为什么此设置是可选的?还是不再相关的历史残余了?
基本上,我的问题是,为应用程序中的所有窗口启用此样式是否有缺点?
@jabberwocky指出问题中提供的链接给出了原因。要接收DBLCLK
消息,请注册窗口类以接收它们。
根据目标申请,采取故意注册或不进行DBLCLK
消息是有用的。
对于鼠标操作的应用程序,某种双击功能很常见。注册并处理这些消息。
然而,触摸屏应用是由粗bun的人手指操作,并取决于谁操作触摸屏。此外,几个Windows注册表设置会影响HKEY_CURRENT_USERControl PanelMouse
中的鼠标灵敏度:
DoubleClickHeight (default = 4 on Windows 10)
DoubleClickWidth (default = 4)
DoubleClickSpeed (default = 500)
Width
和 Height
是指允许允许将单击的相距(以像素为单击)被视为"双击"。距离太远,两个快速点击不是双击。如果在触摸屏上需要双击功能,则会增加Width
和Height
。
Speed
是指单击之间的时间(在ms中)被视为双击,前提是两个点击都在Width
和Height
定义的区域内。
触摸屏应用程序通常专用于单个应用程序(例如嵌入式销售点的售货亭)。他们通常会提供不可靠的双击功能,通常应该避免尝试。可以配置嵌入式Windows系统(请参阅上面的注册表设置),以便在主应用程序之外使用双击。但是该应用程序本身根本不会注册(或使用)双击。