我已经在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"));
}发布于 2013-10-30 22:10:26
您需要使用样式LVS_SHOWSELALWAYS,否则,只有当控件具有焦点并且处于活动状态时,才会显示选定内容。
编辑:还请记住,还有一种LVIS_FOCUSED样式,它也会强制滚动到此项目。
https://stackoverflow.com/questions/19684474
复制相似问题