Win32 SDK Gui编程系列之--ListView自绘OwnerDraw(续)

通过所有者绘制的列表视图(2)         

        所有者绘制列表视图的基础已在前一页中说明。本页将展示如何在所有者绘制列表视图中显示数据库表数据。
1、访问日志 正如在另一个页面中所述,本网站的访问日志目前是通过SQLite3数据库管理的。
        以下是上述程序执行的结果。为了有效管理大量记录,每个访问记录都被数字化。这样的数据并不以原始形式存在于关系数据库的表中。
b5f792f445084d7e8c51186cd38ec98f.png
        通过执行下面红色显示的SQL语句(选择查询)来获取表log和表path的数据:

90:     sqlite3_open(LOGDB, &db);   // 打开数据库
91:     sql = "select count(*) as cnt,name from log,path 
                where log.pid=path.id group by pid order by cnt desc";
92:     sqlite3_exec(db, sql, callback, 0, &zErrMsg);
93:     sqlite3_close(db);

顺便说一下,通过SQL语句 "select count(*) from log;" 可以得到表log的记录数。
        截至2013年5月2日,这个值是532,394。在我平时使用的移动PC(1.83GHz, 2.0GB)上,执行上述红色查询的时间是2、3秒。当记录数达到几百万时,执行时间会成为问题。 我正在考虑更换电脑,这样几百万条记录应该没问题,但数千万条记录可能就不行了。 在这种情况下,解决方案总是不从所有原始日志中获取,而是例如按月汇总。 2. 所有者绘制的列表视图 要将列表视图设置为所有者绘制,需要在创建时的窗口样式中添加LVS_OWNERDRAWFIXED。 列的创建与标准列表视图相同。 由于不需要设置显示字符串,因此记录的创建比标准列表视图简单。但是,不能省略。

56: void onCreate(HWND hWnd) {
57:     int iCol, iRow;
58:     hList = CreateWindowEx(0, WC_LISTVIEW, NULL, 
59:                         WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_OWNERDRAWFIXED,
60:                         0, 0, 1, 1, hWnd, (HMENU)777, NULL, NULL);
61:     SendMessage(hList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_GRIDLINES);
62:     for (iCol = 0; iCol < NCOL; iCol++) {
63:         LVCOLUMN col = { LVCF_FMT|LVCF_TEXT|LVCF_WIDTH|LVCF_SUBITEM, 0,
64:                          iCol==0 ? 50 : iCol==1 ? 90 : 400

相关推荐

  1. Android studio ListView

    2024-02-07 09:14:02       68 阅读
  2. Win32编辑框消息学习

    2024-02-07 09:14:02       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-07 09:14:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-07 09:14:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-07 09:14:02       87 阅读
  4. Python语言-面向对象

    2024-02-07 09:14:02       96 阅读

热门阅读

  1. 从事机器视觉,笔记本电脑该如何选型

    2024-02-07 09:14:02       48 阅读
  2. [python-opencv] PNG 裁切物体

    2024-02-07 09:14:02       45 阅读
  3. 人工智能的测试与评价

    2024-02-07 09:14:02       47 阅读
  4. mysql问题

    2024-02-07 09:14:02       44 阅读
  5. QT QCombox 样式表 比起作用

    2024-02-07 09:14:02       44 阅读
  6. Spring和Spring Boot的区别

    2024-02-07 09:14:02       51 阅读
  7. YY调音台:音频后期处理

    2024-02-07 09:14:02       53 阅读
  8. Linux常用命令

    2024-02-07 09:14:02       46 阅读
  9. Spring Boot使用easy poi

    2024-02-07 09:14:02       56 阅读
  10. Python requests库请求封装

    2024-02-07 09:14:02       56 阅读