Beispiel #1
0
/***********************************************************************/
{
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);
}
Beispiel #2
0
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;
}