Я предполагаю, что вы не вызываете SetWindowPos () из потока, в котором вы создали окно. Используйте ту же тему или попробуйте этот флаг:
SWP_ASYNCWINDOWPOS
Если вызывающий поток и поток, которому принадлежит окно, присоединены к различным входным очередям, система отправляет запрос потоку, которому принадлежит окно. Это препятствует тому, чтобы вызывающий поток заблокировал его выполнение, в то время как другие потоки обрабатывают запрос.