程序是这样的:
   UpdateData(TRUE); 
  CString str="11575.514.23774.26498.16668.9775.17923.19283.256.11526."; 
  CString strTempsave[10]; 
  for(int i=0;i<10;i++) 
    { 
AfxExtractSubString(strTempsave[i],str,i,'.'); 
m_list.AddString(strTempsave[i]);
Sleep(100);
UpdateWindow();
    } 
  for(int n=0;n<15;n++)
    {
Sleep(700); 
m_list.DeleteString(0);
UpdateWindow();
    }
  UpdateData(FALSE);其中m_list是CListBox型的变量,这个程序把str的数据按“.”分割后显示在listbox控件中并一条一条消失,现在需要做一个缓冲区,让listbox每次只显示三个数据,当缓冲区内数据小于3的时候可以让后面的数据进入,让缓冲区内数据始终保持在3个,直到最后所有的数据消失,请问各位高手,这个缓冲区该怎么去编啊?急死人了啊!

解决方案 »

  1.   

    你的listbox显示多少跟缓冲区没什么关系,为什么不控制listbox只显示三个元素呢?
      

  2.   

    先把CString处理开来一个个的放到一个CList,然后ListBox显示前3个
      

  3.   

    自己处理字符串,用SetItemText设置当前要显示的内容。
      

  4.   

    让缓冲区内数据始终保持在3个直接操作Listbox不就行了
    int size = m_list.GetCount();  if ( size < 3 )
        m_list.InsertString(size, str);
      else
      {
        m_list.DeleteString(0);
        m_list.InsertString(2, str);
      }
      

  5.   

    最好的办法,自己继承一个CListBox
    重载InsertString(),或者自己实现一个接口MyInterface()
    {
       while(2<GetCount()) Delete first row;
       InsertString(GetCount(),InputString);
    }
      

  6.   

    四楼的大哥,数据切割后放在了strTempsave[10]中,用for循环让其全部显示,所以m_list.InsertString(size, str);是不是应该改成m_list.InsertString(size, strTempsave[i]);可是这样一改得不到想要的结果,这是咋回事??
      

  7.   

    m_list.InsertString(size, strTempsave[i]);看看你的索引值对不对?