我有两个与Qt一起运行的独立进程,我需要能够将一个进程放在另一个进程之前。他们彼此沟通,所以你认为这不会是一个大问题。但是Windows 10对此非常严格。我所要做的就是让我想要在Windows工具栏中前面闪烁橙色的窗口。
Code I尝试使用到目前为止:
A类(当前有效):
AllowSetForegroundWindow(ASFW_ANY);
B级(我想带到前面的那个):
#ifdef WIN32
if(hWnd)
{
SetForegroundWindow(hWnd);
SetActiveWindow(hWnd);
BringWindowToTop(hWnd);
}
#endif
hWnd早先得到(当B类是活动窗口时):
hWnd = GetActiveWindow();
我误解了什么吗?为什么这仍然不起作用?
答案 0 :(得分:0)
如何将Qt / Windows小部件始终置于顶部?
面对如上所述的一些问题,以下解决方案对我有用:
void widgetToTop(QWidget* widget)
{
bool wasMax = widget->isMaximized();
bool wasMin = widget->isMinimized();
HWND h = (HWND)widget->winId();
if (wasMax || wasMin)
{
::ShowWindow(h, SW_SHOW);
::ShowWindow(h, wasMax ? SW_MAXIMIZE : SW_RESTORE);
::SetForegroundWindow(h);
}
else
{
::ShowWindow(h, SW_SHOWNORMAL);
::SetForegroundWindow(h);
}
}
这当然可以使用纯Win32 API重新编写。
P.S。也许解决方案并不完全“在另一个之上”,但可能就足够了。