比如我想按下鼠标左键“不动”,实现一个数字累加或是一个物体的连续动作,不知该如何响应,对于键盘键按下可以用WM_KEYDOWN连续响应,可WM_LBUTTONDOWN只响应“左键按下的第一次”,以后就不管了,又不能在此消息中加循环,当掉的哦,晚辈很是郁闷,第一次发贴求助,望各位大侠指点。还有一个小问题,不过是界面方面,也发这里算了,就是vc自制位图只能是那么少颜色吗?连非客户区的那种灰色都没有,是不是一定要从外面导入啊,如果有好办法还请赐教。

解决方案 »

  1.   

    你可以用一个变量来控制当鼠标为down的时候,置这个值为true,
    一直到鼠标为up的时候,才置这个值为false,然后当这个值为true时,不停的执行你的动作 ,可以在OnTimer中进行
      

  2.   

    OnLButtonDown: 
      SetTimer()
      SetCapture()OnLButtonUp:
      KillerTimer()
      ReleaseCapture()
    OnTimer
      DoSomething
      

  3.   

    按住鼠标不动的动作可以模拟:
    程序中创建一个定时器,每次鼠标发生WM_LBUTTONDOWN事件时激活定时器,发生其他鼠标事件则屏蔽定时器。
    定时器一旦被激活,没产生一次定时器事件向主程序发送一次WM_LBUTTONDOWN消息,直到被屏蔽。
      

  4.   

    设置一个状态status,初始化为false,以及一个鼠标位置cursor;处理消息函数OnLButtonDown,OnLButtonUp,OnTimer;OnLButtonDown:
    GetCorsorPos(&cursor);
    status = true;
    SetTimer(1,100,0);OnLButtonUp:
    status = false;
    KillTimer(1);OnTimer:
    if(status)
    {
        GetCursorPos(&now);
        if(now.x!=cursor.x || now.y!=cursor.y)
        {//if you move the cursor
            status = false;
            KillTimer(1);
        }
        else
        {
            //do what you want to do
        }
    }
    //--------------------------------
    应该只有从外部导入,资源编辑器最多只能编辑256位颜色的位图。