我在对话框内有一个按钮,现在我想响应按钮的WM_LBUTTONDOWN,WM_LBUTTONUP,也就是在鼠标左键按下响应一个事件,鼠标左键弹开时响应另外一个事件。但是vc中只有dialog由这些消息,按钮没有,
我该怎么做才可以让按钮响应这两个消息呢

解决方案 »

  1.   

    在PreTranslateMessage(MSG* pMsg)函数里判断消息对WM_LBUTTONDOWN,WM_LBUTTONUP进行特殊处理
      

  2.   

    派生CButton的子类或在PreTranslateMessage中处理。
      

  3.   

    一个编辑框的例子
    如何在控件里响应左右键消息
    BOOL CMydilog::PreTranslateMessage(MSG* pMsg) 
    {
        if(GetFocus()==GetDlgItem(IDC_EDIT2))//判断焦点在不在框内
         if(pMsg->message==WM_LBUTTONDOWN)
                 .....
          if(pMsg->message==WM_LBUTTONUP)
                .....
      

  4.   

    这样有个问题啊,假如一开始我的焦点不在button上,则此时按下的话
    WM_LBUTTONDOWN是没有的用的。
      

  5.   

    嗯,这样的话,捕捉不到按钮的LBUTTONDOWN
      

  6.   

    是的阿,我现在考虑能不能得到当前鼠标掠过时控键的句炳,然后得到该控件的caption
      

  7.   

    pWnd->GetDlgCtrlID()得到控件的ID来操作