您的位置: 首页 计算机类> 等级考试> 三级考试> PC技术> 辅导资料
公务员考试辅导课程

PC技术辅导:列表视图控件

发布时间:07-29

页 数:7页

上一篇:三级PC技术寻址方式的复习(4)

下一篇:抓取屏幕内容(字符模式)


  本课中我们将学习如何创建和使用列表视图控件。  
理论: 
  列表视图控件和树型视图、丰富文本编辑控件一样是通用控件的一种。可能您都已经知道了列表视图控件,只不过是不知道它的确切名字而已。列表视图控件可以用来很好地显示项目。在这方面它和列表框相同,只不过它的性能更强。 
  有两种方法创建一个列表视图控件。第一种也是最简单的方法是:用资源编辑器来创建它。用该种方法只是不要忘记在您的代码(的任何位置处)加入对InitCommonControls函数的调用(记得吗,调用该函数只是为了隐式地加载包含通用控件的DLL)。另一种方法是调用CreateWindowEx函数,这里您必须指定合适的类名,譬如:SysListView32,WC_LISTVIEW不是正确的类名 
  在列表视图种有四种方法来显示数据:大图标,小图标,列表和报告方式。这些方法和在资源管理器种选择View->Large Icons,Small Icons , List 和 Details 相对应。各种不同的显示方式只是显示了不同的外观而已。譬如,您可能有许多的数据,只是并不想全部显示。 报告方式提供的消息最完全,其它的方式则要少得多。在刚创建一个列表视图时您可以选择一种初始显示方法,随后您可以调用SetWinodwLong函数并设置GWL_STYLE标志位来改变显示方式 
  既然我们已经知道了如何创建列表控件,接下来我们学习如何使用它们。我们将主要集中在报告方式的显示上,因为该种方式演示了最多的列表控制的特性。使用列表控制的步骤如下: 
  调用CreateWindowEx函数来创建一个列表控件,指定它的类名为SysListView32。您还可以在此处指定控件初次显示时的方式。  
创建和初始化用在列表控件中显示项目的图象列表(如果存在)。  
  向列表控件中插入列,如果显示的方式是报告方式这一步是必须的。  
  向控件中插入项目和自项目。  
  列: 
  在报告方式中,有不止一个列。您可以把放入到列表控件中的数据看作是一张表单:这时数据是按行列排列的。在控件中至少有一列。在其它的显示方式中则无所谓,因为这些显示方式有仅有一列。 
  加入列要通过向列表控件发送LVM_INSERTCOLUMN消息来实现。 
  LVM_INSERTCOLUMN 
  wParam = iCol 
  lParam =指向LV_COLUMN型结构体变量的指针 
  iCol 列数,从0开始编号。 
  LV_COLUMN 包含了将插入的列的信息。它的定义如下: 
  LV_COLUMN STRUCT  
  imask dd ?  
  fmt dd ?  
  lx dd ?  
  pszText dd ?  
  cchTextMax dd ?  
  iSubItem dd ?  
  iImage dd ?  
  iOrder dd ?  
  LV_COLUMN ENDS  
  Field name Meanings  
  imask 一组标志位,它指示了该结构体中的那些成员变量是有效的。该结构体中的成员变量并不是同时有效的。在某些时候,可能只有某些成员变量是有效的。结构体可以用来输入和输出。这样让WINDOWS知道那些成员变量是有效的是非常重要的。可能的标志有: 
  LVCF_FMT = fmt有效 
  _SUBITEM = iSubItem有效  
  LVCF_TEXT = pszText有效.  
  LVCF_WIDTH = lx有效 
  您可以一次使用几个标志。譬如,如果您向指定列的文本标签(列名),您必须在pszText成员变量中提供列名,然后指定标志LVCF_TEXT告诉WINDOWS成员变量pszText中的值是有效的,否则WINDOWS将忽略掉pszText中的值。 

  fmt 指定了项目/子项目的对齐方式。可能的值有: 
  LVCFMT_CENTER = 文本居中  
  LVCFMT_LEFT = 文本左对齐  
  LVCFMT_RIGHT = 文本右对齐 

  lx lx 是列的宽度(以像素点为单位)。以后您可以发送消息LVM_SETCOLUMNWIDTH来改变列的宽度。  
  pszText 如果用来设定列的属性时,该成员变量为指向列名的指针。如果是查询列名,该成员变量指向一个足够大的缓冲区,用来接收返回的列名,这是您必须在成员cchTextMax中指定缓冲区的大小。如果是设定列名时,可以忽略该变量,因为该指针指向的是一个ASCII码的字符串,而WINDOWS可以解析出ASCII串的长度。  
  cchTextMax cchTextMax 以字节计的上面一个成员变量指向的缓冲区的小。该成员变量只在您查询列的属性时使用。如果是设定列的属性,那该变量将被忽略。  
  iSubItem 指定和该列相连的子项目的索引号。该成员变量的值用来标识和列相连系的子项目。该列的使用最好地说明了如何把列号和子项目相连。要查询列的属性时可以发送LVM_GETCOLUMN消息,并在成员变量imask中指定LVCF_SUBITEM标志,列表控件将在iSubItem中返回插入时设定的iSubItem值。为了使用该办法,您需要在该成员变量中放入正确的值。  
  iImage and iOrder 为了和IE3.0以上版本兼容。目前我没有这方面的资料。  
  在列表视图控件创建后,您必须至少向其中插入一列。当然如果不打算使用报告方式显示,那倒是没有必要插入列。为了插入列,您需要定义一个LV_COLUMN型的结构体变量,给其成员变量赋上正确的值,指定列号,然后向列表视图控件发送LVM_INSERTCOLUMN消息并把该结构体变量的值传过去。 
  LOCAL lvc:LV_COLUMN 
  mov lvc.imask,LVCF_TEXT+LVCF_WIDTH  
  mov lvc.pszText,offset Heading1  
  mov lvc.lx,150  
  invoke SendMessage,hList, LVM_INSERTCOLUMN,0,addr lvc  
  上面的代码段显示了该过程。当发送LVM_INSERTCOLUMN消息时,他指定了列的标题条文本和它的宽度。  
项目和子项目 
  项目是列表视图中主要的内容。除报告方式显示的外,在列表视图您只能看到项目。子项目是项目的详细信息。一个项目可能有不止一个相关的子项目。举个例子,譬如项目是文件名,那其相关的子项目可能有文件属性、大小、创建日期等。在报告方式的视图中,最左边一列是项目,其它列是子项目。从数据库记录的角度看,项目类似主键,子项目类似记录。 
  至少您的列表视图需要一些项目:子项目是可选的。如果您想要给用户提供更多的信息,可以把子项目和项目相连,然后放到列表视图中以报告的方式显示。 
  您可以通过向列表视图发送LVM_INSERTITEM消息来向其中添加项目,这时还需要把一个指向LV_ITEM型的结构体的变量的指针放到lParam一同传给列表视图。LV_ITEM的定义如下: 
  LV_ITEM STRUCT  
  imask dd ?  
  iItem dd ?  
  iSubItem dd ?  
  state dd ?  
  stateMask dd ?  
  pszText dd ?  
  cchTextMax dd ?  
  iImage dd ?  
  lParam dd ?  
  iIndent dd ?  
  LV_ITEM ENDS  
  Field name Meanings  





     

考试信息

热点排行

最近更新

考试辅导

网校辅导

面授培训

©2006-2008 100ksw.com 版权所有 皖ICP备06013378号