本人建了一个从Clistview继承的view然后在里面写下了下面一段话,
sf是在Doc里定义的对象, int i;
while(true)
{
if(pDoc->sf.StartCapture())
{
ADD(i,pDoc->sf.TimeStamp,pDoc->sf.Protocol,pDoc->sf.srcIP,pDoc->sf.srcPort,pDoc->sf.dstIP,pDoc->sf.dstPort,pDoc->sf.Length); // AfxMessageBox(""); //加上此句话就正确
i++;
}
else continue;
}ADD()如下,
ADD(int i, CString a, CString b, CString c, CString d, CString e, CString f, CString g)
{
CString index;
index.Format("%d",i);
GetListCtrl().InsertItem(i,index,i);
  GetListCtrl().SetItemText(i,1,a);
  GetListCtrl().SetItemText(i,2,b);
  GetListCtrl().SetItemText(i,3,c);
  GetListCtrl().SetItemText(i,4,d);
  GetListCtrl().SetItemText(i,5,e);
  GetListCtrl().SetItemText(i,6,f);
  GetListCtrl().SetItemText(i,7,g);

}结果是一运行就死掉了,没有反应,如果把上面// AfxMessageBox("");
的注释去掉,加上AfxMessageBox("");就会在点击对话框后正确显示下一个,否则就会死掉
本人是新来的,分不多,明天要交了,在线等,谢谢大家了!!!!

解决方案 »

  1.   

    i是初始化过的,代码我没贴全。
    加上AfxMessageBox("");
    在没添加一行就点下确定,就能正常运行
    但去掉,一运行就没反应了
      

  2.   

    while 死循环了吧while(true)
    {...
    Sleep(100);
    }
      

  3.   

    这个是sniffer程序,就是捕获我网卡接收到的所有信息,要不断的捕获,所以是循环
      

  4.   

    加上AfxMessageBox(""); 控制权交到对话框上去了
      

  5.   

    你如何跳出while循环呢?贴出的代码可看不出啊
      

  6.   

    我想你说的死是表面的,内部也在运行,
    用线程吧,让界面仍然有机会运行
    加上AfxMessageBox("");  则阻塞,所以就可以看出来在运行,点一下,循环一下
      

  7.   

    surstar说的对,如果我设置循环次数的话,会死掉一会,然后会有结果 。
    我也看了线程方面的知识,但我没用过,在这样的程序中怎么使用?
    在哪开始线程呢?