首页 / 知识
关于C#:虚拟Listview控件的(主)缓冲区中应该有几行?
2023-04-14 09:51:00

How many rows should be in the (main) buffer of a virtual Listview control?虚拟Listview控件的(主)缓冲区中应有多少行? 我正在用Win32 API的纯" c"样式显示一个应用程序。到数据库的ODBC连接将检索项目(实际上是行)。 MSDN示例代码暗含一个30的固定大小的缓冲区,用于端缓存(几乎肯定不是最佳选择)。我认为末端缓存和主缓存应具有相同的大小。 我的想法是缓冲区应该大于列表视图一次可以显示的最大项目数。我想每次调整Listivew的大小时都可以重新计算? 或者,采用较大的固定值是否更好?如果是这样,那是什么值? LVN_ODCACHEHINT通知消息将使您知道它要询问多少个项目。这可以帮助您确定缓存的大小。 使用ListView_roximateViewRect(或LVM_APPROXIMATEVIEWRECT消息)获取视图的矩形高度。 使用ListView_GetItemRect(或LVM_GETITEMRECT消息)获取项目的高度。 将视图区域的高度除以项目的高度,以获取可以容纳在视图中的项目数。 然后相应地创建缓冲区。 答案似乎是:(或者我随便摆弄想法的随机笔记集) 作为缓冲区的一般答案: 这似乎是错误的。事实证明,大多数加载数据的方式都已准备好进行缓冲。文件I / O的ODBC调用。我几乎无法想到的所有东西要么都在内存中,要么是即时重新计算的。这意味着答案确实是:采用LVN_ODCACHEHINT中提供的值(并在每侧加1-如果您没有整数的高度,这似乎工作得更快)。 @Brian R. Bondy感谢您对如何获得物品数量的明确帮助。实际上,我已经准备好以自己的方式了解可以使用ListView_GetCountPerPage来完成此操作(对于列表视图还是报表视图),并且我将使用您的方式将其用于其他对象,尽管自从我不需要ListView_近似ViewRect以来,所有人都将知道ListView的新大小。 @Lars Truijens我已经在使用LVN_ODCACHEHINT了,尽管已经使用它来设置缓冲区大小,但是我需要读到SQL数据的末尾以找到最后一项,以获取从ODBC返回的行数。由于那是填充"结束缓存"的最佳时间,我想我必须先设置项目数量(并因此填充缓冲区),然后才能调用LVN_ODCACHEHIN。 我想我的真正问题是优化,我认为Brian暗示了答案。浪费缓冲区和重新分配内存的开销小于进入网络并进行ODBC读取的开销,有些会使缓冲区很小,并且经常更改它。 这是对的吗? 我已经做了很多工作,似乎认为LVN_ODCACHEHINT通常可以正确填充主缓冲区,并且仅当部分行(在报告模式下)可见时才会丢失。 因此,我认为缓存大小的答案是:显示项的总数,加上一行显示项(因为在图标视图中,每行有多个项)。 然后,如果每个WM_SIZE和LVN_ODCACHEHINT具有不同的开始和结束项目编号,则将重新读取该缓存。 |
最新内容
相关内容
linux命令实时显示?
linux命令实时显示?,系统,实时,时间,信息,情况,命令,对比,电脑,名称,一致,linux用set命令显示当前模式set命令作主要是显系统中已经存在的shel虚拟机linux系统命令?
虚拟机linux系统命令?,系统,工具,软件,名字,时间,命令,工作,首次,环境,名称,Linux虚拟机命令如何创建新的文件和文件夹1、首先,连接相应linux主linux编译时显示命令?
linux编译时显示命令?,系统,基础,工具,代码,百度,下来,网上,命令,内核,文件,LINUX中此程序运行后,为何刷新不出命令提示符?1、有几个原因:一:你linux命令连接ip?
linux命令连接ip?,地址,系统,网络,工作,信息,命令,密码,名称,设备,服务,linux系统常用操作命令linux常用命令有pwd命令、cd命令、ls命令、catlinux显示运行命令?
linux显示运行命令?,系统,服务,状态,信息,工具,数据,电脑,标准,管理,时间,如何查看linux服务器运行状态?1、linux怎么查看服务器状态?我们一起显示linux网卡命令行?
显示linux网卡命令行?,系统,信息,工具,网络,服务,电脑,网卡,技术指标,地址,命令,怎么在Linux系统中查看和编辑网卡信息?1、首先第一步根据下图linux命令显示内容?
linux命令显示内容?,标准,系统,数据,命令,百度,实时,时间,信息,文件,内容,linux命令怎样把lic文件显示出来1、打开一个 terminal,(就是终端程序),linux命令连接网址?
linux命令连接网址?,网址,系统,地址,服务,传播,数据,命令,名字,环境,网站,如何使用linux命令打开网页)、sudo命令:sudo命令用来以其他身份来执linux常用显示命令?
linux常用显示命令?,工作,地址,系统,信息,管理,命令,目录,标准,功能,常用命令,linux系统常用操作命令1、linux常用命令有pwd命令、cd命令、lslinux用命令显示账号?
linux用命令显示账号?,密码,系统,信息,地址,电脑,名字,用户,命令,用户名,用户信息,linux怎么查看用户名及密码?方法/步骤首先,打开linux客户端linux命令行同步显示?
linux命令行同步显示?,地址,工具,系统,数据,工作,时间,命令,综合,网址,信息,Linux常用命令有哪些1、linux常用命令如下:查看内核版本:uname-a。linux数据库查找命令?
linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,在linux中如何用命令查找文件在哪使用查找命令 “find”命令允许