Не знаю, если это то же самое или нет, но в какой-то момент в разработке Windows Microsoft добавила слишком умный наполовину «всплывающий» код, который бы помешал программе, у которой нет фокуса, сворачивая свои окна ... вместо этого запись окна в панели программ будет просто мигать. Возможно, есть подобная логика, препятствующая тому, чтобы не передняя программа выдвигала свое окно вперед?
В любом случае, вот некоторый код, который можно попробовать, который может или не может помочь:
// Check to see if we are the foreground thread
DWORD foregroundThreadID = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
DWORD ourThreadID = GetCurrentThreadId();
// If not, attach our thread's 'input' to the foreground thread's
if (foregroundThreadID != ourThreadID) AttachThreadInput(foregroundThreadID, ourThreadID, TRUE);
// Bring our window to the foreground
SetForegroundWindow(hWnd);
// If we attached our thread, detach it now
if (foregroundThreadID != ourThreadID) AttachThreadInput(foregroundThreadID, ourThreadID, FALSE);
// Force our window to redraw
InvalidateRect(hWnd, NULL, TRUE);