在Windows7上,当我的应用程序挂起处于最大化状态时,无论应用程序的窗口位置如何,总是在左上角创建鬼窗口

时间:2013-08-12 09:41:30

标签: windows aero-snap

在某些情况下,我们的应用程序UI线程必须执行繁重的处理,这可能需要5秒以上,如果发生这种情况,那么操作系统会认为我的应用程序被挂起,因此会创建一个重影窗口。

当我的应用程序处于恢复状态时,这个鬼窗口在我的应用程序顶部正确创建,但是当我的应用程序处于最大化状态时,此鬼窗口总是选择Point(0,0)作为其左上角因此它看起来像应用程序自己跳到左上角。我们可以避免这种跳跃吗?

我不想为我的应用禁用鬼窗口创建。一个解决方法可能是定期间隔后PeekMessage(不要删除)。但是,如果可能的话,我希望每当操作系统想要时都会出现ghost窗口,但它应该在我的应用程序处于无响应状态之前。

请注意,我们通过覆盖WM_GETMINMAXINFO来自定义应用程序的最大窗口大小。

------------这就是我们设置自定义窗口大小的方式--------------

void CHangTestDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{   
    lpMMI->ptMaxSize.x = 1011;
    lpMMI->ptMaxSize.y = 727;

    CRect rectWorkArea;
    SystemParametersInfo(SPI_GETWORKAREA, 0, (PVOID)&rectWorkArea, 0 );
    int ileft = (rectWorkArea.Width() - 1011)/2;
    int itop = (rectWorkArea.Height() - 727)/2;
    lpMMI->ptMaxPosition = CPoint(ileft, itop);

    CDialog::OnGetMinMaxInfo(lpMMI);
}

0 个答案:

没有答案