有多个Static Text,ID号为IDC_STATIC1--IDC_STATIC10,想用一个for循环对其进行操作,应该怎么办。如,for (int i = 0; i < 10; i ++)
{
GetDlgItem(ID)->SetWindowText("aaa");
}

解决方案 »

  1.   

    最好将其ID设置为连续的,然后用循环比较方便。
    GetDlgItem(ID_STATIC0+i)可以进行下去
      

  2.   

    IDC_STATIC1_ IDC_STATIC10设为连续的ID, 在你写的int ID = IDC_STATIC1;
    for (int i = 0; i < 10; i ++)
    {
    GetDlgItem(ID + i)->SetWindowText("aaa");
    }
      

  3.   

    1. 编辑资源头文件把IDC_STATIC1--IDC_STATIC10设置为一段连续的值,之后:
        for (int i = 0; i < 10; i ++)
        {
            GetDlgItem(ID_STATIC1 + i)->SetWindowText("aaa");
        }2. 枚举对话框中的所有子窗口,判断子窗口是否具有SS_xxx(具体取决于你的StaticBox的风格)风格,如果有,那就是你要的了。推荐使用1
    1 简单,2 复杂但灵活性要好。
      

  4.   

    首先ID是宏,对应的是整数,请确保ID号都是依次递增的,然后就可以GetDlgItem(ID_STATIC_0+i)->SetWindowText("aaa");
    更通用的方法是用map从整数关联到ID,
    map <int, int> IDmap;
    IDmap.insert(pair<int, int>(0, IDC_STATIC_0);
    ...... 然后GetDlgItem(IDmap[i])->SetWindowText("aaa");
      

  5.   

    那几个控件是连续放上去的。
    然后在Resource.h中找到相应的消息号
    这样话,设置完以后就可以了,我的控件是从1000开始的,共6个
    for(int i=1;i<7;i++)
    {
    char ch[10];
    memset(ch,0,10);
    _itoa(i,ch,10);
    SetDlgItemText((1000+i-1),ch);
    }
    这显示,没有问题
      

  6.   

    有所启发,给几个static text绘制了黑版框