You are correct, you don't understand it.
FillRect(10,10,19,19) and FillRect(Rect(10,10,20,20)); should produce the same results, but they don't
The first, is a plotted rectangle on the surface using two locations as separate sets of parameters, the second set should point directly to the last pixels of the surface that is to be painted, not outside the painted surface.
As for the TRECT overload, the Right, Bottom always needs to be one more than the actual painted surface, this is just how it's been since windows 3.x
But if you are going to have a two location plots without using a TRECT then the second set X2,Y2 should be pointing exactly on the last pixel row, not outside it like the TRECT does.
Currently the X1,Y1, X2,Y2 simply constructs a TRECT using these values without making the compensation to force the X2,Y2 outside the interior so that the TRECT overload can correctly function.
Do you understand this now? if not, I'll remove this post because it's getting too much for me to handle trying to explain the defect of the four parameter overload.
Jamie