ListView множественное выборочное поведение?
Вопрос
ListView в comtl32.dll v6.0 делает несколько выборов (при использовании клавиши Shift) следующим образом (x означает выбранное)
00xxxx
xxxxxx
xxxx00
Более ранние версии ListView делают это следующим образом:
00xx00
00xx00
00xx00
Есть ли способ сделать это первым способом (Comctl32 v6.0 Way)?
Спасибо, Джон
Решение
Короткий ответ: нет. Но потому что это кажется неполным ...
А ListView
не выявляет API, который позволяет вам изменить свое отборное поведение, и, как Ганс Косево выражает его в своем комментарии, единственный способ изменить поведение ListView
Контроль, найденный в версиях Comctl32.dll до версии 6.0, находится с машиной времени. В встроено много уникального поведения ListView
контроль относительно событий отбора, поэтому даже если вы попытаетесь и владельца нарисовать элемент управления для изменения внешность Из поведения отбора вы вдруг столкнулись с необходимостью справиться с почти нелепым количеством оконных сообщений, которые потенциально могут вызвать изменение выбора.
Также стоит отметить, что этот вопрос вводит в заблуждение на совершенно ином уровне. Если пользователь вашего приложения запускает версию Windows, которая включает в себя версию comctl32.dll до версии 6.0, Это поведение, которое они ожидают из ListView
контроль. Перелюбный и меняющийся, это было бы не чем иным, как смущать их, потому что это не сработало бы так же, как и все остальные ListView
контроль найден на их компьютере. Напротив, если пользователь вашего приложения запускает версию Windows, которая включает в себя comctl32.dll v6 или более ListView
контроль будет уже Выступайте, как вы описываете по умолчанию. (И вы не должны хотеть менять его по тем же причинам.)