//************************************************************************** void CBCGPRibbonBackstageViewItemForm::OnAfterChangeRect (CDC* pDC) { SetLayoutReady(FALSE); CBCGPBaseRibbonElement::OnAfterChangeRect(pDC); if (m_rect.IsRectEmpty ()) { if (m_pWndForm->GetSafeHwnd () != NULL) { m_pWndForm->ShowWindow (SW_HIDE); } return; } BOOL bForceAdjustLocations = FALSE; if (m_pWndForm == NULL) { if ((m_pWndForm = OnCreateFormWnd()) == NULL) { return; } SetLayoutReady(FALSE); bForceAdjustLocations = TRUE; if (m_Watermark.GetImageWell() != NULL) { BOOL bMirror = FALSE; if (GetParentWnd()->GetExStyle () & WS_EX_LAYOUTRTL) { if (!m_bImageMirror) { m_bImageMirror = TRUE; bMirror = TRUE; } } else if (m_bImageMirror) { m_bImageMirror = FALSE; bMirror = TRUE; } if (bMirror) { m_Watermark.Mirror(); OnChangeVisualManager(); } } } CRect rectWindow = m_rect; CRect rectWatermark(0, 0, 0, 0); if (m_sizeWaterMark != CSize(0, 0)) { int xWatermark = max(rectWindow.Width(), m_sizeDlg.cx) - m_sizeWaterMark.cx; int yWatermark = max(rectWindow.Height(), m_sizeDlg.cy) - m_sizeWaterMark.cy; rectWatermark = CRect(CPoint(xWatermark, yWatermark), m_sizeWaterMark); } OnSetBackstageWatermarkRect(rectWatermark); m_pWndForm->SetWindowPos (NULL, rectWindow.left, rectWindow.top, rectWindow.Width (), rectWindow.Height () + 1, SWP_NOZORDER | SWP_NOACTIVATE); if (!m_pWndForm->IsWindowVisible()) { m_pWndForm->ShowWindow (SW_SHOWNOACTIVATE); } SetLayoutReady(); if (bForceAdjustLocations) { CBCGPRibbonPanel* pParentPanel = GetParentPanel(); if (pParentPanel != NULL && pParentPanel->GetParentMenuBar()->GetSafeHwnd() != NULL) { CRect rectPanel; pParentPanel->GetParentMenuBar()->GetClientRect(rectPanel); pParentPanel->GetParentMenuBar()->PostMessage(WM_SIZE, MAKEWPARAM(rectPanel.Width(), rectPanel.Height())); } } m_pWndForm->RedrawWindow(NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_ALLCHILDREN); }