[训练]用api函数改进listview控件的显示效果

[训练]用api函数改进listview控件的显示效果

ID:34241328

大小:66.49 KB

页数:14页

时间:2019-03-04

[训练]用api函数改进listview控件的显示效果_第1页
[训练]用api函数改进listview控件的显示效果_第2页
[训练]用api函数改进listview控件的显示效果_第3页
[训练]用api函数改进listview控件的显示效果_第4页
[训练]用api函数改进listview控件的显示效果_第5页
资源描述:

《[训练]用api函数改进listview控件的显示效果》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、用API函数改进ListView控件的显示效果作者:王建兵文章來源:转帖点击数:1292更新时间:12/18/2()03一、ListView使用简介-…ListView控件是VB开发者非常喜爱的控件之.一。作为Windows95公共控件组(COMCTL32.OCX)的成员,它经常与经常与TreeView.ImageList等控件联合使用。即用TreeView显示一个的树和结构,而用ListView显示选中的节点(Node)对彖的记录集。--这是笔者在开发财务软件项目中的《凭证管理>>模块的一个用户界面。屏幕左边是

2、一个TreeView控件,用來显示会计凭证的类别:右边是一个istView,用來显示对应类别的凭证H录;上方是一个菜单条控件(MenuBar)和一个工具条控件(ToolBar);下方是一个状态栏控件(StatusBar),用来显示凭证数个当前日期。--大家可以看到图中所示的界而非常类似于Window95/98的资源浏览器,Windows的界面风格做为一种标准己为广大用户所接受。而Windows操作系统的主要的优点就是为所有的应用程序提供了公用的界面。知道如何使用基于Windows的应用程序的用户,很容易学会使用其

3、他应用程序。这种使用Windows95公共控件纽合的方法能够达到与Windows界而的一致性,所以在目前VB5.0应用程序的开发中经常使用。二、填充人量结果集所遇到的问题--在实际应用开发中,经常用ListView填充一个数据库结果集(Recordset)的内容。即先写一段SQL查询语旬,产生一个结果集,然后将结果集的每一条记录用DO...LOOP循环语句中填到ListView屮。--但是当结果集很大时(例如冇5000条以上的记录),填充所需要的时间会很长。用户不得不等很长时间完成一个查询。所以在查询的过程小必须

4、允许用户按Escape键退出。具体做法是在DO...LOOP循坏体中加一条DoEvents函数,并写一段中断退出程序代码。--DoEvents函数的功能是:转止控制权,以便让操作系统处理其它的事件。这样在长时间的查询过程中,如果用户按了Escape键,将退出循坏体,结束查询过程。--但是这样又会引发另外一个问题:由于DoEvents可以让操作系统响应别的事件,循环体中填充每一条ListView项S(Listitem)的过程也会显示til來,所以在填充的过程中屏幕会不停的闪动,这种现象当然不能被用户所接受。如何解决

5、这个问题呢?三、解决方案--用WindowsAPI两数可以解决这个问题。首先对几个用到的API两数做一解释和说明。——1.GetClientRectLib"user32"(ByVaihwndAsLong,IpRectAsRECT)AsLong--此函数的功能是获得一个指定对象窗□(Window)的矩型框区«(rectangle)o--Hwnd为指定对象或窗体的句柄。LpRcct为返回矩型框的结构(必须定义为结构类型的变量)。----2.ValidateRectLib"user32"(ByVaihwndAsLong

6、,IpRectAsRECT)AsLong一此函数的功能是使指定的矩型区域生效。这样会通知Windows不必对指定的区域进行重画(Redraw)。——3.InvalidateRectLib"user32"(ByVaihwndAsLx)ng,IpRectAsRECT,ByValbEraseAsLong)AsLong■…此函数的功能是使指定的矩型区域无效。这样会通知Windows耍对指定的区域进行重画。--具体实现的步骤如下:■…1.在填充结果集之前先用GetClientRect函数获得ListView的显示区域。—-

7、2.在増加完一个显示项S(Listitem)后用ValidateRect函数置这一区域为有效。这样Windows就不会显示每一条Listitem.屏幕闪动的现象就会消失。-…3.在填充结果集之.后,用InvalidateRect*

8、数置这一区域为无效。这样Windows就会重画ListView的内容,结果集被完整的显示來。--下面是笔者在项目开发中的一个程序实例。程序名为刖ListView。该程序将填写一个Access数据库(FISCAL.MDB)的凭证表(Tabic)的内容到ListView中。-…首先进入VB

9、5.0,新建一个窗体(Form),名为Formlo然后在Form中增加下列控件。控件名NameListViewLvwImagelistimlListCommandButton。Command1-…将ImageList控件中充填一个名为“item”的图象后与ListView控件关联。——在vvT程>>菜单命令条屮进入"引用”对话框,选择"MicrosoftDAOObject

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。