我在定时器中有一个这样的一个函数,用来实现每秒遍历一边阻塞队列,然后把阻塞队列里的每一个阻塞时间-1显示在listview控件上面,我这个空间分为两栏,一个是进程名称,一个是阻塞时间。
{
  if(!EmptyQueue(zuse))
  {
        zusenum=NumQueue(zuse);
for(j=0;j<zusenum;j++)
{
zusePCB=OutQueue(zuse);
if(zusePCB->zuseTime!=0)
{
SendMessage(hList,LVM_DELETEITEM,0,0);
sprintf(zusetmp,"%d",zusePCB->zuseTime);
LV_ITEM item;
item.mask=LVIF_TEXT;
item.iItem=0;
item.iSubItem=0;
item.pszText=zusePCB->name;
SendMessage(hList,LVM_INSERTITEM,(WPARAM)0,(WPARAM)&item);
item.iSubItem=1;
item.pszText=zusetmp;//其实每一秒需要修改的是这里,所以我想每次只是更改第二栏的内容而不是重新插入新的item项,因为我有多个阻塞进程,需要同时在listview中显示时间的倒计时
SendMessage(hList,LVM_SETITEM,(WPARAM)0,(WPARAM)&item);//这句是重新建立第一列和第二列不行
zusePCB->zuseTime-=1;
InQueue(zuse,zusePCB);
}
else
{
//唤醒进程
}
}
  }
}
可能说的不清楚,我看大家不明白我在说说看吧。

解决方案 »

  1.   

    如果可以获得listview的句柄
    可以用setitemText达到你的要求
      

  2.   

    你说的进程,线程还是???最后:
    为什么用SendMessage呢?
    SendMessage(hList,LVM_INSERTITEM,(WPARAM)0,(WPARAM)&item); 
    不是又
    ListView_Insert这些宏API吗?再说了,你现在用的可是MFC啊~
      

  3.   

    我对编辑框控件都是用settext的,我可以获得listview的句柄,但是不知道如何用settext给第二列赋值
      

  4.   

    SendMessage(hList,LVM_SETITEM,(WPARAM)0,(WPARAM)&item);
    这是设置list item项的数据.每次自能设置一项.你每行有两项数据,因此需要调用两次.另外注意维护item.iItem,item.iSubItem的值.尤其要是你每次item.iItem都等于0的时候,只会设置第一行的item表项数据,其他表项的都没有设置数据
      

  5.   

    我在写进程模拟程序
    因为我想用winsdk实现,所以就用了sdk和mfc混编了,因为我原先看过一片这个文章,在sdk下使用mfc的listview控件
      

  6.   


    SetItemText(nRow, nCol, text);
      

  7.   

    其实我是想每次更改第二列的内容,而不是删除listview中的一个item,然后重新建立,因为我是没秒调用一次。
      

  8.   

    我没有用mfc写,用sdk写的,只能发送消息那种
      

  9.   

    用LVM_SETITEMTEXT消息,在结构中填写掩码、item及subitem索引值、文字及长度等。详见MSDN。
      

  10.   


    一样的
    SetItemText有对应的消息
    查一下MSDN