The WM_SIZING would be the best but the form does not handle it.
I have an app that I do just that, I keep the aspect while sizing the frame
so when I grab the sides I can adjust the height and the same for the bottom.
processing the WM_SIZING works nicely because you can intercept the values
and change them before they get used, otherwise you'll get flickering issues doing
it with in the OnSize event.
You can do it in the OnSize event but care must be taken to not have it re-enter
if you change the opposite sides to match, also you need to check which way its being sized. It gets tricky indeed.