问题描述如下 :
在一个对话框中有四个List Box控件(ID分别为:IDC_LIST1,IDC_LIST2,IDC_LIST3,IDC_LIST4),在CsyDlg.h头文件定义List Box控件数组
CListBox   m_ListBox[4];
在CsyDlg.cpp文件中完成功能如下:
CString string;
string += (char)ch;
m_ListBox[port-1].AddString(string);
在执行m_ListBox[port-1].AddString(string);语句时报错,如果通过向导给四个List Box控件生成控件变量则不会报错.
如:给ID为IDC_LIST1生成控件变量为CListBox   m_sy,然后替代出错语句.
CString string;
string += (char)ch;
m_sy.AddString(string);
则不会出错.原因是因为m_sy与IDC_LIST1邦定了DDX_Control(pDX, IDC_LIST1, m_sy);
请问如何邦定List Box控件变量数据组呢?即:CListBox   m_ListBox[4];与四个List Box控件(ID分别为:IDC_LIST1,IDC_LIST2,IDC_LIST3,IDC_LIST4)如何对应???

解决方案 »

  1.   

    //testdlg.h
    CListBox *m_plistboxxx[2];//testdlg.cpp
    CTestDlg::OnInitDialog()
    {
        m_plistboxxx[0] = (CListBox*)GetDlgItem(IDC_LISTBOX1);
        m_plistboxxx[1] = (CListBox*)GetDlgItem(IDC_LISTBOX2);
    }
      

  2.   

    UINT nCltID[] = //控件ID数组
    {
       IDC_LIST1,IDC_LIST2,IDC_LIST3,IDC_LIST4
    } ;int nCount = sizeof(nCtlID) / sizeof(UINT) ;
    for(int nIndex = 0; nIndex < nCount; nIndex++)
    {
      m_ListBox[nIndex].SubclassDlgItem(nCltID[nIndex],this) ;
    }在初始化函数中这样设置就邦定了。