您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Windows 7:无论其他哪个窗口都有焦点,如何将一个窗口置于最前面?

Windows 7:无论其他哪个窗口都有焦点,如何将一个窗口置于最前面?

我已经运行了很多年的代码,一直回??到Windows95。双击应用程序系统任务栏图标时,我总是使用Win32 API函数(如BringWindowToTop和SetForegroundWindow)将应用程序窗口置于前台。这一切都在Windows 7上按预期停止了,在Windows 7上,我的输入窗口将最终位于其他窗口之后,并且窗口图标将在状态栏上闪烁。我想到的“解决方法”是这样。似乎可以在所有Windows版本上使用。

//-- show the window as you normally would, and bring window to foreground.
//   for example;
::ShowWindow(hWnd,SW_SHOW); 
::BringWindowToTop(hWnd);
::SetForegroundWindow(hWnd);

//-- on Windows 7, this workaround brings window to top
::SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
::SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
::SetWindowPos(hWnd,HWND_NOTOPMOST,0,0,0,0,SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE);
其他 2022/1/1 18:40:54 有696人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶