m_listValue数组是动态定义的,如“m_listValue= new CListCtrl[5]”,为的是动态创建listcontrol控件。
创建控件代码是:
for (int i=0;i<item;i++)
{
m_listValue[i].Create(WS_VISIBLE|LVS_EX_GRIDLINES|LVS_SINGLESEL|LVS_ALIGNTOP,CRect(130,0,700,350),this,i+101);
m_listValue[i].SetExtendedStyle(LVS_EX_BORDERSELECT|LVS_REPORT|LVS_EX_GRIDLINES ); 
m_listValue[i].SetTextColor(RGB(0,0,255));
m_listValue[i].InsertColumn(1,"时    间",LVCFMT_CENTER,160);
m_listValue[i].InsertColumn(2,"数据(m)",LVCFMT_CENTER,130);
m_listValue[i].InsertColumn(3,"运行状态",LVCFMT_CENTER,100);
m_listValue[i].InsertColumn(4,"备    注",LVCFMT_CENTER,164);
}
程序刚开始运行的时候没有问题,运行大概了3个小时,就出现错误。
错误的位置是:for (int i=0;i < item;i++)                                                       
{
if (m_LValue[i].idport == port) 
{
CString strTm = tm.Format("%Y-%m-%d %H:%M:%S");       
m_listValue[i].InsertItem(0,strTm);              ///错误出现这一句,说m_listValue[i],找不到地址,这是为什么
m_listValue[i].SetItemText(0, 1, strValue);
m_listValue[i].SetItemText(0, 2, "正常");
m_listValue[i].SetItemText(0, 3, posNote);
break;
}
}错误语句:
m_listValue[i].InsertItem(0,strTm);   
提示找不到地址m_listValue = 0x010a0d46 {CListCtrl hWnd=???}

解决方案 »

  1.   

    你创建的次数太多了吧,判断一下啊:
    if(m_listValue[i].m_hWnd != NULL)
       m_listValue[i].deleteObject();
    m_listValue[i].Create(...);
      

  2.   

    在检查一下其他代码吧,比如确实仅new过一次数组,数组内每个成员也只Create过一次;另外InsertItem的时候也检查下控件窗口是否有效.
      

  3.   

    出错的时候i的值正确么
    另外
    你是不是频繁的调用了m_listValue= new CListCtrl[5]