写一个日志文件查看器,模拟数据有200万条,通过sql2005的分页功能实现,具体思路如下:
主界面一个listview,使用virutal listview,数据容器用tlist,一个数据获取线程
当用户查询的时候,发送查询命令给线程,线程返回数据的条目,然后主界面创建等量的数据结构,保存在tlist中,然后listview的ondata事件触发,将这些触发的itemindex和触发的时间存入一个vector,线程中根据触发事件相差不超过100ms来判断是一个ondata事件触发的,然后获取开始和结束行,查询数据库,给结构赋值,然后局部绘制listview,将获取到的数据显示出来
这里有个问题,listview无法知道何时能取得数据,如果等数据到来的时候,调用refresh事件,则界面会很闪烁,这个时候就不要用lvm系列的函数取得相应的rect,然后局部重绘即可
另外有个问题,分页函数取前几页数据很快,最后则很慢,需要建立索引,并根据情况,调整查询的asc desc