如何获取列表控件中的列数

时间:2015-10-22 12:34:05

标签: winapi comdlg32

我需要在报告模式下获取列表控件中的列数。

现在我发送的LVM_GETCOLUMN列号越来越多,直到SendMessage返回FALSE

int col;
for (col = 0;; col++)
{ 
  LVCOLUMN Column;
  Column.mask = LVCF_WIDTH;
  if (!::SendMessage(hWnd, LVM_GETCOLUMN, col, (LPARAM)Column)
    break;
}

但这很尴尬。

1 个答案:

答案 0 :(得分:8)

您可以从列表控件的标题控件中检索列数。

HWND hWndHdr = (HWND)::SendMessage(hWnd, LVM_GETHEADER, 0, 0);
int count = (int)::SendMessage(hWndHdr, HDM_GETITEMCOUNT, 0, 0L);