title: What are the differences between BringWindowToTop, SetForegroundwindow, SetWindowPos etc.?
body: <p><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms632673%28v=vs.85%29.aspx" rel="noreferrer"><code>BringWindowToTop</code></a>, <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms633539%28v=vs.85%29.aspx" rel="noreferrer"><code>SetForegroundWindow</code></a>, <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms633553%28v=vs.85%29.aspx" rel="noreferrer"><code>SwitchToThisWindow</code></a>, <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545%28v=vs.85%29.aspx" rel="noreferrer"><code>SetWindowPos</code></a>, <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx" rel="noreferrer"><code>ShowWindow</code></a> all are described as showing and activating a window.</p>
  
  <p>What are the real differences between them?  When and why would <code>BringWindowToTop</code> be preferred to <code>SetForegroundWindow</code>, or <code>SwitchToThisWindow</code> or even <code>SetWindowPos</code> with the flags set to activate and show?</p>