【发布时间】:2019-08-17 15:59:22
【问题描述】:
我已经使用 win32 api 创建了一个列表视图。
InitCommonControls();
HWND hwndList1 = CreateWindow(WC_LISTVIEW , L"", WS_VISIBLE|WS_CHILD | LVS_REPORT | LVS_EDITLABELS | LVS_ICON | LV_VIEW_TILE | LVS_EX_GRIDLINES | WS_BORDER | LVS_EX_FULLROWSELECT | ES_LEFT , 10, 10, 300, 190, hwnd, NULL, GetModuleHandle(NULL), 0);
SendMessageW( hwndList1,
LVM_SETEXTENDEDLISTVIEWSTYLE,
LVS_EX_FULLROWSELECT ,
LVS_EX_FULLROWSELECT );
CreateItem(hwndList1 , (char*)L"fault RS458");
CreateItem(hwndList1 , (char*)L"fault RS455");
CreateColumn(hwndList1 , 0 , (char*)L"Insert column" , 300);
我看到列表视图周围有黑色边框。我怎样才能改变它的颜色?
【问题讨论】:
-
尝试删除
WS_BORDER样式。另请参阅此处的 MS 示例:docs.microsoft.com/en-us/windows/win32/controls/… -
@Jesper Juhl 我使用 win32 api 创建了它...编辑了我的问题
-
@Richard Critten 通过删除
WS_BORDER边框被删除 -
我认为 WS_BORDER 会使用系统颜色,所以最简单的覆盖它的方法是自己继承和处理 WM_NCPAINT。
-
顺便说一句,您使用的样式标志不正确。
LV_VIEW_TILE只能通过发送LVM_SETVIEW消息来设置。对于LVS_EX_*标志,您必须发送LVM_SETEXTENDEDLISTVIEWSTYLE。最后ES_LEFT和listview完全没有关系,属于编辑控件。
标签: c++ windows listview winapi