首先,我想知道,windows一共有几种鼠标响应,比如 单击左键,单击右键,单击中间键……,双击左键怎么表示的?
其次,我想知道按住鼠标中间键2秒钟后,响应一个事件,怎么写呀?请在关键地方尽量详细一些!

解决方案 »

  1.   

    重载PreTranslateMessage函数,捕获中间那个键按下的消息WM_MBUTTONDOWNBOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
    {
    if(pMsg->message==WM_MBUTTONDOWN)
    {
                 SetTimer(0,2000,NULL);  //设立计数器,时间为2000
    }
    return CDialog::PreTranslateMessage(pMsg);
    }然后在OnTimer函数中加入你的处理代码。
    这样的效果就是按下鼠标中键,等两秒后,触发你的事件。
    在OnTimer中你的处理代码之后,可以KillerTimer。
      

  2.   

    双击左键的消息是WM_LBUTTONDBLCLK
      

  3.   

    单击左键消息:WM_LBUTTONDOWN
    单击右键消息:WM_RBUTTONDOWN
      

  4.   

    楼主的意思似乎是这样的,要在鼠标down之后设置定时器,2秒钟后定时器会产生某种动作。
    这期间捕捉鼠标的up消息,如果鼠标up,则停止定时器。这样就实现了按住鼠标两秒才开始动作的效果。
      

  5.   

    借用kugou123(酷狗)(http://www.xiaozhou.net) 的代码:) :BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
    {
             static UINT uiTimeerID = -1;
    if(pMsg->message==WM_MBUTTONDOWN)
    {
                 uiTimeerID = SetTimer(0,2000,NULL);  //设立计数器,时间为2000
    }
             //还要加上
             else if(pMsg->message==WM_MBUTTONUP)
             {
                if(uiTimeerID != (UINT)(-1))
                  KillTimer(uiTimeerID);
             } return CDialog::PreTranslateMessage(pMsg);        
    }
      

  6.   

    BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
    {
    if(pMsg->message==WM_MBUTTONDOWN)
    {
                 SetTimer(0,2000,NULL);  //设立计数器,时间为2000
    }
             if(pMsg->message==WM_MBUTTODNUP)
             {
                 KillTimer(0);      //检测到中间按键放开的操作的时候,销毁计时器
             }
    return CDialog::PreTranslateMessage(pMsg);
    }这样应该可以了。