最开始的时候,我从 CButton 派生了我自己的 CMyButton类,可以使一个按钮响应LButtonDown,LButtonUp消息
但是,如果,我里面有多个按钮想要处理 LButtonDown,LButtonUp消息,怎么做,
我不可以是一个按钮添加一个对应的 CMyXButton 类吧,再重写...各位大大,应该有好的方法,多谢指教.用途:上下左右,按下电机运动,抬起电机停止

解决方案 »

  1.   

    多定义几个CMyXButton对象就可以了
      

  2.   

    我的意思是我不想每个按钮都定义一个 CMyButton 类,
    我想在CMyButton的构造函数时把这些按钮区分开.用一个参数传进去,但是我现在传不进去,
      

  3.   

    利用classWizard给每个button关联一个CMyButton类型的变量就可以了。
    CMyButton m_btn2;
    CMyButton m_btn1;DDX_Control(pDX, IDC_BUTTON2, m_btn2);
    DDX_Control(pDX, IDC_BUTTON1, m_btn1);
      

  4.   

    不明白楼主什么意思 既然每个按钮实现功能不一样,就一个个响应自己的down消息吧 为什么还要继承一个类呢  直接响应不同的LButtonDown,LButtonUp不就完了 
      

  5.   


    你是最明白我的意思的人.就是不同的 按钮 实现的UP/DOWN 功能不一样.我不能 在创建 不同的 实例时,带进不同的  标识ID 吗?
      

  6.   


    BOOL CXXXXDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    HWND hWnd = pMsg->hwnd;
    TCHAR szClassName[MAX_PATH] = {0};
    GetClassName(hWnd, szClassName, MAX_PATH);
    if(0 == _tcscmp(szClassName, _T("Button")))
    {
    CDialog::PreTranslateMessage(pMsg);
    CString str;
    UINT nID = ::GetDlgCtrlID(hWnd);
    str.Format(_T("ID: %d"), nID);
    switch(pMsg->message)
    {
    case WM_LBUTTONDOWN:
    {
    str += _T("DOWN");
    ::SetWindowText(hWnd, str);
    }
    break;

    case WM_LBUTTONUP:
    {
    str += _T("UP");
    ::SetWindowText(hWnd, str);
    }
    break;

    default:
    break;
    }
    return TRUE;
    }
    else
    {
    return CDialog::PreTranslateMessage(pMsg);
    }
    }
      

  7.   

    我想可能是我说的意思不够清楚,说功能把.有4个按钮
    第一个按钮 DOWN 时,做事情1 ,UP 时做事情2
    第二个按钮 DOWN 时,做事情3 ,UP 时做事情4
    第三个按钮 DOWN 时,做事情5 ,UP 时做事情6
    第四个按钮 DOWN 时,做事情7 ,UP 时做事情8我想在同一个 CMyButton 里面实现.
     
      

  8.   


    那就给你的CMyButton 类发消息吧,根据参数不同运行不同的作用  不知道我理解对不对  
      

  9.   

    你的按钮又不关联CMyButton类,又想让按钮做CMyButton类中的特定操作?
      

  10.   

    switch (GetDlgCtrlID())
         case IDC_BUTTON1:
                  break;
    .........
      

  11.   

    楼上 的兄弟说的是,
    我自己的打算是 在关联 按钮和 CMyButton 的时候,传一个参数到构造函数里,再 赋给 m_ID 变量做标识,
    然后再用 switch ,
    可以这样做吗?但是我不知道怎么 传到 构造函数里, 不知道怎么写.
    谢谢这里的兄弟JM,都很热情...
      

  12.   

    LZ类不是这样用的.CMyButton职能太多.一般你继承Button类无非实改变按键画面.你把控制电机类写入CMyButton.改变类的职能.
    如果非要实显这种多职能的类.建仪.
    CMyButton 定义一个public int m_iCase;
    跟据m_Case 在Down或up 中控制电机.
    然后在创建button后.改变m_iCase;
    我几年前控制云台就是这样做的.不过现在不建仪这样做.这样做出的类实在太...
    现在我做成控件.不用这样烦恼了.
      

  13.   

    http://download.csdn.net/source/3208359