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

时间:2010-10-19 10:36:56

标签: mfc

我在一个对话框中有3个列表控件,但只有一个显示焦点。 如果我点击第二个列表控件然后从第一个焦点消失。 意味着一次只有一个列表显示焦点。 如何使焦点保留在同一对话框的所有列表控件上?

2 个答案:

答案 0 :(得分:1)

我不认为这在技术上是可行的。 “焦点”是一个只能应用于单个元素的属性。

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

答案 1 :(得分:0)

正如Brian所说 - 焦点只能在一个控件上。我猜你正在尝试根据第一个列表框更改其他列表控件。一种方法是将变量与每个列表控件相关联,如mListCtrl1,mListCtrl2。然后为NM_CLICK事件添加一个处理程序,并有一些代码如下:

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);
}

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