Поведение множественного выбора ListView? - PullRequest
0 голосов
/ 08 декабря 2010

ListView в Comtl32.dll v6.0 делает множественный выбор (при использовании клавиши Shift) следующим образом (х означает выделенный)

00xxxx
xxxxxx
xxxx00

Более ранние версии ListView делают это следующим образом:

00xx00
00xx00
00xx00

Есть ли способ сделать это первым способом (путь comctl32 v6.0)?

Спасибо, Джон

1 Ответ

2 голосов
/ 08 декабря 2010

Короткий ответ - нет. Но поскольку это кажется неполным ...

ListView не предоставляет API, который позволяет вам изменять его поведение выбора, и, как Ганскосвенно помещает это в своем комментарии, единственный способ изменить поведение элемента управления ListView, обнаруженного в версиях comctl32.dll до версии 6.0, - использовать машину времени.В элемент управления ListView встроено много уникального поведения в отношении событий выбора, поэтому даже если бы вы попытались и владелец нарисовал элемент управления, чтобы изменить внешний вид поведения выбора, вы внезапно столкнетесьс необходимостью обрабатывать почти нелепое количество оконных сообщений, которые потенциально могут вызвать изменение выбора.

Стоит также указать, что этот вопрос введен в заблуждение на совершенно другом уровне.Если пользователь вашего приложения использует версию Windows, которая включает версию comctl32.dll до версии 6.0, , это поведение, которое они ожидают от элемента управления ListView.Заменять и изменять это было бы для них только путаницей, потому что это не сработало бы так же, как любой другой элемент управления ListView, найденный на их компьютере.Напротив, если пользователь вашего приложения использует версию Windows, которая включает comctl32.dll v6 или новее, элемент управления ListView будет уже работать так, как вы описали по умолчанию.(И вам не следует менять его по тем же причинам.)

...