我在一个对话框里加了n个一样的控件,
分别为他们加了变量比如
CString s1,s2,....sn;
如果要是能够弄成数组的形式就方便多了,比如
CString s[n];
用向导只能一个一个的加,请问各位有没有办法弄成数组的形式?
注:我简单的 试了 一下,为5个静态文本控件添加变量
CString s[5];程序依然可以正常运行,但是ClassWizard却不能用了,
给后续的编程带来了极大的不便,所以想向各位讨一个更好的办法。
谢谢。

解决方案 »

  1.   

    让他们地ID连续,不就相当于一个数组嘛。利用GetDlgItem(ID)来进行控制。还可以让他们共享消息句柄(必须手动添加)。
      

  2.   

    声明的地方CString m_strArray[2];绑定的地方
    void CMyDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CDdddDlg)
    DDX_Text(pDX, IDC_EDIT1, m_strArray[0]);
    DDX_Text(pDX, IDC_EDIT2, m_strArray[1]);
    //}}AFX_DATA_MAP
    }
      

  3.   

    可以.例子如下:
    声明时:
    CString m_strArray[2];
    绑定的地方
    void CMyDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT1, m_strArray[0]); //{{AFX_DATA_MAP(CDdddDlg)
    DDX_Text(pDX, IDC_EDIT2, m_strArray[1]);
    //}}AFX_DATA_MAP
    }
      

  4.   

    不好意思,上面的一篇按错键提交了
    可以.例子如下:
    声明时:
    CString m_strArray[2];
    绑定的地方
    把ID设为连续的
    void CMyDlg::DoDataExchange(CDataExchange* pDX)
    {
    CDialog::DoDataExchange(pDX);
         //{{*
             for(int i=0;i<2;i++)
    DDX_Text(pDX, IDC_EDIT1+i, m_strArray[i]);
           //*}}  
    //{{AFX_DATA_MAP(CDdddDlg)
    //}}AFX_DATA_MAP
    }
    注意//{{* //*}}内部分一定要放在
        //{{AFX_DATA_MAP(CDdddDlg)
    //}}AFX_DATA_MAP
    的外面,这样就不会干扰class wizard了