我现在想用一个函数关联到多个控件上去,应该怎么处理?平常只关联一个控件比较好办,双击该控件就行了。但如果现在多个控件关联一个函数,我就不知道怎么办了。希望哪位大大能不吝赐教啊!

解决方案 »

  1.   

    同一类型的控件的话可以使用ON_CONTROL_RANGE(),ID号码要连续
      

  2.   

    //响应WM_COMMAND消息
    BOOL CDlgX::OnCommand(WPARAM wParam, LPARAM lParam)
    {
    if(wParam==IDC_BUTTON1) MessageBox("按钮1");
    if(wParam==IDC_BUTTON2) MessageBox("按钮2");
    if(wParam==IDC_BUTTON3) MessageBox("按钮3");
    if(wParam==IDC_BUTTON4) MessageBox("按钮4");
    }
      

  3.   


    我用的四个连续的 radio控件。目的是让着四个控件关联一个函数。关键我怎么建立一个函数 和这四个控件关联起来呢?还请兄台告诉我如何具体操作。不胜感激。
      

  4.   

    1.2#楼的就可以
    当然也可以用ON_CONTROL_RANGE(),前提是4个radio控件id要连续,比如是0x100 0x101...等
    增加宏
    ON_CONTROL_RANGE(BN_CLICKED,IDC_RADIO1,IDC_RADIO4,memberFxn )
    处理消息原型:
    afx_msg void memberFxn(UINT id);
    实现
    void CDlgXXXX::memberFxn(UINT id)
    {
    switch ( id )
    {
    case IDC_RADIO1:
    AfxMessageBox("RADIO1 选中");
    break;
    case IDC_RADIO2:
    AfxMessageBox("RADIO2 选中");
    break;
            ............... }

    }
      

  5.   

    和用ClassWiazard类向导关联单个控件不同,需要手动操作,以连续四个控件为例,具体步骤如下:
    1、在.h文件中找到DECLARE_MESSAGE_MAP()宏名,在这个宏名上面添加一句声明函数。
      afx_msg void xxx(UINT uID);
        DECLARE_MESSAGE_MAP()

    2、在.cpp文件中添加函数体
      void CCalculatorDlg::xxx(UINT uID)
      {
      UINT index=uID-IDC_NUM_0;
      CString num;
      num.Format(_T("%d"),index);
      AfxMessageBox(num);
      }

    3、在.cpp文件中找到BEGIN_MESSAGE_MAP、END_MESSAGE_MAP宏,在这二个宏名中间添加消息映射
    BEGIN_MESSAGE_MAP(CDlgDlg, CDialog)
      ON_CONTROL_RANGE(BN_CLICKED,IDC_NUM_0,IDC_NUM_3,xxx)
    END_MESSAGE_MAP()

      
        第一个参数 事件
      第二个参数 控件组的第一个id
      第三个参数 控件组的最后一个id
      第四个参数 响应事件的方法
      

  6.   

    MFC的radio控件一般不这么玩,应该用最简单的方法:指定第一个radio的group,然后建立一个成员变量,用它来得到结果。