This isn't actually true though. You can delegate to the default window proc, and only customise what you want.
Sure, if your window is now a triangle, you need to think about how resizing is going to work. But you don't need to re-implement everything from scratch -- only the defaults that aren't compatible with your new design.