Cod*_*der 1 mouse mfc double-click visual-c++
我有一个应用程序,双击图像视图区域会更改图像视图的布局.单击也会在图像上放置一个点.我的问题是,双击时两个功能都有效.
当然我知道,当双击发生时,控件首先进入LButtonDown.双击时,我不希望点功能工作.我一直在努力工作一个多星期.请帮忙.
解决此问题的最简单方法是构建一个用于处理鼠标点击的有限状态机.基本上,这将是一个单例对象,它从您当前使用的鼠标单击事件中获取输入.它的输出将是SingleClickDetected, DoubleClickDetected, ...
.红色箭头表示您向应用程序的其余部分报告的事件.括号表示您要报告的事件.
当然,这种状态机将不得不被修改,如果你有直接与处理MouseDown
和MouseUp
事件,而不是MouseClick
事件.它会略大,但想法基本相同.
编辑:从评论,看起来Windows没有干净地报告单击和双击,你需要将它们分开.这种情况的状态机:
这可能是你想要做什么矫枉过正,尤其是因为大多数,如果不是在所有的历史上所有基于GUI的计划从来没有过使用双击拖动.它确实显示了基本思想,并展示了如何扩展状态机以处理不同类型的按钮点击.此外,如果您愿意,您可以处理双击右键,包含左右按钮的拖动,或者您可以想到并合并到UI中的任何其他场景.
归档时间: |
|
查看次数: |
6505 次 |
最近记录: |