/********************************************************/
//初始化checkbox的状态
/********************************************************/
m_GroupRight=m_hDataBase.VariantsToCString(value[2]); CButton *m_pcheck[36]; //类成员
CString str; if(m_GroupRight!="")
{
for(int i=0;i<36;i++)
{
m_pcheck[i] = (CButton*)GetDlgItem(IDC_CHECK+i); //将36个checkbox控件存入数组中
str=m_GroupRight.Mid(i,1);
if(str=='1')
{
m_pcheck[i]->SetCheck(TRUE);
}
else
m_pcheck[i]->SetCheck(FALSE);
}
}
这段代码我跟踪了很多次,还是不行。
字符串比较 1不应是字符
在你的代码中:
str=m_GroupRight.Mid(i,1); //你在这里直接操作,而不进行边界检查;
//你确保m_GroupRight中的串长度一定大大于36吗?不防试试改成:
if(36<=m_GroupRight.GetLeng())
str=m_GroupRight.Mid(i,1);