群组未在win32列表视图中显示的原因是什么?

时间:2012-03-17 06:10:44

标签: listview winapi controls

在较新版本的公共控件库中,listview支持组。当我使用listview宏添加组时,该组不会显示在列表视图中。 listview控件可能无法显示已添加的组的原因是什么?

1 个答案:

答案 0 :(得分:4)

  1. 在将组添加到列表视图之前,在列表视图上启用组视图。您可以使用ListView_EnableGroupView宏或LVM_ENABLEGROUPVIEW消息来实现此目的。

  2. 列表视图必须具有顶部对齐窗口样式。您可以在资源编辑器中为listview控件设置此样式,或使用LVS_ALIGNTOP应用它。

  3. 该组必须包含与之关联的项目。如果该组没有任何关联的项目,则可能无法显示。将项目插入列表视图时,必须使用LVITEM的iGroupId属性指定组ID。请注意,LVITEM的iGroup属性是只读的,不应用于指定项目所属的组。

  4. 该组必须具有与之关联的项目才能显示。如果在创建项目和组之后设置项目的组,请确保您没有使用仅在Windows CE上可用的ListView_MoveItemToGroup宏。相反,您可以使用ListView_SetItem宏设置项目组。

    LVITEMA Item = {0};
    
    
    Item.mask = LVIF_GROUPID;
    Item.iItem = Index;
    Item.iGroupId = GroupId;
    
    if (ListView_SetItem(hWnd, &Item) == FALSE)
        return FALSE;
    return TRUE;
    
  5. 列表视图不能处于“列表”模式,因为它不受支持。

  6. listview不能是ownerdrawn listview,它也不受支持。

  7. application manifest必须指定公共控件库的6.0或更高版本。

  8. 确保在调用InitCommonControlsEx时不包含ICC_LISTVIEW_CLASSES标志,因为在某些情况下,它可能会阻止listview控件显示组。

  9. 其他资源: