我写的一个函数void Display(void)可以通过编译,但是不能够正确显示,
void CfrhDlg::Display(void)
{
         int nItem;
         CStringList dkj;
         CString str;
for(int i=0;i<500;i++){
dkj.AddTail("sdgy"+'='+'i');
}
    

for(int j=0;j<500;j++){
POSITION pos=dkj.GetHeadPosition();
str=dkj.GetNext(pos);
nItem=m_listctrl.InsertItem(j,str);
if(! pos) break;
}
}
请问为什么,该怎么改???谢谢

解决方案 »

  1.   

    for(int j=0;j<500;j++){
    POSITION pos=dkj.GetHeadPosition();
    str=dkj.GetNext(pos);
    nItem=m_listctrl.InsertItem(j,str);
    if(! pos) break;
    }
    改成:
    POSITION pos=dkj.GetHeadPosition();
    int j = 0;
    while(pos)
    {
       str=dkj.GetAt(pos);
       nItem=m_listctrl.InsertItem(j,str);
       dkj.GetNext(pos);
       j++;
    }
      

  2.   

    同意楼上.
    POSITION pos=dkj.GetHeadPosition();应该放在循环体外,不然每次循环都取头结点,得出后面的结点肯定与理想不符