我用该CreateWindowEx()
函数创建了一个列表视图控件.我在创建期间指定的扩展样式不适用于列表视图控件.
这是我的代码:
INITCOMMONCONTROLSEX iccx; iccx.dwSize = sizeof(INITCOMMONCONTROLSEX); iccx.dwICC = ICC_LISTVIEW_CLASSES; InitCommonControlsEx(&iccx); hWnd = CreateWindowExW( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES, // Extended Styles WC_LISTVIEWW, // Class Name L"", // Title LVS_REPORT | WS_VISIBLE | WS_CHILD, // Styles 10, // x 320, // y 480, // w 200, // h hWndParent, NULL, hInstance, NULL);
向其添加一些内容后,列表视图的外观如下图所示.
如您所见,我既不能选择完整行,也不会显示网格线.
我错过了什么?如何使扩展样式显示效果?
对于列表视图控件,通过将LVM_SETEXTENDEDLISTVIEWSTYLE
消息发送到控制窗口来显式设置扩展样式.这在文档中说明:
扩展列表 - 视图样式
使用LVM_SETEXTENDEDLISTVIEWSTYLE消息或ListView_SetExtendedListViewStyle或ListView_SetExtendedListViewStyleEx宏之一来使用这些扩展的列表视图控件样式.
例如:
SendMessageW( hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
扩展样式仅在发送此消息后适用.