WIN XP\2000 之后的系统不允许随便使用SetForegroundWindow;如果需要强制置顶可以用一下代码:
HWND hForeWnd = ::GetForegroundWindow();
DWORD dwCurThreadID = ::GetCurrentThreadId();
DWORD dwForeThreadID = ::GetWindowThreadProcessId(hForeWnd, NULL);
::AttachThreadInput(dwCurThreadID, dwForeThreadID, TRUE);
::ShowWindow(m_hWnd, SW_SHOWNORMAL);
::SetForegroundWindow(m_hWnd);
::AttachThreadInput(dwCurThreadID, dwForeThreadID, FALSE);
将自己的线程链接到当前前景窗口的线程,以使自己能够置顶。
另外,使用未公开函数SwitchToThisWindow也可以达到目的。