Herzlich willkommen erst mal.
Ein Problem ist wohl auch, dass die Maus ja an der ursprünglichen Stelle bleibt und die Formulargröße sich dann wieder an der Mausposition ausrichten wird.
Es kann auch sein, dass die Größenänderung in FormCanResize wieder diese Ereignisbehandlung aufruft - also ein wiederholter Kreislauf entsteht.
Das müsste man ggf. mal z.B. mit OutputDebugString loggen.
Evtl. könnte man auch einen Timer starten, der die Größenanpassung etwa 1 Sekunde nach der letzten Mausschubserei durchführt.
Dann könnte man die Größe nach Wunsch einstellen und kurz danach wird das Seitenverhältnis korrigiert.
So eine unübliche Verfahrensweise kann aber auch dazu führen, dass die Nutzer dieses eher ablehnen.