最后我用的辦法是:SW_SHOWNORMAL BringWindowToTop
SetForegroundWindow
BringWindowToTop
SwitchToThisWindow
typedef void (WINAPI *PROCSWITCHTOTHISWINDOW) (HWND, BOOL);
PROCSWITCHTOTHISWINDOW SwitchToThisWindow;
HMODULE hUser32 = GetModuleHandle("user32");
SwitchToThisWindow = (PROCSWITCHTOTHISWINDOW)GetProcAddress(hUser32,
"SwitchToThisWindow");
hCurWnd = ::GetForegroundWindow();
dwMyID = ::GetCurrentThreadId();
dwCurID = ::GetWindowThreadProcessId(hCurWnd, NULL);
::AttachThreadInput(dwCurID, dwMyID, TRUE);
::SetForegroundWindow(m_hWnd);
::AttachThreadInput(dwCurID, dwMyID, FALSE);
this->ShowWindow(SW_SHOWNA);//簡單的顯示主窗口完事兒
this->SetActiveWindow();
this->SetForegroundWindow();
//this->SetWindowPos(this,LOWORD(lParam),HIWORD(lParam),c.Width(),c.Height(),SWP_NOACTIVATE);
this->BringWindowToTop();
SW_HIDE 隱藏窗口,激活另一窗口
SW_MINIMIZE 最小化窗口,激活另一窗口
SW_RESTORE 用原來的大小和位置顯示一個窗口,同時令其進入活動狀態(tài)
SW_SHOW 用當前的大小和位置顯示一個窗口,同時令其進入活動狀態(tài)
SW_SHOWMAXIMIZED 最大化窗口,并將其激活
SW_SHOWMINIMIZED 最小化窗口,并將其激活
SW_SHOWMINNOACTIVE 最小化一個窗口,但不改變活動窗口
SW_SHOWNA 用當前的大小和位置顯示一個窗口,不改變活動窗口
SW_SHOWNOACTIVATE 用最近的大小和位置顯示一個窗口,同時不改變活動窗口
SW_SHOWNORMAL 與SW_RESTORE相同