none
求教如何循环表示数个编辑框? RRS feed

  • 问题

  • MFC编程,比如有二十个编辑框,它们的ID是从EDIT1到EDIT20,它们关联的变量是m_EDIT1到m_EDIT20,这样有规律的命名,如果我想让每个编辑框里的字符串都加上一个相同的字符串,我该如何用循环的方式表示呢?

    比如

    m_EDIT1+=word

    m_EDIT2+=word

    ...

    m_EDIT20+=word

    我怎么做才能不用写二十遍呢?



    2012年2月3日 16:28

答案

  • 编辑框的ID连续的话,可以这样

    CString str(_T(""));
    for(UINT nID = IDC_EDIT1; nID <= IDC_EDIT20; nID++)
    {
      GetDlgItemText(nID, str);
      str += _T("xxx");
     SetDlgItemText(nID, str);
    }


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 Rob Pan 2012年2月9日 7:15
    2012年2月3日 16:47
    版主
  • 您的20个编辑框,ID号连续,可以关联一个CString m_edit[20];的数组,数组中的每一个关联一个编辑框。
    DoDataExchange函数中您可以这样写
    for(UINT nID=IDC_EDIT1; nID <= IDC_EDIT20; nID++)
    {
     DDX_Text(pDX, nID, m_edit[nID - IDC_EDIT1);
    }

    for(int i=0; i<_countof(m_edit); i++)
    {
      UpdateData(TRUE);
      m_edit[i] += _T("xxxx");
     UpdateData(FALSE);
    }


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 Rob Pan 2012年2月9日 7:15
    2012年2月3日 16:52
    版主

全部回复

  • 编辑框的ID连续的话,可以这样

    CString str(_T(""));
    for(UINT nID = IDC_EDIT1; nID <= IDC_EDIT20; nID++)
    {
      GetDlgItemText(nID, str);
      str += _T("xxx");
     SetDlgItemText(nID, str);
    }


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 Rob Pan 2012年2月9日 7:15
    2012年2月3日 16:47
    版主
  • 您的20个编辑框,ID号连续,可以关联一个CString m_edit[20];的数组,数组中的每一个关联一个编辑框。
    DoDataExchange函数中您可以这样写
    for(UINT nID=IDC_EDIT1; nID <= IDC_EDIT20; nID++)
    {
     DDX_Text(pDX, nID, m_edit[nID - IDC_EDIT1);
    }

    for(int i=0; i<_countof(m_edit); i++)
    {
      UpdateData(TRUE);
      m_edit[i] += _T("xxxx");
     UpdateData(FALSE);
    }


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 Rob Pan 2012年2月9日 7:15
    2012年2月3日 16:52
    版主
  • 可以用数组

    向导不可以

    不过自己在DoDataExchange可以修改


    新浪微博http://weibo.com/xianglitian,欢迎围观
    2012年2月4日 0:52