msdn上说LVCOLUMN中的mask包括以下几项 
LVCF_IMAGE  LVCF_ORDER  LVCF_SUBITEM  LVCF_TEXT  LVCF_WIDTH 
而LVCOLUMN的数据结构如下:
typedef struct _LVCOLUMN { 
    UINT mask; 
    int fmt; 
    int cx; 
    LPTSTR pszText; 
    int cchTextMax; 
    int iSubItem; 
#if (_WIN32_IE >= 0x0300)
    int iImage;
    int iOrder;
#endif} LVCOLUMN, FAR *LPLVCOLUMN; 
问题一:LVCF_IMAGE是不是对应结构中的iImage变量,即如果mask中包括了LVCF_IMAGE,则iImage变量就必须得设置?其它的掩码的作用与此类似?
问题二:iSubItem与iOrder的区别何在?为什么我感觉它们是一个意思?说说它们的区别

解决方案 »

  1.   

    1 是
    2 iSubItem表示列编号,iOrder表示列序号
    想象一下一个班同学排队,每个人有在列中的序号,也有自己的学号
      

  2.   

    1 是
    2 hardlv.iOrder=0////////这一项有必要写吗?可以不写。如果mask中没有
    设某一项,是不是在数据中就不必对它进行设置了。LVCOLUMN.iOrder相对
    于字段而言,而iSubItem相对子项而言。所以,对于"家庭住址"而言,LVCO
    LUMN.iSubItem不存在,LVCOLUMN.iOrder=2,而对于一个子项"01 男 上海市
    1111111" 上海市的LVCOLUMN.iSubItem=2.
      

  3.   

    我感觉还是不太对呀,请看下面的代码:          LVCOLUMN colinfo;
    colinfo.mask=LVCF_TEXT|LVCF_WIDTH;
    colinfo.cx=100;
    colinfo.cchTextMax=255;
    colinfo.pszText="名称";
    colinfo.iSubItem=0;
    colinfo.iOrder=0;
    list.InsertColumn(0,&colinfo); colinfo.pszText="类型";
    colinfo.iSubItem=1;
    colinfo.iOrder=1;
    list.InsertColumn(1,&colinfo); colinfo.pszText="大小";
    colinfo.iSubItem=2;
    colinfo.iOrder=2;
    list.InsertColumn(2,&colinfo);
    colinfo.pszText="修改时间"; colinfo.iSubItem=3;
    colinfo.iOrder=3;
    list.InsertColumn(3,&colinfo);
    大家的意思是说.SubItem是某一项的属性,而iOrder是某一列(某一字段)的属性,可上面的代码是这样吗?在上面添加列的过程中,iSubItem与iOrder都被指定了啊。照理说这里只应该设iOrder而不应该设iSubItem啊,因为iSubItem是某一具体项的信息啊为什么??
      

  4.   

    列表创建完之后各列的Order可以变的,但是item不会变
      

  5.   

    列的顺序可以通过拖放header来改的,这时候需要用列的编号访问