SetItemState不会自动标记

时间:2013-10-30 14:05:33

标签: c++ function mfc

我在MFC对话框的报表视图中为我的列表控件创建了搜索功能。看起来像这样

m_List.SetItemState((m_List.FindItem(&Finde)),LVIS_SELECTED,LVIS_SELECTED ); 

它搜索变量Finde中的内容并对其进行标记。现在它应该标记该行。但我首先要点击程序中的某个地方。调用函数后,它不会直接标记行。

任何人都可以帮助我吗?

这是完整的功能

LVFINDINFO Finde;
Finde.flags = LVFI_PARTIAL|LVFI_STRING;
Finde.psz = _T("Siffert");
if ((m_List.FindItem(&Finde)) != -1)
{
    m_List.SetItemState((m_List.FindItem(&Finde)),LVIS_SELECTED,LVIS_SELECTED ); 
    //m_List.SetSelectionMark((m_List.FindItem(&Finde)));
}
else
{
    MessageBox(_T("No Results"));
}

1 个答案:

答案 0 :(得分:0)

您需要使用样式LVS_SHOWSELALWAYS 其他只有在控件具有焦点且处于活动状态时才会显示选择。

编辑:另请注意,还有一种LVIS_FOCUSED样式,它也会强制滚动到此项目。