自定义的按钮类
class CMyButton :public CButton
{
public:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP()
};
自定义的按钮类消息映射
BEGIN_MESSAGE_MAP(CMyButton,CButton)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
END_MESSAGE_MAP()
自定义的按钮类消息处理函数
void CMyButton::OnLButtonDown(UINT nFlags, CPoint point)
{
   WPARAM wParam = (((DWORD)WM_LBUTTONDOWN) << 16) + ((DWORD)GetDlgCtrlID());
   ::SendMessage(this->GetParent()->GetSafeHwnd(),WM_COMMAND, wParam, 0);//WM_COMMAND//WM_LBUTTONDOWN
   CButton::OnLButtonDown(nFlags, point);
}
void CMyButton::OnLButtonUp(UINT nFlags, CPoint point)
{
  WPARAM wParam = (((DWORD)WM_LBUTTONUP) << 16) + ((DWORD)GetDlgCtrlID());
  ::SendMessage(this->GetParent()->GetSafeHwnd(),WM_LBUTTONUP, wParam, 0);//WM_COMMAND//WM_LBUTTONDOWN
  CButton::OnLButtonUp(nFlags, point);
}
在一个对话框中创建了一个按钮CMyButton *m_pButtonXplus;两个分别处理按钮被按下、弹起的消息处理函数
public:
afx_msg void OnMouseDownButtonXplus();
afx_msg void OnMouseUpButtonXplus();消息映射
BEGIN_MESSAGE_MAP(CPCtrlDlg, CDialog)
ON_COMMAND(IDC_MYBUTTON_XPLUS, &CPCtrlDlg::OnMouseDownButtonXplus)//使用ON_COMMAND可以响应WM_COMMAND消息
ON_WM_LBUTTONUP(IDC_MYBUTTON_XPLUS, &CPCtrlDlg::OnMouseUpButtonXplus)//不响应WM_LBUTTONUP消息
END_MESSAGE_MAP()

解决方案 »

  1.   

    你上面的WM_LBUTTONDOWN中的
    WPARAM wParam = (((DWORD)WM_LBUTTONDOWN) << 16) + ((DWORD)GetDlgCtrlID());
    ::SendMessage(this->GetParent()->GetSafeHwnd(),WM_COMMAND, wParam, 0);//WM_COMMAND//WM_LBUTTONDOWN
     这是在做什么?
      

  2.   

    回楼上
    //WPARAM wParam = (((DWORD)WM_LBUTTONDOWN) << 16) + ((DWORD)GetDlgCtrlID());
    ::SendMessage(this->GetParent()->GetSafeHwnd(),WM_COMMAND, 0, 0);//向按钮所在窗口发送一个消息
      

  3.   

    ::SendMessage(this->GetParent()->GetSafeHwnd(),WM_COMMAND, 0, 0);//向按钮所在窗口发送一个消息 
     
      

  4.   

    那不就是已经响应LBUTTONDOWN消息了