1.) press and hold the left mouse button, while over a widget.
2.) move the cursor outside of the window and back inside again, while still holding the mouse button down. after few tries, SetHardwareCursor will fail to change the cursor.
3.) you can release the mouse button now, move the cursor around, and even do a few clicks here and there, but SetHardwareCursor still wont be able to change the cursor.
4.) after leaving the window and re-entering again, SetHardwareCursor will finally change the cursor.
ps: yes i know i shouldnt use Event Tick, but i couldnt think of a better way to demonstrate the problem. also the bool return value from SetHardwareCursor still returning true, even though the cursor is “broken”.