*************VC中我有一个全局线程函数,用于网络监听,有新用户连接时,将新用户信息显示在TreeView上,如何在线程函数中访问TreeView

解决方案 »

  1.   

    线程发现新用户连接时,把用户信息SendMessage给TreeView!
      

  2.   

    PostThreadMessage给主线程,主线程处理treeview.
      

  3.   

    不能把TreeView的指针通过线程的参数传递进去吗?
      

  4.   

    不要在线程里面处理TreeView的刷新显示问题
    windows里面的类指针不是线程安全的,handle才是。
    但是在工作者线程里面处理显示刷新等操作不是不行,但和界面线程容易发生内在冲突,因为界面线程也在刷新界面。
    不管是从资源线程安全的角度还是编程面向对象,条理清晰的角度来说,都是在线程里面向界面处理窗口发送消息比较好,程序代码处理起来简单,清晰(刷新和显示只在一处进行),而且也安全。
      

  5.   

    你在启动线程的时候,将你的TreeView所在的窗口的指针或者Handle作为参数传进去。然后再你要访问TreeView的时候,对该窗口发消息。然后再消息处理函数里,根据消息内容,更新你的界面。
      

  6.   

    传window的指针进线程,不一定安全.
       除了线程发消息给主线程外,还有这样的方法:
       如果你的界面的刷新频率非常大 ,那么有可能占用cpu资源.可以在主界面上放个定时器,比如设定1秒刷新一次 ,你就可以在顶事器里去获取你的工作者线程想要显示到界面上的信息(两个线程之间要加适当的同步).