gpt4 book ai didi

visual-c++ - 区分单击和双击 C++

转载 作者:行者123 更新时间:2023-12-05 08:34:56 27 4
gpt4 key购买 nike

我有一个应用程序,在其中双击 ImageView 区域会更改 ImageView 的布局。同样在单击时,一个点将被放置在图像上。我的问题是,双击时这两个功能都有效。

我当然知道,当双击发生时,控件首先转到 LButtonDown。我不希望点功能在双击时起作用。我已经为此工作了一个多星期。请帮忙。

最佳答案

解决这个问题的最简单方法是构建一个 finite-state machine用于处理鼠标点击。基本上,这将是一个单例对象,它从您当前使用的鼠标单击事件中获取输入。它的输出将是 SingleClickDetected, DoubleClickDetected, ...。红色箭头表示您要向应用程序的其余部分报告的事件。括号表示您要报告的事件。

FSM

当然,如果您必须直接处理 MouseDownMouseUp 事件,而不是 MouseClick,则必须修改此状态机事件。会稍微大一点,但是思路基本一样。

编辑:从评论来看,Windows 似乎没有清楚地报告单击与双击,您需要将它们分开。这种情况的状态机: FSM2

这对于您尝试做的事情来说可能有点矫枉过正,特别是因为历史上大多数(如果不是全部)基于 GUI 的程序从未曾经使用过双击拖动。它确实展示了基本思想,并展示了如何扩展状态机以处理不同类型的按钮点击。此外,如果您愿意,您可以处理双击右键、涉及左右按钮的拖动,或者您可以想到并纳入您的 UI 的任何其他场景。

关于visual-c++ - 区分单击和双击 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15226791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com