void CBitWnd::OnLButtonDown(UINT nFlags, CPoint point) 
{
m_nState = (m_lpBit->GetItemNums() > 2) ? kActiveBit : kNormalBit;
m_nState = m_bMute ? kNormalBit : m_nState;
m_bMute  = m_bCanMute ? !m_bMute : m_bMute;
this->Invalidate(); if( m_bLDownNotify )
{
ASSERT( GetParent() != NULL );
GetParent()->SendMessage(WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(), BN_CLICKED), (LPARAM)m_hWnd);
}

if( m_bNotify )
{
ASSERT( GetParent() != NULL );
this->ClientToScreen(&point);
GetParent()->ScreenToClient(&point);
//GetParent()->SendMessage(WM_LBUTTONDOWN, nFlags, MAKELPARAM(point.x, point.y));
}
}

解决方案 »

  1.   

    楼主,
     GetParent()->SendMessage(WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(), BN_CLICKED), (LPARAM)m_hWnd);
    这句话是啥意思?你调试过,在哪句出的问题吗?
      

  2.   

    GetParent()->SendMessage(WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(), BN_CLICKED), (LPARAM)m_hWnd);
    会不会又触发回OnLButtonDown了,造成死循环
      

  3.   

    我觉得不会。
    BN_CLICKED是事件,不是消息。把SendMessage改成PostMessage.如果还不行,在PostMessage之前先给自己PostMessage(WM_LBUTTONUP);
      

  4.   

    GetParent()->SendMessage(WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(), BN_CLICKED), (LPARAM)m_hWnd);
    =============
    我觉得问题应该在这儿,但是不知道处理函数是如何写的,不好判断会不会死循环。
      

  5.   

     //GetParent()->SendMessage(WM_LBUTTONDOWN, nFlags, MAKELPARAM(point.x, point.y)); 
     去掉这个函数,滑动条的滑动块无法跟着鼠标移动!知道为什么吗???
      

  6.   

     //GetParent()->SendMessage(WM_LBUTTONDOWN, nFlags, MAKELPARAM(point.x, point.y)); 
     去掉这个函数,滑动条的滑动块无法跟着鼠标移动!知道为什么吗???
      

  7.   

    没有!为什么鼠标点击滑块移动,这响应消息区域怎么定的!代码这里 你看看吧
    http://download.csdn.net/detail/mirro187_/5064257别让我失望!!! 谢谢
      

  8.   


    在onpaint里面的 this->DrawSlider(&dc, TRUE); 之后 bPaint ? m_Thumb.MoveWindow(rcThumb) : NULL;
    移动滑块!
      

  9.   

    MFC只有当一个消息函数返回后才能执行另一个消息函数只有 OnLButtonDown 这个消息函数返回后才会执行GetParent()->SendMessage(WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(), BN_CLICKED), (LPARAM)m_hWnd);
    所以SendMessage不会响应, 只有 OnLButtonDown 返回后才会得到返回死锁发生