正在制作一个扫雷游戏,现在对于鼠标事件判断的逻辑产生了问题,目前需要区分的鼠标点击事件有三个——鼠标左键单击一次、鼠标右键单击一次、鼠标左右键一起单击一次,但第三个必定会触发第一个或者第二个,问题初步认为是因为鼠标左右键不可能真正做到同时按下和放开,请问有没有更好的逻辑实现他们的区别?
现在逻辑如下:
鼠标左键单击逻辑(上次鼠标左键按下+右键未按下+当次鼠标左键未按下+当次右键未按下)
if ((lastMsg.mkLButton) && (!(lastMsg.mkRButton)) && (!(newMsg.mkLButton)) && (!(newMsg.mkRButton))//仅左键单击后放开
{
;
}
鼠标右键单击逻辑(上次鼠标右键按下+右键未按下+当次鼠标右键未按下+当次左键未按下)
if ((lastMsg.mkRButton) && (!(lastMsg.mkLButton)) && (!(newMsg.mkRButton)) && (!(newMsg.mkLButton)))//仅右键单击后放开
{
;
}
鼠标左右键一起单击一次逻辑(上次鼠标右键按下+上次右键按下+当次鼠标右键未按下+当次左键未按下)
if ((lastMsg.mkRButton) && (lastMsg.mkLButton) && (!(newMsg.mkRButton)) && (!(newMsg.mkLButton)))
{
;
}
在每次鼠标左右键任意状态与上次不同时都会执行以上代码(顺序执行),并更新lastMsg为当次的值