现使用线程下载文件,同时用消息机制来对主界面上的控件进行下载状态和下载进度的更新。现问题如下:    1. 我有2个列表 一个是可下载的列表 一个是正在下载的列表 2者必须同时更新,可是问题是如何得到要更新的行在正在下载列表中所处的行号。 我有个想法就是遍历去获得每一行的对应列的数据 然后将其与要更新的行的对应列进行比对 然后进行更新,但是效率可能是个问题。
    2. 有没有其他办法做到2个表的同时更新,效率比较高的。    3. 关键的约束条件是相同内容在2个表里面所处的行数不相同。

解决方案 »

  1.   

    将行号传回去有问题吗?
    或者用个YD的方法  将两个列表的位置组成一个结构体  然后new一个结构  将地址传到线程里面
    线程里面就知道位置(我还不是很确定线程是不是知道位置)  需要更新的时候 写入这个结构的地址  然后SendMessage的时候将结构的指针传过去
      

  2.   

    如果两个不一样   就用我说的那个方法 
    用一个结构体 
    struct data
    {
         int iFirstPos;
         int iSecPos;
    };然后SendMessage通知主窗口的时候将这个结构的指针传过去就OK了     
    线程中知道具体的行号吗? 
      

  3.   


    想到个办法 :在插入正在下载列表的时候将行号传到线程里面去,然后postmessage的时候将其传出来,这样应该可以了。量不大,枚举也是不怎么费劲。呵呵 只是想知道有没有其他的办法。学习下大家的思想,一个人的想法总是太局限了。
      

  4.   

    响应LVN_INSERTITEM消息不行吗?CListCtrl::InserItem插入新内容到第一个CListCtrl的时候,通知第二个ListCtrl需要更新了
      

  5.   

    或者你响应LVN_ITEMCHANGING消息,当第一个ListControl不是插入而是修改的话,CListCtrl::SetItemText调用,通知第二个ListCtrl
      

  6.   

    不好意思,公司10-13号一直没办法打开csdn!!!今天才能开。