MFC在最大化窗口处绘制新窗口

MFC draw new at maximized window

本文关键字:窗口 新窗口 最大化 MFC 绘制      更新时间:2023-10-16

我有一个MFC MDI应用程序。如果我调整窗口的大小,我将得到新的比例的窗口。

BEGIN_MESSAGE_MAP(CmyView, CFormView)
    ON_WM_SIZE()
END_MESSAGE_MAP()
    void CmyView::OnSize(UINT nType, int cx, int cy) 
{
    RECT rc;
    GetClientRect(&rc);
   if (::IsWindow(m_XYZ.GetSafeHwnd()))
   {
       m_XYZ.MoveWindow (rc.left, rc.top,rc.right,rc.bottom);
   }
}

一切正常,但如果我点击最大化按钮,屏幕不会自行调整大小。我将在右侧和底部得到一个白色边框。是否有任何变化,以获得最大的事件,如调整大小事件(ON_WM_SIZE()) ?

谢谢:)

谢谢你的回答!我找到问题了。

我说过,我有一个MDI应用程序。我在第一个和第二个视图中使用了ON_SIZE事件。最大化或最小化事件只在大型机中调用。

但问题仍然存在。

void CMainFrame::OnSize(UINT nType, int cx, int cy) 
{
   RECT rc;
   GetClientRect(&rc);
   CWnd* ViewWin = GetWindow(0); // this is my first view
   if (::IsWindow(ViewWin->GetSafeHwnd()))
   {
   if (nType == SIZE_MAXIMIZED)
        ViewWin->ShowWindow(SW_MAXIMIZE);
   else if (nType == SIZE_MINIMIZED)
        ViewWin->ShowWindow(SW_MINIMIZE);
   else
        ViewWin->MoveWindow (rc.left, rc.top,rc.right,rc.bottom);
   }
   CWnd* ViewWin1 = GetWindow(1);   // this is my second view 
   if (::IsWindow(ViewWin1->GetSafeHwnd()))
   {
   if (nType == SIZE_MAXIMIZED)
        ViewWin1->ShowWindow(SW_MAXIMIZE);
   else if (nType == SIZE_MINIMIZED)
        ViewWin1->ShowWindow(SW_MINIMIZE);
   else
       ViewWin1->MoveWindow (rc.left, rc.top,rc.right,rc.bottom);
   }
}

我将进入最大化或最小化的情况,但是什么也没有发生