当前位置: 首页 > news >正文

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

相关文章:

  • 幻兽帕鲁(Palworld)允许自建私服,它是怎么挣钱的呢?
  • 融资项目——配置redis
  • Go语言每日一练——链表篇(四)
  • c实现链表
  • 【网工】华为设备命令学习(Telnet)
  • sklearn实现数据标准化(Standardization)和归一化(Normalization)
  • vue3 解决ionic安卓版顶部状态栏空白问题
  • node.js 使用 elementtree 生成思维导图 Freemind 文件
  • Linux操作系统基础(一):操作系统概述
  • TCP和UDP相关问题(重点)(4)——4.使用TCP的协议有哪些?使用UDP的协议有哪些?
  • Cilium CNI深度指南
  • 【FFmpeg】ffplay 命令行参数 ⑤ ( 设置音频滤镜 -af 参数 | 设置统计信息 -stats 参数 | 设置同步时钟类型 -sync 参数 )
  • TCP的连接和断开详解
  • 云计算运营模式介绍
  • vue 实现一个持续时间定时器组件
  • [译]CSS 居中(Center)方法大合集
  • Git同步原始仓库到Fork仓库中
  • JavaScript对象详解
  • Map集合、散列表、红黑树介绍
  • sessionStorage和localStorage
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Xmanager 远程桌面 CentOS 7
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 计算机在识别图像时“看到”了什么?
  • 排序算法学习笔记
  • 使用 QuickBI 搭建酷炫可视化分析
  • 一、python与pycharm的安装
  • 在weex里面使用chart图表
  • kubernetes资源对象--ingress
  • scrapy中间件源码分析及常用中间件大全
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #### go map 底层结构 ####
  • #Java第九次作业--输入输出流和文件操作
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (层次遍历)104. 二叉树的最大深度
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (九)One-Wire总线-DS18B20
  • (一) storm的集群安装与配置
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • .NET 的程序集加载上下文
  • .net反编译的九款神器
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .NET下ASPX编程的几个小问题
  • .net知识和学习方法系列(二十一)CLR-枚举
  • .Net中的设计模式——Factory Method模式
  • /bin/rm: 参数列表过长"的解决办法
  • @GlobalLock注解作用与原理解析
  • [ solr入门 ] - 利用solrJ进行检索
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [Android]Android开发入门之HelloWorld
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析