Тривью из Common Controls 5 с TVS_CHECKBOXES

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Тривью из Common Controls 5 с TVS_CHECKBOXES

Сообщение Antonariy » 24.10.2008 (Пт) 14:17

Как надежно отловить факт изменения состояния чекбокса?

Видел попытки реализации через WM_LBUTTONDOWN/WM_LBUTTONUP, но событие WM_LBUTTONUP не приходит при клике на чекбоксе. Приходит только если нажать кнопку, поелозить мышкой внутри чекбокса и отпустить. Но при этом не меняется состояние чекбокса.

Пробовал другие события, происходящие после отпускания — если кликать на чекбоксе выделенного айтема, то все получается, а если любого другого — состояние чекбокса изменяется лишь после самого последнего события. Даже если при WM_LBUTTONDOWN выбирать соответствующий айтем, ситуации это не меняет. Пробовал предвосхищать изменение состояния, наткнулся на те же грабли с другого конца — нет никакой уверенности, что состояние изменится.

Работаю с апи-тривью, так же проверял поведение стандартной ocx-обертки. Она ведет себя аналогично с WM_LBUTTONUP, но при этом MouseUp генерируется в любом случае, хотя состояние изменяется тоже после MouseUp.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Тривью из Common Controls 5 с TVS_CHECKBOXES

Сообщение Antonariy » 24.10.2008 (Пт) 15:26

Нашел, состояние меняется после WM_CAPTURECHANGED, генерить событие можно в следующем вызове windowproc.
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Тривью из Common Controls 5 с TVS_CHECKBOXES

Сообщение tyomitch » 24.10.2008 (Пт) 15:40

А что TVN_ITEMCHANGED?
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Тривью из Common Controls 5 с TVS_CHECKBOXES

Сообщение Antonariy » 24.10.2008 (Пт) 21:08

TVN_ы я прочесывал не менее внимательно, чем WM_ы, незнакомых значений не попадалось.
Minimum operating systems: Windows Vista

Не удивительно, что MSDN 2001-2005 я ее не видел, нашел только в свежем Windows SDK. Даже гугль о ней знает всего семьдесят два упоминания на паре десятков интернет-страниц, в основном состоящих из недоумений, почему оно не работает.
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Тривью из Common Controls 5 с TVS_CHECKBOXES

Сообщение tyomitch » 25.10.2008 (Сб) 0:20

Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Тривью из Common Controls 5 с TVS_CHECKBOXES

Сообщение Antonariy » 25.10.2008 (Сб) 8:03

По сути то же самое, что WM_CAPTURECHANGED, просто WM мне на глаза попалось раньше. Но тут решено красивше. :)
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 57

    TopList