Well, seems like one of those numerous cases that does not have the right solution....
Moving SetCapture would indeed help, but I do not like the idea that we should be generally THAT MUCH cautios about SetFocus calling order. Means I would rather advise not calling SetFocus in the LostFocus code...
For this kind of situation, U++ has "Accept" virtual method. It is not the same solution, as it actually allows you to move the focus, but it would not allow you to accept the dialog (e.g. via OK button).
If you insist on not-moving the focus, the one correct solution I see is to disable all sibling Ctrls (disabled Ctrl will not get one..).