我有二十个按钮控件,和二十个标签控件,由于它们都不是以常规方式显示,所以分别对应独立的类对象的数组,以前我是这么作的
for(int i=0;i<20;i++)
{
DDX_Control(pDX, IDC_BUTTON_1_1+i, m_cmd_1[i]);
DDX_Control(pDX, IDC_LAB_2_1+i, m_lab_2[i]);
}
m_cmd_1和m_lab_2分别为两个自定义类的成员变量问题出现了:IDC_BUTTON_1_1~IDC_BUTTON_1_20或IDC_LAB_2_1~IDC_LAB_2_20之间不一定是连续的呀
请问各位大虾有没有这方面的宏呀

解决方案 »

  1.   

    哈哈,你还没搞定啊。比方说你想把第二十个标签控件,其id为IDC_LAB_2_20
    的text设为"some",你就这样:CStatic *pstatic=(CStatic*)GetDlgItem(IDC_LAB_2_20);pstatic->SetWidnowText("some");处理CButton单击事件啊,用ON_COMMAND_RANGE(IDC_BUTTON_1_1,IDC_BUTTON_1_20,yourdealwith);在yourdealwith(int uID)里根据uid+IDC_BUTTON_1_1值还判断是不是被单击的button是不是你的按钮哈。
      

  2.   

    IDC_BUTTON_1_1,IDC_BUTTON_1_20可以不一定连续的哈。
      

  3.   

    而且你实在想那些id值连续的话,直接在resource.h里把那些id值给改成你想要的。
      

  4.   

    其实只是举个例子,其实有五类控件,每类都有30多个,~~~0~~~
    变成连续几乎不可能,如果真的那样作如果以后改变怎么办呀
    还有像这种我差不多要写30*5=150行哪
    CStatic *pstatic=(CStatic*)GetDlgItem(IDC_LAB_2_1);
    pstatic->SetWidnowText("some");
    CStatic *pstatic=(CStatic*)GetDlgItem(IDC_LAB_2_2);
    pstatic->SetWidnowText("some");
      

  5.   

    把你以前多余的控件都删除,只剩下一组控件然后到resource.h中更改它们的ID都为2000、2100、2200、2300、2400,然后按组复制控件,它们的ID就连续了