小弟学还VC没多久,现有问题,请教大哥大姐一下,
 今天看了一个东东,是关于BUTTON的,我用MFC做了一个对话框,上面其中有两个BUTTON按钮,
 我按下键盘上的A键时,BUTTON1也被按下,按下B键时BUTTON2也被按下,
  现在问题是我想来计数它们,也就是说当我第一次按A或B时,对话框上自动显示1,(也就是按键的次数为一次)
  第二次若按相同的键就不计算,若不相同的键,则自动加1,
  我不知道怎样来用代码表示它们,请哪位大哥大姐能否教我一下,在下谢谢了,

解决方案 »

  1.   

    在PreTranslateMessage中处理WM_KEYDOWN,维护两个计数器。
      

  2.   

    这个问题建议你查看一些有关键盘按键消息捕获的代码,找到响应函数的处理代码,在里面做手脚就可以啊!设置2个全局变量a记录上次按键,int i;
    if(本次按键!=a)
    {
    i=i+1;
    本次按键=a;
    }
    记录按键的变量我就不知道了,嘻嘻
      

  3.   

    在PreTranslateMessage加入以下代码:
    int Count = 0;
    int LastKey = -1;
    if(int(pMsg->message) == WM_KEYDOWN)
    {
    if(pMsg->wParam != LastKey)
    {
    Count++;
    }
    }
    Count就是你要统计的次数
      

  4.   

    错了,应该是
    int Count = 0;
    int LastKey = -1;
    if(int(pMsg->message) == WM_KEYDOWN)
    {
    if(pMsg->wParam != LastKey)
    {
    Count++;
    LastKey = pMsg->wParam;
    }
    }
      

  5.   

    各位大狹,还有一点错误呀,就是在对话框上显示不出来,
    这是为什么???
    我用 AfxMessageBox(" click count is %d",Count);不行呀
    请大狹说说这是为什么啊
      

  6.   

    设置一个BOOL型信号信号量,获得当前按键时判断该信号量的值,并根据当前按键重新为该信号量赋值,以便处理下一个按键时是否是重复。
      

  7.   

    依照这个程序,应该怎么添加呢
    我先前定义过BOOL,可是没有反映,
    if( (pMsg->message) == WM_KEYDOWN)
     

    static int Count = 0;
           
          if( pMsg->wParam== LastKey)
      
    { Count++;
     LastKey = pMsg->wParam;


       m_Count.Format("%d",Count);
    }
     
      this->UpdateData(false);我就是这样的,可以显示,但是重复的它也算了,不知我用这个来显示是不是对的,m_Count.Format("%d",Count);  this->UpdateData(false);
    ???????????????