我派生了一个CBUTTON类 CBUTTONEX,
然后我在一个dialog中放了几个按钮,
现在我要处理每一个按钮的鼠标左键按下去后的弹起事件,
每个按钮的弹起事件所做的事情不一样请问大家怎么做才行咯,如果在CBUTTONEX中响应WM_LBTTONUP这样做不行,不能单独处理每个按钮的弹起啊。

解决方案 »

  1.   

    WM_LBUTTONUP会会触发父窗口的WM_COMMAND事件
      

  2.   

    响应对话框的PreTransMessage,截获WM_LBUTTONUP事件。然后判断是哪个按钮。分别进行处理
      

  3.   

    用回调函数
    typedef void (ONBUTTONCLICK*)
    (VOID* pData);
    ONBUTTONCLICK m_OnButtonClick;
    CButtonEX:SetButtonClick(
    ONBUTTONCLICK bk)
    {
    m_OnButtonClick = bk;
    }
    CButtonEx:OnLButtonUp()
    {
        m_ButtonClick(this);
    }
    ......
    VOID Click1(void* pData)
    {
      CButtonEx* pButton = (CButtonEx* )pData;
    }
    调用时
    CButtonEx m_b1;
    m_b1.Create(...)
    m_b1.SetButtonClick(Click1);
    鼠标抬起时,程序自动调用Click1
      

  4.   

    更正typedef void (*ONBUTTONCLICK)
    (VOID* pData);