According to the DestroyCaret function found at:
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-destroycaret
"Destroys the caret's current shape, frees the caret from the window, and removes the caret from the screen.
DestroyCaret destroys the caret only if a window in the current task owns the caret. If a window that is not in the current task owns the caret, DestroyCaret does nothing and returns FALSE.
The system provides one caret per queue. A window should create a caret only when it has the keyboard focus or is active. The window should destroy the caret before losing the keyboard focus or becoming inactive."