如何激活应用程序窗口并将其显示在屏幕的最顶层?

时间:2009-09-28 03:30:23

标签: mfc

该应用程序是MFC。有时我需要激活窗口并在停用或隐藏或最小化时将其显示在屏幕的最顶部。这是我做的:

AfxGetMainWnd()->BringWindowToTop();
AfxGetMainWnd()->SetActiveWindow();
AfxGetMainWnd()->SetForegroundWindow();

if(AfxGetMainWnd()->IsIconic())
AfxGetMainWnd()->ShowWindow(SW_SHOWNORMAL);
else
     AfxGetMainWnd()->ShowWindow(SW_SHOW);
AfxGetMainWnd()->UpdateWindow();

但我发现有时窗户没有被激活,仍然被其他应用程序的窗口所控制。我的方法有什么问题吗?我该如何解决这个问题?

非常感谢!

2 个答案:

答案 0 :(得分:1)

试 SetWindowPos(HWND,HWND_TOPMOST,0,0,0,0,SWP_SHOWWINDOW);

它应该适用于所有窗口,因为所有窗口都具有相同的句柄类型。

答案 1 :(得分:0)

尝试在您要显示的窗口上调用SetFocus

如果仍然不起作用,或者100%不能正常工作,你可以使用hacky解决方法,你可以启动一个线程或窗口计时器(计时器更容易),它会定期检查你的窗口是否是想要成为最顶级的确确是让它成为最重要的订单。一旦发生这种情况,可能在第一次迭代时,你就会杀死线程或计时器。

数量,我从您的个人资料中看到您已经提出了12个问题并且没有接受任何问题。我发现很难相信没有一个答案对你有用。请考虑通过回复并标记作为答案的回复。 0%的接受可能会导致人们不尽快回答您的问题。

干杯。