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

标签 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;
}

但是,这很尴尬。

最佳答案

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

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

关于winapi - 如何获取列表控件中的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33281164/

相关文章:

windows - 注册 comdlg32.dll 获取 Regsvr32 : DllRegisterServer entry point was not found

c - 当用户在 GetOpenFileName() 中选择取消时,是否有类似于 CDN_FILEOK 的 CDN_FILECANCEL 之类的内容?

winapi - Windows XP、HKCU\...\LastVisitedMRU 允许的最大项目数?

windows - 为什么 WriteFile 调用 ReadFile 以及如何避免它?

c++ - GetRawInputData 不适用于 x64 构建

python - python 捕获剪贴板中的每一个变化

c++ - 在 CLinkCtrl 上按下空格键后调用 TrackPopupMenu() 会导致发出警告消息蜂鸣声。为什么?

winapi - Windows 10,DPI 缩放和全屏