That does make sense, and yours is a good solution. I'll describe another below.
In the case where a toolbar has been floated, it actually becomes a child of the little floater window. When you query the window location, you still get the location the toolbar -- not its floating container window.
What you could do is:
See if it is floating, and if so, save the screen coordinates of its parent window. Apparently that is the window that will get positioned at the time of FloatControlBar. Another possibility would be to call MoveWindow() on tath parent "mini-frame"
To verify all of this, I suggest that you use the program named Spy++ It will be a lot clearer about which window is a child of which other window. Another way to solve these problems is to breakpoint the code and single-step into the MFC source code. It usually becomes clear what is happening soon enough.