I have written an application which changes the cursor depending on its position within the window client area. However I have noticed that when I click on the left mouse button
Usually, you need to override OnSetCursor(), and there, if the mouse is in a place where you want a specific cursor, you call SetCursor() and return TRUE so that DefWindowProc doesn't reset it back to the default arrow.