diff options
Diffstat (limited to 'embedserv/source/embed/syswinwrapper.cxx')
-rw-r--r-- | embedserv/source/embed/syswinwrapper.cxx | 480 |
1 files changed, 0 insertions, 480 deletions
diff --git a/embedserv/source/embed/syswinwrapper.cxx b/embedserv/source/embed/syswinwrapper.cxx deleted file mode 100644 index c247617d9..000000000 --- a/embedserv/source/embed/syswinwrapper.cxx +++ /dev/null @@ -1,480 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#if defined(_MSC_VER) && (_MSC_VER > 1310) -#pragma warning(disable : 4917 4555) -#endif - -#include "docholder.hxx" -#include "syswinwrapper.hxx" - -/* - * CWindow::CWindow - * CWindow::~CWindow - * - * Constructor Parameters: - * hInst HINSTANCE of the task owning us. - */ - - -using namespace winwrap; - - -#define HWWL_STRUCTURE 0 - -//Notification codes for WM_COMMAND messages -#define HWN_BORDERDOUBLECLICKED 1 -#define CBHATCHWNDEXTRA (sizeof(LONG)) -#define SZCLASSHATCHWIN TEXT("hatchwin") -#define SendCommand(hWnd, wID, wCode, hControl) \ - SendMessage(hWnd, WM_COMMAND, MAKEWPARAM(wID, wCode) \ - , (LPARAM)hControl) - - -typedef CHatchWin *PCHatchWin; - - -void DrawShading(LPRECT prc, HDC hDC, UINT cWidth); - - - -winwrap::CWindow::CWindow(HINSTANCE hInst) -{ - m_hInst=hInst; - m_hWnd=NULL; - return; -} - -winwrap::CWindow::~CWindow(void) -{ - if (IsWindow(m_hWnd)) - DestroyWindow(m_hWnd); - - return; -} - - - -/* - * CWindow::Window - * - * Purpose: - * Returns the window handle associated with this object. - * - * Return Value: - * HWND Window handle for this object - */ - -HWND winwrap::CWindow::Window(void) -{ - return m_hWnd; -} - - - -/* - * CWindow::Instance - * - * Purpose: - * Returns the instance handle associated with this object. - * - * Return Value: - * HINSTANCE Instance handle of the module stored here. - */ - -HINSTANCE winwrap::CWindow::Instance(void) -{ - return m_hInst; -} - - - - - -//Hatch pattern brush bits -static WORD g_wHatchBmp[]={0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88}; - -// void DrawShading(LPRECT, HDC, UINT); - - -/* - * HatchWindowRegister - * - * Purpose: - * Registers the hatch window class for use with CHatchWin. - * - * Parameters: - * hInst HINSTANCE under which to register. - * - * Return Value: - * BOOL TRUE if successful, FALSE otherwise. - */ - -BOOL winwrap::HatchWindowRegister(HINSTANCE hInst) -{ - WNDCLASS wc; - - //Must have CS_DBLCLKS for border! - wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; - wc.hInstance = hInst; - wc.cbClsExtra = 0; - wc.lpfnWndProc = HatchWndProc; - wc.cbWndExtra = CBHATCHWNDEXTRA; - wc.hIcon = NULL; - wc.hCursor = LoadCursor(NULL, IDC_ARROW); - wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); - wc.lpszMenuName = NULL; - wc.lpszClassName = SZCLASSHATCHWIN; - - return RegisterClass(&wc); - return FALSE; -} - - - - -/* - * CHatchWin:CHatchWin - * CHatchWin::~CHatchWin - * - * Constructor Parameters: - * hInst HINSTANCE of the application we're in. - */ - -CHatchWin::CHatchWin(HINSTANCE hInst,const DocumentHolder* pDocHolder) - : CWindow(hInst), - m_aTracker() -{ - m_hWnd=NULL; - m_hWndKid=NULL; - m_hWndAssociate=NULL; - m_uID=0; - - m_dBorderOrg=GetProfileInt(TEXT("windows") - , TEXT("OleInPlaceBorderWidth") - , HATCHWIN_BORDERWIDTHDEFAULT); - - m_dBorder=m_dBorderOrg; - SetRect(&m_rcPos, 0, 0, 0, 0); - SetRect(&m_rcClip, 0, 0, 0, 0); - - m_pDocHolder = pDocHolder; - return; -} - - -CHatchWin::~CHatchWin(void) -{ - /* - * Chances are this was already destroyed when a document - * was destroyed. - */ - if (NULL!=m_hWnd && IsWindow(m_hWnd)) - DestroyWindow(m_hWnd); - - return; -} - - - -/* - * CHatchWin::Init - * - * Purpose: - * Instantiates a hatch window within a given parent with a - * default rectangle. This is not initially visible. - * - * Parameters: - * hWndParent HWND of the parent of this window - * uID UINT identifier for this window (send in - * notifications to associate window). - * hWndAssoc HWND of the initial associate. - * - * Return Value: - * BOOL TRUE if the function succeeded, FALSE otherwise. - */ - -BOOL CHatchWin::Init(HWND hWndParent, UINT uID, HWND hWndAssoc) -{ - m_hWndParent = hWndParent; - m_hWnd=CreateWindowEx( - WS_EX_NOPARENTNOTIFY, SZCLASSHATCHWIN - , SZCLASSHATCHWIN, WS_CHILD | WS_CLIPSIBLINGS - | WS_CLIPCHILDREN, 0, 0, 100, 100, hWndParent, (HMENU)uID - , m_hInst, this); - - m_uID=uID; - m_hWndAssociate=hWndAssoc; - - return (NULL!=m_hWnd); -} - - -void CHatchWin::SetTrans() -{ - HRGN hrgn = CreateRectRgn(0,0,0,0); - SetWindowRgn(m_hWnd,hrgn,true); -} - -/* - * CHatchWin::HwndAssociateSet - * CHatchWin::HwndAssociateGet - * - * Purpose: - * Sets (Set) or retrieves (Get) the associate window of the - * hatch window. - * - * Parameters: (Set only) - * hWndAssoc HWND to set as the associate. - * - * Return Value: - * HWND Previous (Set) or current (Get) associate - * window. - */ - -HWND CHatchWin::HwndAssociateSet(HWND hWndAssoc) -{ - HWND hWndT=m_hWndAssociate; - - m_hWndAssociate=hWndAssoc; - return hWndT; -} - - -HWND CHatchWin::HwndAssociateGet(void) -{ - return m_hWndAssociate; -} - - -/* - * CHatchWin::RectsSet - * - * Purpose: - * Changes the size and position of the hatch window and the child - * window within it using a position rectangle for the child and - * a clipping rectangle for the hatch window and child. The hatch - * window occupies prcPos expanded by the hatch border and clipped - * by prcClip. The child window is fit to prcPos to give the - * proper scaling, but it clipped to the hatch window which - * therefore clips it to prcClip without affecting the scaling. - * - * Parameters: - * prcPos LPRECT providing the position rectangle. - * prcClip LPRECT providing the clipping rectangle. - * - * Return Value: - * None - */ - -void CHatchWin::RectsSet(LPRECT prcPos, LPRECT prcClip) -{ - RECT rc; - RECT rcPos; - - m_rcPos=*prcPos; - m_rcClip=*prcClip; - - //Calculate the rectangle for the hatch window, then clip it. - rcPos=*prcPos; - InflateRect(&rcPos, m_dBorder, m_dBorder); - IntersectRect(&rc, &rcPos, prcClip); - - SetWindowPos(m_hWnd, NULL, rc.left, rc.top, rc.right-rc.left - , rc.bottom-rc.top, SWP_NOZORDER | SWP_NOACTIVATE); - - /* - * Set the rectangle of the child window to be at m_dBorder - * from the top and left but with the same size as prcPos - * contains. The hatch window will clip it. - */ -// SetWindowPos(m_hWndKid, NULL, rcPos.left-rc.left+m_dBorder -// , rcPos.top-rc.top+m_dBorder, prcPos->right-prcPos->left -// , prcPos->bottom-prcPos->top, SWP_NOZORDER | SWP_NOACTIVATE); - - RECT newRC; - GetClientRect(m_hWnd,&newRC); - m_aTracker = Tracker( - &newRC, - Tracker::hatchInside | - Tracker::hatchedBorder | - Tracker::resizeInside - ); - - return; -} - - - -/* - * CHatchWin::ChildSet - * - * Purpose: - * Assigns a child window to this hatch window. - * - * Parameters: - * hWndKid HWND of the child window. - * - * Return Value: - * None - */ - -void CHatchWin::ChildSet(HWND hWndKid) -{ - m_hWndKid=hWndKid; - - if (NULL!=hWndKid) - { - SetParent(hWndKid, m_hWnd); - - //Insure this is visible when the hatch window becomes visible. - ShowWindow(hWndKid, SW_SHOW); - } - - return; -} - - - -/* - * CHatchWin::ShowHatch - * - * Purpose: - * Turns hatching on and off; turning the hatching off changes - * the size of the window to be exactly that of the child, leaving - * everything else the same. The result is that we don't have - * to turn off drawing because our own WM_PAINT will never be - * called. - * - * Parameters: - * fHatch BOOL indicating to show (TRUE) or hide (FALSE) - the hatching. - * - * Return Value: - * None - */ - -void CHatchWin::ShowHatch(BOOL fHatch) -{ - /* - * All we have to do is set the border to zero and - * call SetRects again with the last rectangles the - * child sent to us. - */ - m_dBorder=fHatch ? m_dBorderOrg : 0; - RectsSet(&m_rcPos, &m_rcClip); - return; -} - - - -/* - * HatchWndProc - * - * Purpose: - * Standard window procedure for the Hatch Window - */ - -LRESULT APIENTRY winwrap::HatchWndProc( - HWND hWnd, UINT iMsg - , WPARAM wParam, LPARAM lParam) -{ - PCHatchWin phw; - HDC hDC; - PAINTSTRUCT ps; - - phw=(PCHatchWin)GetWindowLong(hWnd, HWWL_STRUCTURE); - POINT ptMouse; - - switch (iMsg) - { - case WM_CREATE: - phw=(PCHatchWin)((LPCREATESTRUCT)lParam)->lpCreateParams; - SetWindowLong(hWnd, HWWL_STRUCTURE, (LONG)phw); - break; - case WM_PAINT: - hDC=BeginPaint(hWnd,&ps); - //Always draw the hatching. - phw->m_aTracker.Draw(hDC); - EndPaint(hWnd,&ps); - break; - case WM_LBUTTONDOWN: - GetCursorPos(&ptMouse); - ScreenToClient(hWnd,&ptMouse); - - // track in case we have to - if(phw->m_aTracker.Track(hWnd,ptMouse,FALSE,GetParent(hWnd))) - { - RECT aRect = phw->m_aTracker.m_rect; - TransformRect(&aRect,hWnd,GetParent(hWnd)); - phw->m_pDocHolder->OnPosRectChanged(&aRect); - } - break; - case WM_LBUTTONUP: - case WM_MOUSEMOVE: - GetCursorPos(&ptMouse); - ScreenToClient(hWnd,&ptMouse); - phw->m_aTracker.SetCursor(hWnd,HTCLIENT); - break; - case WM_SETFOCUS: - //We need this since the container will SetFocus to us. - if (NULL!=phw->m_hWndKid) - SetFocus(phw->m_hWndKid); - - break; - case WM_LBUTTONDBLCLK: - /* - * If the double click was within m_dBorder of an - * edge, send the HWN_BORDERDOUBLECLICKED notification. - * - * Because we're always sized just larger than our child - * window by the border width, we can only *get* this - * message when the mouse is on the border. So we can - * just send the notification. - */ - if (NULL!=phw->m_hWndAssociate) - { - SendCommand(phw->m_hWndAssociate, phw->m_uID - , HWN_BORDERDOUBLECLICKED, hWnd); - } - - break; - default: - return DefWindowProc(hWnd, iMsg, wParam, lParam); - } - - return 0L; -} - -// Fix strange warnings about some -// ATL::CAxHostWindow::QueryInterface|AddRef|Releae functions. -// warning C4505: 'xxx' : unreferenced local function has been removed -#if defined(_MSC_VER) -#pragma warning(disable: 4505) -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |