/***********************************************************************/ { clr ((LPTR)lpDisp, sizeof(DISPLAY)); lpDisp->ResizeType = SIZE_RESTORED; } //************************************************************************ // HookZoom // hooks the zoom window into the current image. // If there is no zoom window one is created. // If there is No acive window, or no active Image then // it destroys itself; // Returns true if zoom window is successfuly hooked. //************************************************************************/ BOOL HookZoom() //************************************************************************/ { LPIMAGE lpNewImage; BOOL fHide; CServerView *pView = PictPubApp.GetActiveView(); HWND hZoomParentWnd = PictPubApp.Get_hWndAstral();; if (!Window.fHasZoom) return (FALSE); if (pView && pView->GetDocument() && pView->GetDocument()->m_lpImage) { lpNewImage = pView->GetDocument()->m_lpImage; if (pView->GetDocument()->IsInPlaceActive()) hZoomParentWnd = ((CInPlaceFrame*)pView->GetParentFrame())->GetClientFrameWnd(); } else lpNewImage = NULL; if (!hZoomWindow && pView->GetSafeHwnd()) // try to create zoom window { if (!NewZoomWindow( hZoomParentWnd )) { Window.fHasZoom = FALSE; return (FALSE); } } if (pView->GetSafeHwnd() == NULL && hZoomWindow) // Must destroy itself { DestroyWindow(hZoomWindow); hZoomWindow = NULL; return(FALSE); } if (pView->GetSafeHwnd() == GetZoomOwner(hZoomWindow)) return(TRUE); fHide = (pView->GetSafeHwnd() != PictPubApp.Get_hActiveWindow()); ShowWindow(hZoomWindow, SW_HIDE); SetZoomOwner(hZoomWindow, pView->GetSafeHwnd()); SetImagePtr (hZoomWindow, lpNewImage); ZoomSizeToDef(); // recompute size & pos ComputeZoomDisp(); if (!fHide && !IsWindowVisible(hZoomWindow)) ShowWindow(hZoomWindow, SW_SHOWNA); return (TRUE); }
void CZoomCombo::NotifyChanged(int code) { int nIndex; int iPercentages[NUM_PERCENTAGES] = {1600, 800, 400, 200, 100, 75, 50, 25}; int idCommands[NUM_COMMANDS] = {IDC_CUSTOMVIEW, IDC_VIEWLAST, IDC_VIEW1TO1, IDC_VIEWALL, IDC_VIEWFULL}; int iPercentage = 0; CServerView *pView = PictPubApp.GetActiveView(); if (pView == NULL) return; if (code == CBN_KILLFOCUS) { BOOL bTranslated; iPercentage = GetDlgItemInt(GetParent(m_hWnd), GetDlgCtrlID(m_hWnd), &bTranslated, FALSE); if (!iPercentage) return; } else { if ( code != CBN_SELCHANGE ) return; nIndex = ComboBox_GetCurSel(m_hWnd); } if (iPercentage || nIndex < NUM_PERCENTAGES) { if (!iPercentage) iPercentage = iPercentages[nIndex]; if (iPercentage != ZoomForum.GetViewPercentage()) { if (!ZoomEnable( pView->GetSafeHwnd(), iPercentage, FALSE)) { Message( IDS_BADZOOM ); SetFocus(m_hWnd); return; } int x = ( pView->m_lpDisplay->FileRect.left + pView->m_lpDisplay->FileRect.right ) / 2; int y = ( pView->m_lpDisplay->FileRect.top + pView->m_lpDisplay->FileRect.bottom ) / 2; SaveLastView(pView->GetSafeHwnd()); Zoom(pView->GetSafeHwnd(), x, y, iPercentage, NO, CONTROL ); } } else { nIndex -= NUM_PERCENTAGES; int idCommand = idCommands[nIndex]; HWND hWnd = PictPubApp.m_pMainWnd->GetSafeHwnd(); FORWARD_WM_COMMAND(hWnd, idCommand, m_hWnd, 0, SendMessage); } }
LOCAL BOOL FullScreenView_OnInitDialog(HWND hDlg, HWND hWndFocus, LPARAM lParam) { CPPMDIChildWnd *pMDIChild; HWND hMDIWnd; RECT ClientRect; int npix, nlin, cx, cy, dx, dy; HWND hControl, hMDIChild, hView; LPOBJECT lpBase; LPFRAME lpFrame; // Make the window as big as the screen dx = GetSystemMetrics( SM_CXSCREEN ); dy = GetSystemMetrics( SM_CYSCREEN ); MoveWindow( hDlg, 0, 0, dx, dy, NO ); // Compute the center of the window GetClientRect( hDlg, &ClientRect ); cx = ( ClientRect.right + ClientRect.left ) / 2; cy = ( ClientRect.bottom + ClientRect.top ) / 2; // Link all of the images to image controls hControl = GetDlgItem( hDlg, IDC_VIEWFULL ); CServerView *pView = PictPubApp.GetActiveView(); BOOL bInplaceActive = (pView && pView->GetDocument()->IsInPlaceActive()); if (bInplaceActive) { hMDIChild = pView->GetParentFrame()->GetSafeHwnd(); hView = pView->GetSafeHwnd(); } else { pMDIChild = (CPPMDIChildWnd*)((CMDIFrame*)PictPubApp.m_pMainWnd)->MDIGetActive(); hMDIWnd = pMDIChild->GetSafeHwnd(); if (hMDIWnd) hView = pMDIChild->GetActiveView()->GetSafeHwnd(); else hView = NULL; } while ( hView ) { lpBase = ImgGetBase((LPIMAGE)GetImagePtr(hView)); if ( !lpBase || !hControl ) break; lpFrame = ObjGetEditFrame(lpBase); // Link the frame to the image control SetWindowLong( hControl, GWL_IMAGE, (long)lpBase ); // The destination size can be no bigger the the screen npix = FrameXSize(lpFrame); nlin = FrameYSize(lpFrame); if ( npix > dx || nlin > dy ) { npix = dx; nlin = dy; ScaleToFit( &npix, &nlin, FrameXSize(lpFrame), FrameYSize(lpFrame)); } // Position the control in the center of the window ClientRect.left = cx - npix/2; ClientRect.right = ClientRect.left + npix; ClientRect.top = cy - nlin/2; ClientRect.bottom = ClientRect.top + nlin; MoveWindow( hControl, ClientRect.left, ClientRect.top, // New position RectWidth( &ClientRect ), RectHeight( &ClientRect ), // New size NO /* No repaint*/ ); if (bInplaceActive) break; // Check to see if these get destroyed when the window does do { hView = NULL; if (hMDIWnd = GetWindow( hMDIWnd, GW_HWNDNEXT )) { if ((CWnd::FromHandle(hMDIWnd))-> IsKindOf(RUNTIME_CLASS(CPPMDIChildWnd))) hView = ((CPPMDIChildWnd*)CWnd::FromHandle(hMDIWnd))-> GetActiveView()->GetSafeHwnd(); } } while (hMDIWnd && !hView); if (!hView) break; // Get another image control hControl = CopyWindow( hControl ); } return TRUE; }