平铺视图中的c ++虚拟ListView,无法显示子项
Posted
技术标签:
【中文标题】平铺视图中的c ++虚拟ListView,无法显示子项【英文标题】:c++ Virtual ListView in Tile view, can't get subitems to appear 【发布时间】:2013-11-08 13:21:28 【问题描述】:我有一个直接的 win32 c++ 应用程序,我正在用一个视图类型设置为 LV_VIEW_TILE 的 ListView 填充窗口,我还将样式设置为 LVS_OWNERDATA。
我无法弄清楚如何显示子项。此代码创建视图。
DWORD exstyle =WS_EX_CLIENTEDGE|LVS_EX_DOUBLEBUFFER|LVS_EX_JUSTIFYCOLUMNS|LVS_EX_INFOTIP;
g_hwndList = CreateWindowEx(exstyle, WC_LISTVIEW, NULL, WS_CHILD | WS_VISIBLE | LVS_ICON | LVS_OWNERDATA, 0, 0, 0, 0, hWnd, (HMENU) 2702, hInst, NULL);
ListView_SetView(g_hwndList, LV_VIEW_TILE);
LVTILEVIEWINFO tileViewInfo = ;
tileViewInfo.cbSize = sizeof(LVTILEVIEWINFO);
tileViewInfo.dwFlags = LVTVIF_AUTOSIZE;
tileViewInfo.dwMask = LVTVIM_COLUMNS;
tileViewInfo.cLines = 1;
BOOL tst = ListView_SetTileViewInfo(g_hwndList, &tileViewInfo);
我只想再出现一个子项/列。在我的 LVN_GETDISPINFO 我目前有这个:
static int colfmt[1];
colfmt[0] = LVCFMT_LEFT;
static int order[1];
order[0] = 1;
if ((nimfo->item.mask & LVIF_COLUMNS) == LVIF_COLUMNS)
nimfo->item.cColumns = 1;
nimfo->item.piColFmt = PINT(colfmt);
nimfo->item.puColumns = PUINT(order);
if ((nimfo->item.mask & LVIF_TEXT) == LVIF_TEXT)
nimfo->item.pszText = di->LABEL;
if ((nimfo->item.mask & LVIF_IMAGE) == LVIF_IMAGE)
nimfo->item.iImage = di->IMAGE_INDEX;
我不知道在什么时候以及在哪里需要提供子项/列文本,我从来没有看到 nimfo->item.subitem 从 0 变化,并且对于 LVIF_TEXT 的每次调用,结构值总是一样的。
那么我需要在什么时候提供额外的文本数据?
非常感谢。
【问题讨论】:
【参考方案1】:相当愚蠢的是,我没有添加任何列,因此没有被要求提供其他项目。
添加了这个,一切正常
LVCOLUMN col = ;
col.mask = LVCF_SUBITEM;
col.iSubItem = 0;
ListView_InsertColumn(g_hwndList, 0, &col);
【讨论】:
+1。只是有同样的问题(但在德尔福)。由于默认情况下在平铺视图中列不可见,因此这并不完全明显。以上是关于平铺视图中的c ++虚拟ListView,无法显示子项的主要内容,如果未能解决你的问题,请参考以下文章
win8.1 属性-共享:Windows无法显示此连接的属性。WMI信息可能损坏
Android Braintree SDK - Paypal 在 T&C 视图中显示不同的公司名称