我正在使用列表视图控件(如here所述),我尝试计算某列和某个列表项的交集的矩形。
我找到了GetSubItemRect
(参见here)已经写了很多内容(例如here)。特别是,它使用一个基于索引的索引,仅适用于真正的“子项”,而使用“子项索引”0
调用它不会产生第一列的矩形,而是整个项目的矩形。
我想到这一切都没有问题,因为我可以解决如下问题:
RECT wholeItem;
GetItemRect(iItem, &wholeItem, LVIR_BOUNDS); // compute whole line
RECT subItem;
GetSubItemRect(iItem, 1, LVIR_BOUNDS, &subItem); // adjust right border to beginning of first subitem
wholeItem.right = subItem.left;
然而,这种方法显然无法处理子项1的列具有零宽度的情况。在这种情况下,subItem
是一个rect,其组件全部为0(可能通过SetRectEmpty
生成)。
我认为我可以通过执行以下操作来解决此问题:
wholeItem.right = GetColumnWidth(0)
所以,我的问题是:
GetColumnWidth
)是否可靠?