需要实现的是:切换指定hwnd 到前台,并且让其获得焦点。 (不是完全在最上层)
指定的几个hwnd原本都是最大化全屏的,所以切换过去后,要让其全屏。我目前的问题:切来切去,只能做到切过去后,显示在最前面,但终究没法获得焦点。
比如当前在A窗口,要切到B窗口:第一次切没问题,后面再切就会出现:B程序显示在最前面了,但任务栏上当前窗口还是A窗口,任务栏上面B窗口在闪烁,用户不得不用鼠标点一下,才能完全切到B窗口!有时候B程序是全屏幕显示的,每次都要人工去弄一下,才能让任务栏消失,很讨厌。希望有彻底的完美的切换办法!除去彻底使用top_most外...我的目前的源码: SetWindowPos(hWnd, HWND_TOPMOST, -1, -1, -1, -1, SWP_NOMOVE|SWP_NOSIZE); SetWindowPos(hWnd, HWND_NOTOPMOST, -1, -1, -1, -1, SWP_NOMOVE|SWP_NOSIZE); HWND   hForegdWnd   =   ::GetForegroundWindow(); DWORD   dwCurID   =   ::GetCurrentThreadId(); DWORD   dwForeID   =   ::GetWindowThreadProcessId(hForegdWnd,   NULL); ::AttachThreadInput(dwCurID,   dwForeID,   TRUE); ::SetForegroundWindow(hWnd); ::AttachThreadInput(dwCurID,   dwForeID,   FALSE); SwitchToThisWindow(hWnd, TRUE);基本上能搜到的函数都干上了,还是不行!在线等高手解答,并在线测试,可用就立马结贴。

解决方案 »

  1.   

    罗嗦一句, 末尾再干上一条: SetActiveWindow(hWnd); 仍不顶用!
      

  2.   

    setfocus 试过了, 不行。问题依旧。
      

  3.   

    哈哈, 完美解决!参考的这位仁兄:http://blog.csdn.net/felixz/archive/2007/03/28/1544486.aspx哎,困扰已久的问题终于搞定,不过也有些收获:windows这么做,原来是设计的原因:http://social.microsoft.com/Forums/zh-CN/visualcpluszhchs/thread/820a97dd-5376-46c3-9cfa-03939a10f18b散分吧~