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 уничтожает каретку только тогда, если окно, привлеченное к участию в текущей задаче владеет кареткой.
Чтобы удалить каретку с экрана и уничтожить её форму, используйте функцию DestroyCaret. DestroyCaret уничтожает каретку только тогда, если окно, привлеченное к участию в текущей задаче владеет кареткой.
А не эта ли фигня творится? Те каретка скрыта несколько раз, и одного раза ShowCaret оказывается мало?