如:一个dialog中包含了数个button,所有的button都用相同的
id,如IDC_BUTTON,如何在运行时得到button数组的入口??
先谢了。

解决方案 »

  1.   

    不让有重复的id的...
    你可以改#define IDC_BUTTONn,使之连续,GetDlgItem(IDC_BUTTON1)得到第一个...
      

  2.   

    to ndy_w(carpe diem):
      但是这样很难循环了.你的define是不是这样的:
     #define IDC_BUTTONn(n) IDC_BUTTON##n
    这样我不能传变量啊,比如:int i=2; I
    DC_BUTTONn(i)变成IDC_BUTTONi,而不是IDC_BUTTON2。而且我用static控件的话,id能重复的啊。
    有没有别的方法啊
      

  3.   

    可以传变量。
    #define IDC_BUTTON(N) (IDC_BUTTON0 + N)
    for(int i=0; i<4; i++)
    {
     GetDlgItem(IDC_BUTTON(i))...
    }
      

  4.   

    我以前做过类似的,看看对你有没用处。
    设置不同的BUTTON ID号最好能连续。
    将ID值做为参数传送给处理函数。
    在函数中用CButton* pBut = (CButton*)GetDlgItem(id);得到控件,就可以做其它处理了。
      

  5.   

    如果是静态的话,为什么不用CStatic m_static[n]?
    在DoDataExchange里,改成
    DDX_Control(pDX, IDC_STATIC1, m_static[0]);
    DDX_Control(pDX, IDC_STATIC2, m_static[1]);
    DDX_Control(pDX, IDC_STATIC3, m_static[2]);
    DDX_Control(pDX, IDC_STATIC4, m_static[3]);
    ...
    就可以了。