最近在做控件,可是对这个结构还是很模糊,或许是我translate不准吧!
请大家帮我翻译一下,重点是iItem,iSubItem,和state,lParam;
如果谁用过的话,可以说说它的用法!thank you very much!LVITEM
typedef struct _LVITEM { 
    UINT   mask; 
    int    iItem; 
    int    iSubItem; 
    UINT   state; 
    UINT   stateMask; 
    LPTSTR  pszText; 
    int    cchTextMax; 
    int    iImage; 
    LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
    int iIndent;
#endif
} LVITEM, FAR *LPLVITEM; Specifies or receives the attributes of a list view item. This structure has been updated to support a new mask value (LVIF_INDENT) that enables item indenting. This structure supersedes the LV_ITEM structure. mask 
Set of flags that specify which members of this structure contain data to be set or which members are being requested. This can be one or more of the following flags: LVIF_TEXT  The pszText member is valid or must be filled in.  
LVIF_IMAGE  The iImage member is valid or must be filled in.  
LVIF_INDENT  The iIndent member is valid or must be filled in.  
LVIF_NORECOMPUTE  The control will not generate LVN_GETDISPINFO to retrieve text information if it receives a LVM_GETITEM message. Instead, the pszText member will contain LPSTR_TEXTCALLBACK.  
LVIF_PARAM  The lParam member is valid or must be filled in.  
LVIF_STATE  The state member is valid or must be filled in.  
LVIF_DI_SETITEM  The operating system should store the requested list item information and not ask for it again. This flag is used only with the LVN_GETDISPINFO notification message.  iItem 
Zero-based index of the item to which this structure refers. 
iSubItem 
One-based index of the subitem to which this structure refers, or zero if this structure refers to an item rather than a subitem. 
state 
Indicates the item's state, state image, and overlay image. The stateMask member indicates the valid bits of this member. 
Bits 0 through 7 of this member contain the item state flags. This can be one or more of the item state values. Bits 8 through 11 of this member specify the one-based overlay image index. Both the full-sized icon image list and the small icon image list can have overlay images. The overlay image is superimposed over the item's icon image. If these bits are zero, the item has no overlay image. To isolate these bits, use the LVIS_OVERLAYMASK mask. To set the overlay image index in this member, you should use the INDEXTOOVERLAYMASK macro. The image list's overlay images are set with the ImageList_SetOverlayImage function. Bits 12 through 15 of this member specify the state image index. The state image is displayed next to an item's icon to indicate an application-defined state. If these bits are zero, the item has no state image. To isolate these bits, use the LVIS_STATEIMAGEMASK mask. To set the state image index, you should use the INDEXTOSTATEIMAGEMASK macro. The state image index specifies the index of the image in the state image list that should be drawn. The state image list is specified with the LVM_SETIMAGELIST message. stateMask 
Value specifying which bits of the state member will be retrieved or modified. For example, setting this member to LVIS_SELECTED will cause only the item's selection state to be retrieved. 
This member allows you to modify one or more item states without having to retrieve all of the item states first. For example, setting this member to LVIS_SELECTED and state to zero will cause the item's selection state to be cleared, but none of the other states will be affected. To retrieve or modify all of the states, set this member to (UINT)-1. You can use the macro ListView_SetItemState both to set and to clear bits. pszText 
Address of a null-terminated string containing the item text if the structure specifies item attributes. If this member is the LPSTR_TEXTCALLBACK value, the item is a callback item. Do not set the pszText member to LPSTR_TEXTCALLBACK if the list view control has LVS_SORTASCENDING or LVS_SORTDESCENDING style. 
If the structure is receiving item attributes, this member is the address of the buffer that receives the item text. cchTextMax 
Size of the buffer pointed to by the pszText member if the structure is receiving item attributes. This member is ignored if the structure specifies item attributes. 
iImage 
Index of the item's icon in the control's image list. This applies to both the large and small image list. 
If this member is the I_IMAGECALLBACK value, the parent window is responsible for storing the index. In this case, the list view control sends the parent an LVN_GETDISPINFO notification message to get the index when it needs to display the image. lParam 
32-bit value specific to the item. If you use the LVM_SORTITEMS message, the list view control passes this value to the application-defined comparison function. You can also use the LVM_FINDITEM message to search a list view control for an item with a specified lParam value. 
iIndent 
Version 4.70. Number of image widths to indent the item. A single indentation equals the width of an item image. Therefore, the value 1 indents the item by the width of one image, the value 2 indents by two images, and so on. Note that this field is supported only for items. Attempting to set subitem indentation will cause the calling function to fail. 

解决方案 »

  1.   

    Item可以理解为行;subitem理解为行中的列。
      

  2.   

    "最近在做控件"
    不太理解你的意思,我建议你google一下“XListCtrl_demo.zip”,然后下载这个东西,看看他是怎么使用上面这个结构的。
      

  3.   

    看看这篇文章
    http://218.108.41.12/vchome/book/treectrl.htm
      

  4.   

    sub就当行,
    iSubItem 就当列mask 是用来说明你那个字段有效的!state是用来说明你的位图用的!
      

  5.   

    typedef struct _LV_ITEM { UINT mask; //结构成员屏蔽位int iItem; //表项索引号int iSubItem; //子表项索引号UINT state; //表项状态UINT stateMask; //状态有效性屏蔽位 LPTSTR pszText; //表项名文本int cchTextMax; //表项名最大长度int iImage; // 表项图标的索引号LPARAM lParam; // 与表项相关的32位数} LV_ITEM; 
      

  6.   

    typedef struct _LV_ITEM { UINT mask; //结构成员屏蔽位 int iItem; //表项索引号 int iSubItem; //子表项索引号 UINT state; //表项状态 UINT stateMask; //状态有效性屏蔽位 LPTSTR pszText; //表项名文本 int cchTextMax; //表项名最大长度 int iImage; // 表项图标的索引号 LPARAM lParam; // 与表项相关的32位数 } LV_ITEM; 仅供参考!
    我也碰到这个数据结构!日哦!
    最近看程序累死了!
    而且看的都是些奇怪的结构!
      

  7.   

    下面是我曾经写的一小段用到LVITEM的代码
    LVITEM  hItem;
    hItem.mask=LVIF_IMAGE;
    hItem.iItem=nNewIndex;
    hItem.iSubItem=0;
    hItem.state=0xFFFF;
    this->GetItem(&hItem);
    CRect rcIcon;
    GetItemRect(nNewIndex,rcIcon,LVIR_ICON);
    x0=rcIcon.left;
    y0=rcIcon.top;
    this->GetSubItemRect(nNewIndex,nColumnCount-1,LVIR_LABEL,rc);
    x1=rc.right;
    y1=rc.bottom;
    pDC->BitBlt(x0,y0,x1-x0,y1-y0,&dcMem,x0,y0,SRCCOPY); CImageList * m_pImages=this->GetImageList(LVSIL_SMALL);
    ImageList_Draw(m_pImages->m_hImageList,hItem.iImage,pDC->m_hDC,
    rcIcon.left,rcIcon.top,ILD_TRANSPARENT);