【发布时间】:2010-10-19 10:36:55
【问题描述】:
我在一个对话框上有 3 个列表控件,但只有一个显示焦点。 如果我点击第二个列表控件然后焦点从第一个列表中消失。 意味着一次只有一个列表显示焦点。 如何让焦点保持在同一个对话框的所有列表控件上?
【问题讨论】:
标签: mfc
我在一个对话框上有 3 个列表控件,但只有一个显示焦点。 如果我点击第二个列表控件然后焦点从第一个列表中消失。 意味着一次只有一个列表显示焦点。 如何让焦点保持在同一个对话框的所有列表控件上?
【问题讨论】:
标签: mfc
我认为这在技术上是不可能的。 “焦点”是一个只能应用于单个元素的属性。
“焦点”是用户当前正在与之交互的元素。如何期望用户同时与 3 个不同的元素进行交互?
【讨论】:
正如布赖恩所说 - 焦点一次只能放在一个控件上。我猜您正在尝试根据第一个列表框更改其他列表控件。一种方法是将变量与每个列表控件相关联,例如 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);
}
请注意,我将控件设置为“始终显示选择”和“单选”
【讨论】: