CPrintPreviewState::CPrintPreviewState() /**************************************/ { nIDMainPane = AFX_IDW_PANE_FIRST; hMenu = NULL; dwStates = AFX_CONTROLBAR_MASK( AFX_IDW_STATUS_BAR ); pViewActiveOld = NULL; lpfnCloseProc = _PreviewCloseProc; hAccelTable = NULL; }
CPrintPreviewState::CPrintPreviewState() { // set defaults nIDMainPane = AFX_IDW_PANE_FIRST; dwStates = AFX_CONTROLBAR_MASK(AFX_IDW_STATUS_BAR); // status bar visible if available lpfnCloseProc = _AfxPreviewCloseProc; // set frame hook so closing the frame window // when in preview state will just end the mode hMenu = NULL; pViewActiveOld = NULL; hAccelTable = NULL; }
void CFrameWnd::OnSetPreviewMode( BOOL bPreview, CPrintPreviewState *pState ) /***************************************************************************/ { ASSERT( pState != NULL ); DWORD dwSaveStates = 0L; POSITION position = m_listControlBars.GetHeadPosition(); while( position != NULL ) { CControlBar *pBar = (CControlBar *)m_listControlBars.GetNext( position ); ASSERT( pBar != NULL ); ASSERT( pBar->IsKindOf( RUNTIME_CLASS( CControlBar ) ) ); DWORD dwID = pBar->GetDlgCtrlID(); if( dwID >= AFX_IDW_CONTROLBAR_FIRST && dwID < AFX_IDW_CONTROLBAR_FIRST + 32 ) { DWORD dwThisState = AFX_CONTROLBAR_MASK( dwID ); if( pBar->IsWindowVisible() ) { dwSaveStates |= dwThisState; } if( !(pBar->IsDockBar() && pBar->GetDlgCtrlID() == AFX_IDW_DOCKBAR_FLOAT) ) { ShowControlBar( pBar, pState->dwStates & dwThisState, TRUE ); } } } pState->dwStates = dwSaveStates; if( bPreview ) { m_lpfnCloseProc = pState->lpfnCloseProc; pState->hMenu = ::GetMenu( m_hWnd ); ::SetMenu( m_hWnd, NULL ); pState->hAccelTable = m_hAccelTable; m_hAccelTable = NULL; LoadAccelTable( MAKEINTRESOURCE( AFX_IDR_PREVIEW_ACCEL ) ); HWND hWndPane = ::GetDlgItem( m_hWnd, pState->nIDMainPane ); if( hWndPane != NULL ) { ::ShowWindow( hWndPane, SW_HIDE ); } hWndPane = ::GetDlgItem( m_hWnd, AFX_IDW_PANE_FIRST ); if( hWndPane != NULL ) { ::SetWindowLong( hWndPane, GWL_ID, AFX_IDW_PANE_SAVE ); } } else { m_lpfnCloseProc = NULL; if( pState->hMenu != NULL ) { ::SetMenu( m_hWnd, pState->hMenu ); pState->hMenu = NULL; } if( pState->hAccelTable != NULL ) { m_hAccelTable = pState->hAccelTable; pState->hAccelTable = NULL; } HWND hWndPane = ::GetDlgItem( m_hWnd, AFX_IDW_PANE_SAVE ); if( hWndPane != NULL ) { ::SetWindowLong( hWndPane, GWL_ID, AFX_IDW_PANE_FIRST ); } hWndPane = ::GetDlgItem( m_hWnd, pState->nIDMainPane ); if( hWndPane != NULL ) { ::ShowWindow( hWndPane, SW_SHOW ); } } }