Member 12330615 Ответов: 1

Как сделать так, чтобы исходный цвет выбранной строки listctrl?


Привет,

Я сделал ListCtrl с типом следующим образом:


item1100.маска = LVIF_TEXT;
item1100.pszText = ІТ("");
item1100.пункт = я;
item1100. iImage = 0;
item1100. state = 0;

Типа DWORD dwEXStyle = m_List_1100.GetExtendedStyle();
m_List_1100. SetExtendedStyle(dwEXStyle | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );


Когда я щелкаю одну строку, цвет выбранной строки становится ярко-синим, но если я щелкаю другие элементы в том же пользовательском интерфейсе, цвет исходной строки меняется с ярко-синего на серый.

В этом случае, как сохранить исходный цвет выбранной строки ListCtrl?

Заранее спасибо.

Что я уже пробовал:

Еще 2 дня потрачены впустую на эту проблему.

1 Ответов

Рейтинг:
10

Jochen Arndt

Это поведение пользовательского интерфейса Windows по умолчанию. Если элемент управления списком не имеет фокуса, выбранные элементы отображаются на сером фоне.

Единственным решением для использования другого цвета в этом случае было бы использование пользовательского нарисованного списка, обрабатывающего Nm_customdraw (просмотр списка) код уведомления (Windows)[^Но тогда вы должны установить цвета для всех возможных состояний внутри этого обработчика и пропустить рисунок по умолчанию, потому что выбранные и горячие элементы наконец-то рисуются системой.

Но я бы не стал этого делать. Это нарушило бы стандартное поведение пользовательского интерфейса, и вам пришлось бы получить цвета, фактически используемые системой для выбранных элементов (пользователь мог выбрать другую тему, где цвет фона выбора не синий).