У меня крб есть, но реализована наоборот - прерывается не новый тик, а старый.
Та сам то хоть понимаешь всю степени маразма, содержащегося в этой фразе?
КРБ это Контр-Рекурсионная Блокировка. Это значит, что она работает против разнастания стека вверх, а не для убийтсва подлежащих фреймов.
Нельзя завершить предыдущий тик из нового. Если этот вызван не из предыдущего — предыдущего просто не существует. А если из предыдущего, то никто не сможет проверить твой флаг, пока выполнение не вернёлся в предыдущий?
А зачем тогда городить какие-то блокировки, если по возврату в предыдущий фрейм он и так сам по себе закончится?Ты мне усиленно пытаешься вот уже второй день доказать, что можно вытянуть из болота самого-себя за волосы, и даже предлагаешь посмотреть (почитать) доказательства.
Некие манипуляции мышью блокирует одну-единственную процедуру. Процедура замерла. А следующий тик произошёл, и вычисления возобновились. Когда манипуляции закончились, мы вернёмся в замершую процедуру и увидем, что флаг установлен - вычисления продолжать не нужно (их уже продолжает следующий тик).
Не, вот, а....
Единственной процедурой, которая замирает (зависает) была оконная процедура ScrollBar-а. Ты в ней что-ли, родной, хочешь проверку вставить? Мало того, что ты не сможешь, если бы ты смог, ты бы поламал скроллинг.
Или тебе видится ещё какая-то процедура, которая замирает? Расскажи мне о ней. Потому что таких процедур нет — единсветнное, что замирало, так это ML внутри SBWP, до тех пор пока не произойдёт отпускание мыши.
Единственное пожалуй, что тебе действительно под силу сделать — это в качестве установки своего флага надуть скроллбар — послать ему WM_LBUTTONUP заставив проверить, что таскать ползунок прекратили. Вот тогд замерший SBWP действительно прекратит лупиться, и отдаст управление обратно в DoEvents, а потом и в обработчик первого тика.
Но это поломает скроллбара. Но это поломает скроллбар — его познунок будет в лучшем случае через пиксель drop-аться после того, как он начал drag-аться.
Кстати - судя по счётчикам входов-выходов - скрол всё-таки не крутится в одной и той же процедуре. По крайней мере, когда я отпускаю-таки скрол, процедура, в которой я его нажал, уже довно закрылась.
Ну да, принцип FCLR у тебя на процедуры не распространяется. Я вот подумал, а не зря ли я трачу время, вдалбливая, что этот принцип есть?