Works fine for me. Also you don't need to call LostFocus, this will be done for you.
Now, some other suggestions:
'delete this' should never be used as it relies on the object being created by 'new'. Have the owner set the TopWindow::WhenClose callback to a function that deletes it instead.
Actually, multiple peer windows scenario is one of exceptions to U++ common scope based resource management.
In this case is often the simplest thing to 'new' main windows and to use 'delete this' to close them. See UWord example.
Of course, it is also possible to deal with this using Array of windows or something like that, but we have found that in this particular situation, it is only more complex...