这是一个鼠标左右键控制的问题
我想在鼠标左键按下的时候不断的发送信息,而当左键抬起时就不发
我在里边添加了一个循环,我想在该循环开始的时候判断鼠标左键的状态是UP还是DOWN应该添加什么样的代码?
或使用什么样的方式和方法
void zzbutton::OnLButtonDown(UINT nFlags, CPoint point) 

   // bool i;
int s;
i=true;
s=0;
// TODO: Add your message handler code here and/or call default
switch(this->GetDlgCtrlID())
{
case IDC_BUTTON1:
{
while (i)  
{
l++
}
}
}
CButton::OnLButtonDown(nFlags, point);
}void zzbutton::OnLButtonUp(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default

CButton::OnLButtonUp(nFlags, point);
i= false;
}

解决方案 »

  1.   

    MouseDown的时候要SetCapture();
    MouseUp的时候要ReleaseCapture();
      

  2.   

    跟这个关系不大吧?用鼠标事件吧.判断mousehook事件
      

  3.   

    楼主的方法不行, 按住不放, 按你代码做的, 只解释为一次按键, 也就是只解释为一次lbuttondown 
    但如果设一定时器
    在ontimer函数中调用你要的发送消息事件if(i==true)SendMessage(    HWND hWnd,          // Handle of destination window    UINT Msg,           // Message to send    WPARAM wParam,      // First message parameter    LPARAM lParam); 就行了, 这样即可达到目的解释为多次按键
      

  4.   

    不要这样做,鼠标按下后只会传进一个消息,你可以设个标志,然后寄送个消息驱动另一个线程(简单函数不行,否则当前线程会因这个函数不断循环,不会执行你发送的其它消息),在其中实现你的循环。OnLButtonUP后再改变那个标志使你启动的线程停下来。
      

  5.   

    与其是这样做的话,不如使用时钟来的简单。
    每当鼠标左键按下的时候,启动时钟;左键松开的时候,终止时钟。
    #define TIMER_ID = 10001;    // 时钟ID
    #define TIMER_INTERVAL = 500;// 时钟间隔CXXXX::OnLButtonDown(...)
    {
        SetTimer(TIMER_ID, TIMER_INTERVAL, 0);
    }CXXXX:OnLButtonUp(...)
    {
        KillTimer(TIMER_ID);
    }CXXXX::OnTimer(UINT nIDEvent)
    {
        switch (nIDEvent)
        {
        case TIMER_ID:
            // do what you want
            break;
        }
    }
      

  6.   

    BOOL m_bIsButtonDown;
    BOOL m_bTerminate;m_bTerminat = FALSE;
    m_bIsButtonDown = FALSE;CreateThread(YourThread,....);DWORD WINAPI YourThread(LPVOID lParam)
    {
       while(!m_bTerminate)
       {
          if(m_bIsButtonDown)
          {
              ....
          }
       }
    }void CYourView::OnLButtonDown(...)
    {
       SetCapture();
       m_bIsButtonDown = TRUE;
    }void CYourView::OnLButtonUP(...)
    {
       ReleaseCapture();
       m_bIsButtonDown = FALSE;
    }
      

  7.   

    我也做过个连点器,和你的要求很相似,
    因为我的连点器要求按住左键或右键3秒后,开始连点左键或右键连点,
    双击则关闭左键或右键连点。我是做了个鼠标的HOOK,这样才能任何情况下都截的到鼠标的按下和松开的消息,然后就放个timer检查鼠标的状态就OK了。
      

  8.   

    在LButtonDown事件中用定时器就可以了。
      

  9.   

    哪个大哥有实际的例程给一个吧,谢谢
    [email protected]