I think the simplest solution is to just call DestroyWindow. It cannot fail, no matter what UI you have or don't have. Just make sure, before calling it, that the window exists. And also make sure that no other code sequence will attempt to access it anymore.

There is no WM_MOVEWINDOW message but there is WM_MOVE and WM_MOVING.

In my opinion there are two categories of programmers who touch the message queue:

1. Highly skilled programmers writing advanced applications to deal specifically with the message queue.

2. Those who don't know enough programming to achieve their goals using normal programming techniques.

(I excluded the cases when it's clearly stated in the MSDN that the message queue must be modified.)