该应用程序是MFC的。有时,我需要激活窗口并在其停用、隐藏或最小化时将其显示在屏幕的最顶部。这就是我所做的:
AfxGetMainWnd()->BringWindowToTop();
AfxGetMainWnd()->SetActiveWindow();
AfxGetMainWnd()->SetForegroundWindow();
if(AfxGetMainWnd()->IsIconic())
AfxGetMainWnd()->ShowWindow(SW_SHOWNORMAL);
else
AfxGetMainWnd()->ShowWindow(SW_SHOW);
AfxGetMainWnd()->UpdateWindow();
但是我发现有时窗口没有激活,仍然被其他应用程序的窗口转换。我的做法有什么问题吗?我该如何解决这个问题?
非常感谢!
尝试 SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_SHOWWINDOW);
它应该适用于所有窗口,因为所有窗口都具有相同的句柄类型。
尝试在您想要显示的窗口上调用 SetFocus。
如果这仍然不起作用,或者不能 100% 起作用,你可以使用一种 hacky 解决方法,即你将启动一个线程或窗口计时器(计时器更容易),它会定期检查以查看是否有你想要的窗口be topmost 确实使其成为订单的顶部。一旦发生这种情况,可能在第一次迭代时,您将杀死线程或计时器。
数量,我从您的个人资料中看到您提出了 12 个问题,但没有接受任何问题。我很难相信所有答案都不适合您。请考虑仔细阅读这些回复,并将那些有效的答案标记为答案。 0% 的接受度可能会导致人们不愿意很快回答你的问题。
干杯。
这对我有用:
SendMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(hWnd);