我从网上下载了个CMyButton类,里面有Buttondown和Buttonup两个函数,我在里面编写了MessageBox函数,现在在对话框有两个按钮,我把这两个按钮都定义为CMyButton类对象,结果是不管按下哪个按钮都显示MessageBox对话框,请问我如何按不同的按钮分别显示不同的Buttondown和Buttonup?

解决方案 »

  1.   

    处理两个按扭的按下Down和抬起Up消息就行了;
      

  2.   

    请问我如何按不同的按钮分别显示不同的Buttondown和Buttonup?
    ================
    这两个按钮的ID是不一样的,用int GetDlgCtrlID(HWND hwndCtl);得到ID,通过ID进行判断
      

  3.   

    void CMyButton::OnLButtonUp(UINT nFlags, CPoint point) 
    {
    b_Flag = true;
    if (GetFocus()!=this)
    {
    this->SetFocus();
    }
    CButton::OnLButtonUp( nFlags, point );
    Invalidate(); //重绘按钮
    }这是OnLButtonUp函数,GetDlgCtrlID(HWND hwndCtl)写在哪个地方啊?能给写一下吗?
      

  4.   

    如果不想在主对话框中添加按钮的响应函数,可以考虑在CMyButton类里面的Buttondown和Buttonup两个函数中发送自定义消息给父窗口,然后将窗口句柄作为参数传出来,这样在父窗口的自定义消息的响应函数中就可以根据传过来的参数来判断到底是哪一个按钮被按下:(此方法可用于窗口中有多个CMyButton按钮的处理)
    (1) CMyButton类中的处理:void CMyButton::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    CWnd *pwnd = GetParent();
    if (pwnd)
    pwnd->SendMessage(WM_MYBUTTON_DOWN,(WPARAM)this->m_hWnd,0);
    CButton::OnLButtonDown(nFlags, point);
    }(2) 在父窗口即对话框窗口中的WM_MYBUTTON_DOWN消息相应函数中根据传过来的窗口句柄来判断是哪个按钮被按下:LRESULT CXXXXXXDlg::OnMyButtonDown(WPARAM iParam1,LPARAM iParam2)
    {
    HWND hwnd =(HWND)iParam1;
    if (hwnd==m_btn1.m_hWnd)//m_bmpbtFocusPlus
    {
                 ......//Button1的处理
    }
    else if (hwnd==m_btn2.m_hWnd)
    {
                 ......//Button2的处理
    }        return 0;
    }
      

  5.   

    菜鸟来学习  一点c++ 经验都没有  就看过Java   囧