void CMDIFrameWnd::OnUpdateFrameTitle(BOOL bAddToTitle) { if ((GetStyle() & FWS_ADDTOTITLE) == 0) return; // leave it alone! #ifndef _AFX_NO_OLE_SUPPORT // allow hook to set the title (used for OLE support) if (m_pNotifyHook != NULL && m_pNotifyHook->OnUpdateFrameTitle()) return; #endif CMDIChildWnd* pActiveChild = NULL; CDocument* pDocument = GetActiveDocument(); if (bAddToTitle && (pActiveChild = MDIGetActive()) != NULL && (pActiveChild->GetStyle() & WS_MAXIMIZE) == 0 && (pDocument != NULL || (pDocument = pActiveChild->GetActiveDocument()) != NULL)) UpdateFrameTitleForDocument(pDocument->GetTitle()); else { LPCTSTR lpstrTitle = NULL; CString strTitle; if (pActiveChild != NULL && (pActiveChild->GetStyle() & WS_MAXIMIZE) == 0) { strTitle = pActiveChild->GetTitle(); if (!strTitle.IsEmpty()) lpstrTitle = strTitle; } UpdateFrameTitleForDocument(lpstrTitle); } }
CMDIChildWnd* CMDIFrameWnd::MDIGetActive(BOOL* pbMaximized) const { // check first for MDI client window not created if (m_hWndMDIClient == NULL) { if (pbMaximized != NULL) *pbMaximized = FALSE; return NULL; } // MDI client has been created, get active MDI child HWND hWnd = (HWND)::SendMessage(m_hWndMDIClient, WM_MDIGETACTIVE, 0, (LPARAM)pbMaximized); CMDIChildWnd* pWnd = (CMDIChildWnd*)CWnd::FromHandlePermanent(hWnd); ASSERT(pWnd == NULL || pWnd->IsKindOf(RUNTIME_CLASS(CMDIChildWnd))); // check for special pseudo-inactive state if (pWnd != NULL && pWnd->m_bPseudoInactive && (pWnd->GetStyle() & WS_VISIBLE) == 0) { // Window is hidden, active, but m_bPseudoInactive -- return NULL pWnd = NULL; // Ignore maximized flag if pseudo-inactive and maximized if (pbMaximized != NULL) *pbMaximized = FALSE; } return pWnd; }