我这里用到100个静态文本控件显示设备状态,需要点击一个就弹出一个属性页面,可以对每一个控件添加BN_CLICKED消息,但是要添加100个,这样太麻烦了;如果定义一个静态文本类,在基类中响应单击事件,然后都从它派生的话,就需要添加100个成员变量,也太麻烦了,有没有其他简便的方法?

解决方案 »

  1.   

    用后面一个,关键要添加100个成员变量,在ClassWizard添加成员变量时才能指定基类吧?能不能不添加成员变量,就根据它的ID就能指定基类?!
      

  2.   

    ON_COMMAND_RANGE(IDC_STATIC2,IDC_STATIC23,OnColMsg)IDC_STATIC2到IDC_STATIC23的ID号连续就可以了~~~
      

  3.   

    //.h
    afx_msg void Onclick(UINT nID);//.cpp
    ON_CONTROL_RANGE(BN_CLICKED, IDC_STATIC1, IDC_STATIC5, Onclick)void CDialogTestDlg::Onclick(UINT nID)
    {
    switch(nID)
    {
    case IDC_STATIC1:
    AfxMessageBox("1");
    break;
    case IDC_STATIC5:
    AfxMessageBox("5");
    break;
    default:
    break;
    }
    }
      

  4.   

    void CXXXXX::OnColMsg(UINT nID) 
    {
    int i=nID-IDC_STATIC2;
    }i就是单击的哪一个控件
      

  5.   

    感谢livedeal(怀念)和SeaDragonH(晚睡早起,锻炼身体)两位, 就是这个意思,
    ON_CONTROL_RANGE(BN_CLICKED, IDC_STATIC1, IDC_STATIC5, Onclick)更确切一些,
    但是需要选择静态文本控件的NOTIFY属性,默认是没有选择的。