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

Nat*_*iri 2 winapi controls listview

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

Nat*_*iri 5

  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;
    
    Run Code Online (Sandbox Code Playgroud)
  5. 列表视图不能处于“列表”模式,因为它不受支持。

  6. 该列表视图不能是所有者绘制的列表视图,它也不被支持。

  7. 应用程序清单必须指定公共控件库6.0或更高版本。

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

其他资源: