高手们:
    据我所知,在键盘上敲击任何一个键都会响应WM_KEYUP,WM_KEYDOWN,WM_CHAR等消息,但这只对一次敲击响应,但如果多次敲击同一个键,应该如何判断呢?
    曾经我想过用WM_TIMER来做的,但担心WM_TIMER的响应会慢。
    请问应该如何实现的?
    
    谢谢!

解决方案 »

  1.   

    void CPlayer::OnKeyT_Timer()
    {
    static long LastKey;
    long  CurrKey;
    if(Playing)
    {
    if    ( GetAsyncKeyState(key[0]))
    {
    MoveBrick(-1);
    CurrKey = key[0];
    }
    else if(GetAsyncKeyState(key[1]))
    {
    RotateBrick();
    CurrKey = key[1];
    }
    else if(GetAsyncKeyState(key[2]))
    {
    MoveBrick(1);
    CurrKey = key[2];
    }
            }
    if(CurrKey != 0 && CurrKey == LastKey)
    {
    SetTimer (hWnd, OnKeyT, 100, TimerProc);      //加快控制
    }
    else
    {
    SetTimer (hWnd, OnKeyT, 200, TimerProc);       //恢复原来速度
    } LastKey = CurrKey;
    }
      

  2.   

    请问如果调用了GetAsyncKeyState,那么还要不要响应WM_KEYDOWN???