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

Mfc 如何使焦点保持在同一对话框中的所有列表控件上?,mfc,Mfc,我在一个对话框上有3个列表控件,但只有一个显示焦点。 若我点击了第二个列表控件,那个么焦点将从第一个控件显示出来。 表示一次只有一个列表显示焦点。 如何使焦点保持在同一对话框中的所有列表控件上?我认为这在技术上是不可能的“焦点”是一个只能应用于单个元素的属性 从“焦点”的角度考虑,焦点是用户当前正在与之交互的元素。如何期望用户同时与3个不同的元素交互?我认为这在技术上是不可能的。”“焦点”是一个只能应用于单个元素的属性 从“焦点”的角度考虑,焦点是用户当前正在与之交互的元素。如何期望用户同时与3

我在一个对话框上有3个列表控件,但只有一个显示焦点。 若我点击了第二个列表控件,那个么焦点将从第一个控件显示出来。 表示一次只有一个列表显示焦点。
如何使焦点保持在同一对话框中的所有列表控件上?

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


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

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


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

正如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);
}
void CTabTestDlg::OnNMClickList3(NMHDR*pNMHDR,LRESULT*pResult)
{
LPNMITEMACTIVATE pNMItemActivate=(LPNMITEMACTIVATE)(pNMHDR);
//TODO:在此处添加控件通知处理程序代码
*预设值=0;
更新数据(真);
DWORD dwData=mListCtrl1.GetItemData(pNMItemActivate->iItem);
int max=mListCtrl2.GetItemCount();

对于(int i=0;i,正如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);
}
void CTabTestDlg::OnNMClickList3(NMHDR*pNMHDR,LRESULT*pResult)
{
LPNMITEMACTIVATE pNMItemActivate=(LPNMITEMACTIVATE)(pNMHDR);
//TODO:在此处添加控件通知处理程序代码
*预设值=0;
更新数据(真);
DWORD dwData=mListCtrl1.GetItemData(pNMItemActivate->iItem);
int max=mListCtrl2.GetItemCount();

对于(int i=0;我正在制作一个列表控件,其中一个元素是颜色,如果用户单击该元素,则会打开另一个列表,其中显示已选择的颜色。是否有任何方法可以在每个列表上获得焦点或突出显示。@user323422:抱歉,我不理解您遇到的问题。请详细解释,或者用一些示例说明e?我正在制作一个列表控件,其中一个元素是颜色,如果用户单击该控件,则会打开另一个列表,其中显示已选择的颜色。是否有任何方法可以在每个列表上获得焦点或突出显示。@user323422:抱歉,我不理解您遇到的问题。请详细解释,或者使用一些示例代码?u understood问题正确,但我使用的是列表控件。在列表控件中,我使用的是SetItemState()并应用了与您相同的逻辑,但如果我单击列表项,则不会在第二个列表中显示所选内容。有什么线索吗?您正确理解问题,但我使用的是列表控件。在列表控件中,我使用的是SetItemState()并应用了和你们相同的逻辑,但若我点击列表项,它不会在第二个列表中显示所选内容。有什么线索吗?