我想,上面的用的那种办法,是这样的原理:记录上一次的按键状态,这样做的话,首先依赖的是左键单击一次与右键单击一次,这样在扫雷游戏当中,根本不可能把同时按下与左键或是右键的事件分开来呢??有什么api可以用呢??

解决方案 »

  1.   

    我在想着是不是可以这样即加入一个TIMER控件,当鼠标左键(右键)按下时开始记时,鼠标右键(左键)按下时停止记时,如果时间小于某一个值(一个很小的值),那么就执行程序。没有试验,不知道可不可以这样。
      

  2.   

    这种想法不行。还不如我上面用的那种方法。因为左键单击与右键单击都是扫雷中要用到的事件。显然你的这种想法将这几个事件混在一起了。没能分开得来。
    我想只有这样了:1:在程序运行过程中加载一个hook,实时调用一个函数检测的状态(左键,右键)
       (1) 如果在一个很小的时间内同时检测到了两个都处于按下的状态,那么就认为是同时按下事件。
       (2) 如果时间跨度超过了,就认为是按下左键(或是右键) 但是,如此怎么具体实现叱??
      

  3.   

    首先如果左键不松开而只按动右键也是正确的,所以不能按照时间来判断左键按下flag1=true,松开=false
    右键按下flag2=true,松开=false
    这样可以在某一个键按下的时候检测另一个按键的状态,如果 左键按下 那么
       flag1=true
       如果 右键按下了 那么
          跳过
       如果 右键没有按下 那么
          执行左键按下事件
       
    结束如果 右键按下 那么
       flag2=true
       如果 左键按下了 那么
          认为是用户想轰开
       如果 左键没有按下 那么
          咬他
    ...
      

  4.   


    有必要吗?
      If Button = 3 Then
        Print "DblClick"
       end if
    我写了一个扫雷的游戏,运行的很好,没有必要研究这个。
      

  5.   

    其实我是想和windows下的扫雷一模一样的,我上面那们老兄的扫雷肯定不和它一样吧!!