如何在Listview的头部添加一个checkbox样式的item? (Win32 C++)

问题描述 投票:0回答:1

我想在Listview的标题中添加一个复选框样式的项目,但是不起作用。这是我所做的: 在 MainWndProc 中

case WM_CREATE:{
  HWND hHeader = CreateWindowEx(0,WC_HEADER,L"Header Control",WS_CHILD | WS_VISIBLE | HDS_CHECKBOXES,
            10, 10, 1000, 20,hWnd,(HMENU)ID_HEADER,GetModuleHandle(NULL),NULL);
  HDITEM hdi;
  hdi.mask = HDI_FORMAT | HDI_WIDTH;
  hdi.cxy = 100;
  hdi.fmt = HDF_CHECKBOX;

  int index = SendMessage(hHeader, HDM_INSERTITEM,
    (WPARAM)0, (LPARAM)&hdi);
}

结果在这里: enter image description here

我还尝试了其他一些 api 或 marco,如 Header_SetItem 和 Header_InsertItem,但复选框也没有出现。 如何向列表控件列标题添加复选框以选中和取消选中列表项的所有复选框?中的问题正是我想要做的,但我不想使用MFC。我可以只使用 HDITEM 结构和 Header_InsertItem 来完成这项工作吗?这是我第一次在堆栈溢出中提问。如果我的问题中有任何不清楚的信息,请告诉我。预先感谢您的帮助。

c++ winapi win32com
1个回答
0
投票

从你的图片来看,你似乎没有使用视觉样式。

您必须使用 Common Control 6.0 或更高版本。 如果没有视觉样式,此标志将无法工作。

请参阅启用视觉样式

© www.soinside.com 2019 - 2024. All rights reserved.