我在降妖现场呢 2015-05-10 16:49 采纳率: 0%
浏览 2145

MFC编程中,如何避免按键冲突

不悬赏会不会有人回答...

在学雾央的MFC游戏开发的时候遇到的一些问题《MFC游戏开发》笔记四 键盘响应和鼠标响应
在评论区也有人提到,就是“一旦按住某个按键 图片(角色)并不是匀速运动的,而是先停一下,然后再匀速运动的 ”
另外,在想改变方向的时候,也会有卡顿。而且不能按组合键。比如上下左右是wsad的时候,想右后再右上运动,一般操作来说是d按住,然后按W,可是现在在向右运动途中按W的话,会直接往上移动一格,停一会儿然后继续往上运动。

查了些资料“_长按是在短按的基础上,以一个很短的时间(10ms)再次判断按键是否片于按下状态,当达到一定的时间(1s)后,按键还处于按下状态,说明是长按状态_”

我目的就是让他跳过这个1s的判定时间直接进入长按状态,并且可以组合键左上左下灵活运动.

发个OnKeyDown 的函数吧

void CChildView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    //nChar表示按下的键值  
    switch (nChar)
    {
    case 'd':   
    case 'D':
        MyHero.direct = UP;
        MyHero.x += move;

        break;
    case 'a':
    case 'A':
        MyHero.direct = UP;
        MyHero.x -= move;
        break;
    case 'w':
    case 'W':
        MyHero.direct = UP;
        MyHero.y -= move;
        break;
    case 's':
    case 'S':
        MyHero.direct = UP;
        MyHero.y += move;
        break;
    }
}
  • 写回答

2条回答 默认 最新

  • 91program 博客专家认证 2015-05-10 23:19
    关注

    短按到找按,是必须有一个时间延时判断的。这个时间定义的太短,短按是会产生误动作;但定义时间如果太长,用户也不他方便操作。
    这个时间一般在 1 秒以内,300ms 以上,具体要看功能与用户操作习惯。

    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题