0

我在 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"));
}
4

1 回答 1

0

您需要使用样式LVS_SHOWSELALWAYS 否则选择仅在控件具有焦点且处于活动状态时显示。

编辑:还要记住,还有一个 LVIS_FOCUSED 样式,它也强制滚动到这个项目。

于 2013-10-30T14:10:25.917 回答