代码之家  ›  专栏  ›  技术社区  ›  Suri

如何使焦点保持在同一对话框上的所有列表控件上?

mfc
  •  1
  • Suri  · 技术社区  · 14 年前

    我在一个对话框上有3个列表控件,但只有一个显示焦点。 如果单击第二个列表控件,则焦点将从第一个列表控件中消失。 表示一次只有一个列表显示焦点。 如何使焦点保持在同一对话框上的所有列表控件上?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Jeff    14 年前

    正如布赖恩所说,焦点一次只能集中在一个控件上。我猜你是想根据第一个列表框更改其他列表控件。一种方法是将变量与每个列表控件相关联,如mlistctrl1、mlistctrl2。然后添加一个NM“单击”事件的处理程序,并具有如下代码:

    void CTabTestDlg::OnNMClickList3(NMHDR *pNMHDR, LRESULT *pResult)
    {
       LPNMITEMACTIVATE pNMItemActivate = (LPNMITEMACTIVATE)(pNMHDR);
       // TODO: Add your control notification handler code here
       *pResult = 0;
       UpdateData(true);
       DWORD dwData = mListCtrl1.GetItemData(pNMItemActivate->iItem);
       int max = mListCtrl2.GetItemCount();
       for (int i=0;i<max;i++)
       {
          DWORD dwData2 = mListCtrl2.GetItemData(i);
          if (dwData==dwData2)
          {
             mListCtrl2.SetItemState(i,LVIS_SELECTED,LVIS_SELECTED);
             break;
          }
       }
       UpdateData(false);
    }
    

    请注意,我将控件设置为“始终显示选定内容”和“单个选定内容”

        2
  •  1
  •   Brian Scott    14 年前

    我认为这在技术上是不可能的。”focus'是只能应用于单个元素的属性。

    从“焦点”的角度来看,它是用户当前正在与之交互的元素。如何期望用户同时与3个不同的元素交互?

    推荐文章