void CTvcDemoDlg::OnTimer(UINT nIDEvent) 
{
ScanChannel(); //具体实现
UpdateListView(); //更新CListCtrl的状态
CDialog::OnTimer(nIDEvent);
}不知道为什么,CListCtrl的状态显示很卡的.有200个行把,5个列~~

解决方案 »

  1.   

    UpdateListView()不要写在OnTimer函数里。写在每次ListView有变化之后
      

  2.   

    为何要UpdateListView呢?好像调用SetItemText修改数据后ListCtrl是自动更新界面显示的。
      

  3.   

    CListCtrl 一次更新200条是很慢的。不要每次都DelteAllItem,不如把这list里面的数据放到一个CList类里面,在CList类里面查找更新或者删除添加,然后在listctrl里面setitemtext或者insert delete
      

  4.   

    “有点卡”具体是什么表现?如果是闪烁严重,可以用双缓冲:
    DWORD exStyle = m_ListCtrl.GetExtendedStyle();
    m_ListCtrl.SetExtendedStyle(exStyle | LVS_EX_DOUBLEBUFFER);
      

  5.   

    因为是200行.所以会有拖动条.当我点拖动条的时候.很明显,有闪烁~~
    数据显示也是等个1到2秒之后才显示出来.
    在UpdateListView 函数里.我也是先GetItemText来判断数据有没有变化.
    如果没有.则什么也不做..如果有的话就SetItemText 一下~~就是这样的...
    但我不明白..怎么会这么闪烁呢..尤其是当ScanChannel 这个函数实现的多的时候..
      

  6.   

    m_wndList.SetExtendedStyle(m_wndList.GetExtendedStyle() | LVS_EX_FULLROWSELECT|LVS_SORTASCENDING|LVS_TYPEMASK);我的是这么定义的~~
      

  7.   

    用LVS_EX_DOUBLEBUFFER替换掉LVS_TYPEMASK。
      

  8.   

    谢谢楼上的..我试试看~~如果可行的话分就全是你的了。哈~~
    另能否指点下LVS_TYPEMASK 这些属性具体是指什么意思呢?
    能否给个连接?谢谢~
      

  9.   

    现在还不能确定双缓冲是否可以完全解决你的问题,先试了再说。另外我不喜欢一个人独吞所有的分,应该所有帮忙分析问题的人都或多或少有一点分才对。
    窗口和控件风格可以在MSDN中查看说明,ListCtrl的扩展风格可以输入Extended List View Styles来查。LVS_TYPEMASK是取类型风格用的掩码,不是风格,更不是扩展风格,所以不该出现在这里。
      

  10.   

    恩~~我试试~~如果可行的话分就是楼上的了。呵呵~~
    另能否指导下~~象这些LVS_TYPEMASK具体是什么属性呢?
    可否给个连接~~~谢谢~~
      

  11.   

    error C2065: 'LVS_EX_DOUBLEBUFFER' : undeclared identifier
    奇怪了.google下也找不到..
      

  12.   

    在stdafx.h中,包含所有头文件之前,加上#define _WIN32_WINNT 0x501
      

  13.   

    或者自己定义#define LVS_EX_DOUBLEBUFFER 0x00010000
      

  14.   

    我今天弄了下~~~还是不行...特别是当ScanChannel 频繁处理的时候...
    不知道另开线程不知道行不行..我看了下当CListCtrl 显示卡住的时候..那时候CPU占用率其实也才20%左右而已.
      

  15.   

    是卡在ScanChannel里面了吧?可以另开线程来处理,但不要每次都GetItemText,可以把所有文字都缓冲在内存中,直接与内存中的文字比较,发现不同时再SetItemText。
      

  16.   

    数据多的话用SetItemText方式不好,速度会很慢,用虚表的方式吧,数据刷新都是在内存里刷新的,显示几百万条都没问题
      

  17.   

    对于大量数据,ListView有种Virtual List的方式,可以根据需要显示数据,即使上百万条记录也不怕.重载OnData事件就可以