CListCtrl *list = &(pView->GetListCtrl());
int count = list->GetItemCount(); for(nIndex = 0; nIndex<count; nIndex++)
{
liststr = list->GetItemText(nIndex,0);
if(str.CompareNoCase(liststr) == 0)
{
IsFind = true;
break;
}
}
if(IsFind)
{
list->SetItemState(nIndex,LVNI_SELECTED,LVNI_SELECTED);  // LVNI_FOCUSED |  list->SetFocus();
m_newDialogBar.SetDlgItemText(IDC_POINTNAME, tmp);
}
为什么要加这句话才能让listctrl中的某一行成“选种状态”

解决方案 »

  1.   

    SetFocus()函数就是用于设置焦点嘛。SetFocus函数发送WM_KILLFOCUS消息到失去键盘焦点的窗口,并且发送WM_SETFOCUS消息到接受键盘焦点的窗口。它也激活接受键盘焦点的窗口或接受键盘焦点的窗口的父窗口。
      

  2.   

    这很正常,setFocus后list控件才获得了输入焦点,其选中等状态才会显示可以随便找个有list控件/组合框控件等的窗口,当鼠标点了某个控件后那个就获得了焦点,典型的例子:选择一个combobox后,鼠标即使移动到其他地方,转滚轮仍影响其选择,但当鼠标点击其他地方后,combobox就没有选中状态了,就不受滚轮影响了
      

  3.   

    控件加上LVS_SHOWSELALWAYS风格。
      

  4.   

    加上LVS_SHOWSELALWAYS风格就不需要list->SetFocus();就能让listctrl中的某一行成“选种状态”了?
      

  5.   

    控件加上LVS_SHOWSELALWAYS风格。
      

  6.   

    加上LVS_SHOWSELALWAYS风格就不需要list->SetFocus();就能让listctrl中的某一行成“选种状态”了?
      

  7.   

    setFocus后list控件才获得了输入焦点,其选中等状态才会显示 可以随便找个有list控件/组合框控件等的窗口,当鼠标点了某个控件后那个就获得了焦点,典型的例子:选择一个combobox后,鼠标即使移动到其他地方,转滚轮仍影响其选择,但当鼠标点击其他地方后,combobox就没有选中状态了,就不受滚轮影响了
      

  8.   


    setFocus后list控件才获得了输入焦点,其选中等状态才会显示 可以随便找个有list控件/组合框控件等的窗口,当鼠标点了某个控件后那个就获得了焦点。