Вверх ↑
Разработчик
Ответов: 26073
Рейтинг: 2122
#1: 2016-08-10 03:20:51 ЛС | профиль | цитата
sla8a писал(а):
уточните, пишут что накапливается, а вы что не накапливается

Кто пишет? Читаем первоисточник -- https://msdn.microsoft.com/en-us/library/windows/desktop/ms648399(v=vs.85).aspx
или переведенную версию -- http://www.vsokovikov.narod.ru/New_MSDN_API/Caret/fn_createcaret.htm
Там черным по белому написано

Функция CreateCaret автоматически уничтожает предыдущую форму каретки, если она есть, независимо от окна, которое владеет кареткой

Те надо понимать так, что автоматически вызывается DestroyCaret и назначается новое окно в текущей задаче.

А вот HideCaret накапливается -- http://www.vsokovikov.narod.ru/New_MSDN_API/Caret/remov_caret.htm

Вы можете временно удалить каретку, скрывая её, или можете удалить на постоянно, уничтожив её. Чтобы скрыть каретку, используйте функцию HideCaret. Она применяется тогда, когда ваше приложение должно перерисовать экран при обработке сообщения, но должно сохранить каретку в недоступном для уничтожения месте. Когда приложение завершает рисовать, оно может показать на экране каретку снова при помощи использования функции ShowCaret. Сокрытие каретки не разрушает ее форму и не аннулирует точку ввода. Сокрытие каретки накапливается; то есть если прикладная программа обращается к функции HideCaret пять раз, она должна также обратиться пять раз и к функции ShowCaret прежде, чем каретка вновь появится.

Чтобы удалить каретку с экрана и уничтожить её форму, используйте функцию DestroyCaret. DestroyCaret уничтожает каретку только тогда, если окно, привлеченное к участию в текущей задаче владеет кареткой.

А не эта ли фигня творится? Те каретка скрыта несколько раз, и одного раза ShowCaret оказывается мало?
карма: 22

0