Как надежно отловить факт изменения состояния чекбокса?
Видел попытки реализации через WM_LBUTTONDOWN/WM_LBUTTONUP, но событие WM_LBUTTONUP не приходит при клике на чекбоксе. Приходит только если нажать кнопку, поелозить мышкой внутри чекбокса и отпустить. Но при этом не меняется состояние чекбокса.
Пробовал другие события, происходящие после отпускания — если кликать на чекбоксе выделенного айтема, то все получается, а если любого другого — состояние чекбокса изменяется лишь после самого последнего события. Даже если при WM_LBUTTONDOWN выбирать соответствующий айтем, ситуации это не меняет. Пробовал предвосхищать изменение состояния, наткнулся на те же грабли с другого конца — нет никакой уверенности, что состояние изменится.
Работаю с апи-тривью, так же проверял поведение стандартной ocx-обертки. Она ведет себя аналогично с WM_LBUTTONUP, но при этом MouseUp генерируется в любом случае, хотя состояние изменяется тоже после MouseUp.