I tried my code and it works well. It did not saturate a 100% processor, as you said, only took ~ 16%.
I believe that processing takes a lot of time, it is a drawing of your form or a drawing of your background windows (and not an implementation of wndproc).
, ,
System.Threading.Thread.Sleep(10);
:
Marshal.StructureToPtr(rc, m.LParam, false);
10 100 , ...
EDIT: , ~ 16% ~ 12% .