前言:
这个项目是自己肤浅的看了些关于系统的文章后,决定实现一个任务管理器的加强版。现在后悔啊~发现这个任务量实在太大了,差不多两个星期了(星期1到5都晚上时间和周末都用上了),才把进程管理部分完成了一部分。
期间遇到的问题列出一部分,因为很多我都不太记得了。
一、ListCtrl的刷新问题:
当数据量比较大的时候,更新ListCtrl会出现闪烁,因为每次刷新都DeleteAllItems,然后再一个一个的AddItem、SetItemText。这样大部分的时间都被浪费而且造成了界面的闪烁。
解决办法:
1.给ListCtrl设置LVS_EX_DOUBLEBUFFER风格,顾名思义,双缓冲~
2.在更新ListCtrl的时候使用下面的代码段,可以很大程度上改善闪烁的情况,但也不是完美的。
3.运用虚表,这个具体参见http://www.codeproject.com/KB/list/virtuallist.aspx,或者直接Google吧~噢,在更新虚表的时候建议用SetItemCountEx这个方法吧,因为有个参数是防止更新后滚动条移动到开头LVSICF_NOSCROLL.
4.派生了个ListCtrl,功能为:禁止点击第一列、点击非第一列的item的时候会弹出Edit控件,即可编辑item。
派生了个SortCtrl,其实是在CodeProject上找的,不过自己修改了下~
在显示process信息时,使用了虚表技术,具体察看代码~
没有解决的问题:
在正常ListCtrl里,更新数据项后,滚动条不移动这个功能老是实现不了。在网上找了些代码,都不成功,在此我列出一种方法吧,但是没成功~
怪!
后记 :
今天就操作ListCtrl的问题总结出来,希望以后也能记住这些经验,改善不足的地方~
估计明天总结枚举任务栏窗口的事情~
还有,明天开始把当天的学习和工作成果记录下来,在纸质的笔记本上记下!