我在降妖现场呢 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 C# datagridview 栏位进度
  • ¥15 vue3页面el-table页面数据过多
  • ¥100 vue3中融入gRPC-web
  • ¥15 kali环境运行volatility分析android内存文件,缺profile
  • ¥15 写uniapp时遇到的问题
  • ¥15 vs 2008 安装遇到问题
  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改