Как сделать так, чтобы фокус оставался на всем элементе управления списком в одном диалоговом окне? - PullRequest
1 голос
/ 19 октября 2010

У меня есть 3 списка управления в одном диалоговом окне, но только один показывает фокус. если я нажал на 2-й элемент управления списком, то фокус исчезает с 1-го. Одновременно означает только один список, показывающий фокус. Как сделать так, чтобы фокус оставался на всем элементе управления списком в одном диалоговом окне?

Ответы [ 2 ]

1 голос
/ 19 октября 2010

Я не думаю, что это технически возможно.«Фокус» - это атрибут, который может применяться только к отдельному элементу.

Думайте об этом в терминах «фокуса» - это элемент, с которым пользователь взаимодействует в данный момент.Как пользователь будет взаимодействовать с 3 различными элементами одновременно?

0 голосов
/ 19 октября 2010

Как говорит Брайан - фокус может быть только на одном контроле за раз.Я предполагаю, что вы пытаетесь изменить другие элементы управления списком на основе первого списка.Один из способов сделать это - связать переменную с каждым элементом управления списком, например 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);
}

Обратите внимание, что у меня установлен элемент управления «Всегда показывать выбор» и «Один выбор»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...