"You let the call go to base.WndProc
which is going to set its own Result" Genius! That is the solution! Whoa, thanks Raymon Chen!
Thus with other words... When I handled the message in the overridden WndProc I can set the Result to a number and not call the base.WndProc. For messages not handled I call the base WndProc. Be aware that the return number has to be in a range that is not system-defined (https://learn.microsoft.com/en-us/windows/win32/winmsg/about-messages-and-message-queues#application-defined-messages) so 0x8000 to 0xBFFF works.
Thanks again!