在Win32中的ListView中永久保留行

时间:2012-02-03 15:45:02

标签: c listview winapi mfc selection

我正在使用Win32 ListView32。

当选择 ListView 中的行时,它具有深蓝色。 可以通过单击它或通过调用ListView_SetItemState(hwnd, index, LVIS_SELECTED, LVIS_SELECTED);以编程方式选择行。

ListView 控件焦点丢失时,所选行变为灰色。

如何将所选行保持深蓝色而不管焦点如何?

3 个答案:

答案 0 :(得分:2)

使用LVS_SHOWSELALWAYS窗口样式。我不认为它可以保持深蓝色,因为它是该控件具有焦点的指标。

答案 1 :(得分:1)

“大概你是在OnInitDialog处理程序中这样做的?如果是这样,你需要 将SetFocus设置为列表控件,并从OnInitDialog返回FALSE。“

答案 2 :(得分:1)

如果您使用的是VC6.0。您可以将属性设置为“始终显示选择”到ListView。而ListView将由VC6.0定义为LVS_SHOWSELALWAYS

资源文件中CONTROL的定义如下:

CONTROL         "List2",IDC_LIST_MEMBER,"SysListView32",LVS_REPORT | 
                LVS_SHOWSELALWAYS | LVS_EDITLABELS | WS_BORDER | 
                WS_TABSTOP,7,64,514,187

并且将突出显示所选项目。对于我的程序,默认背景颜色为白色,默认选择和聚焦颜色为蓝色,默认选择但丢失的聚焦颜色为灰色(当用户点击其他控件时)。