This is based on some test I've done with a interactive test application. Cursor change and default message processing is blocked by not null NM_SETCURSOR result. A not important difference with native is in 'pt' field. It seems that native doesn't initialize it correctly, I decided to always zero it.