diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/mvdm/wow16/write/clipdisp.c | |
download | NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2 NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip |
Diffstat (limited to 'private/mvdm/wow16/write/clipdisp.c')
-rw-r--r-- | private/mvdm/wow16/write/clipdisp.c | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/private/mvdm/wow16/write/clipdisp.c b/private/mvdm/wow16/write/clipdisp.c new file mode 100644 index 000000000..21770eb2d --- /dev/null +++ b/private/mvdm/wow16/write/clipdisp.c @@ -0,0 +1,281 @@ +/************************************************************/ +/* Windows Write, Copyright 1985-1992 Microsoft Corporation */ +/************************************************************/ + +/* clipdisp.c -- Clipboard display routines */ +/* This module only gets called in when the clipboard view window is up */ + +#define NOVIRTUALKEYCODES +#define NOWINSTYLES +#define NOGDICAPMASKS +#define NOSYSMETRICS +#define NOMENUS +#define NOCTLMGR +#include "windows.h" + +#include "mw.h" +#include "docdefs.h" +#include "cmddefs.h" +#include "str.h" +#include "propdefs.h" +#include "editdefs.h" +#include "winddefs.h" +#include "dispdefs.h" +#include "wwdefs.h" +#if defined(OLE) +#include "obj.h" +#endif + +#define SCRIBBLE +#include "debug.h" + +extern int docCur; /* Document in current ww */ +extern int docScrap; +extern struct WWD rgwwd []; + + +int NEAR FGetClipboardDC( void ); +int NEAR SetupClipboardDC( void ); +int NEAR ReleaseClipboardDC( void ); + + +MdocPaintClipboard( hWnd, hPS ) +HWND hWnd; +HANDLE hPS; +{ /* Paint portion of clipboard window indicated by hPS */ + LPPAINTSTRUCT lpps; + + if (wwClipboard == wwNil) + return; + + /* Must set the scroll bar range each time we get a PAINT message; + CLIPBRD.EXE resets it when it gets WM_DRAWCLIPBOARD */ + + SetScrollRange( wwdClipboard.wwptr, SB_VERT, 0, drMax-1, FALSE ); + SetScrollRange( wwdClipboard.wwptr, SB_HORZ, 0, xpRightLim, FALSE ); + + if ( (lpps = (LPPAINTSTRUCT)GlobalLock( hPS )) != NULL ) + { /* Paint the clipboard */ + wwdClipboard.hDC = lpps->hdc; + SetupClipboardDC(); + NewCurWw( wwClipboard, TRUE ); + InvalBand( &wwdClipboard, lpps->rcPaint.top, lpps->rcPaint.bottom - 1 ); + UpdateWw( wwClipboard, FALSE ); + NewCurWw( wwDocument, TRUE ); + GlobalUnlock( hPS ); + } + + /* Since the DC is no longer good, we'll set it to NULL */ + wwdClipboard.hDC = NULL; + +#if 0 +#if defined(OLE) + /* gotta delete objects loaded from scrap document */ + ObjEnumInDoc(docScrap,ObjDeleteObjectInDoc); +#endif +#endif +} + + + + +MdocSizeClipboard( hWnd, hRC ) +HWND hWnd; +HANDLE hRC; +{ /* Set clipboard window to be the rect in hRC */ + /* If rectangle is 0 units high or wide, this means we're losing the + necessity for display until the next size message */ + LPRECT lprc; + int dypRect; + + if ( (lprc = (LPRECT)GlobalLock( hRC )) == NULL ) + return; + + if ( (dypRect = lprc->bottom - lprc->top) <= 0 ) + { /* NULL rect, means lose display until we get a nonnull size */ + if (wwClipboard != wwNil) + FreeWw( wwClipboard ); + } + else if ( (wwClipboard != wwNil) || + ((wwClipboard=WwAlloc( hWnd, docScrap )) != wwNil)) + { /* Have WWD entry for clipboard, set its size */ + + wwdClipboard.wwptr = hWnd; /* Just in case clipboard + was closed, then re-opened */ + wwdClipboard.xpMin = lprc->left; + wwdClipboard.xpMac = lprc->right; + wwdClipboard.ypMin = lprc->top; + wwdClipboard.ypMac = lprc->bottom; +#ifdef WIN30 + SetScrollPos(hWnd, SB_HORZ, 0, TRUE); /* suggested by sankar */ +#endif + } + + GlobalUnlock( hRC ); +} + + + + +MdocVScrollClipboard( hWnd, sbMessage, wNewThumb ) +HWND hWnd; +int sbMessage; +int wNewThumb; +{ + if ( hWnd != wwdClipboard.wwptr || wwClipboard == wwNil) + { + Assert( FALSE ); + return; + } + + if (!FGetClipboardDC()) + /* Unable to create clipboard device context */ + return; + + NewCurWw( wwClipboard, TRUE ); + +switch ( sbMessage ) +{ +case SB_THUMBPOSITION: + { + extern typeCP cpMacCur; + + DirtyCache( wwdClipboard.cpFirst = (cpMacCur - wwdClipboard.cpMin) * + wNewThumb / (drMax - 1) + wwdClipboard.cpMin); + wwdClipboard.ichCpFirst = 0; + wwdClipboard.fCpBad = TRUE; + TrashWw( wwClipboard ); + break; + } + +case SB_LINEUP: + ScrollUpCtr( 1 ); + break; +case SB_LINEDOWN: + ScrollDownCtr( 1 ); + break; +case SB_PAGEUP: + ScrollUpDypWw(); + break; +case SB_PAGEDOWN: + ScrollDownCtr( 100 ); /* 100 > tr's in a page */ + break; +} + +UpdateWw( wwClipboard, FALSE ); + +NewCurWw( wwDocument, TRUE ); /* Frees the memory DC */ +ReleaseClipboardDC(); +} + + + + +MdocHScrollClipboard( hWnd, sbMessage, wNewThumb ) +HWND hWnd; +int sbMessage; +int wNewThumb; +{ + if ( hWnd != wwdClipboard.wwptr || wwClipboard == wwNil) + { + Assert( FALSE ); + return; + } + + if (!FGetClipboardDC()) + /* Unable to create clipboard device context */ + return; + + NewCurWw( wwClipboard, TRUE ); + + switch (sbMessage) + { + case SB_LINEUP: /* line left */ + ScrollRight(xpMinScroll); + break; + case SB_LINEDOWN: /* line right */ + ScrollLeft(xpMinScroll); + break; + case SB_PAGEUP: /* page left */ + ScrollRight(wwdClipboard.xpMac - xpSelBar); + break; + case SB_PAGEDOWN: /* page right */ + ScrollLeft(wwdClipboard.xpMac - xpSelBar); + break; + case SB_THUMBPOSITION: + /* position to posNew */ + AdjWwHoriz( wNewThumb - wwdClipboard.xpMin ); + break; + } + +UpdateWw( wwClipboard, FALSE ); + +NewCurWw( wwDocument, TRUE ); /* Frees the memory DC */ +ReleaseClipboardDC(); +} + + + + +MdocAskCBFormatName( lpchName, cchNameMax ) +LPCH lpchName; +int cchNameMax; +{ /* Copy the format name for the current contents of the clipboard + (of which we are the owner) to lpchName, copying no more than + cchNameMax characters */ + +extern int vfOwnClipboard; +extern int vfScrapIsPic; +extern CHAR szWRITEText[]; +int cchCopy; + +Assert( vfOwnClipboard ); + +/* Don't give a format name for pictures; the name is covered by the + standard types */ + +if (!vfScrapIsPic) + { + if ( (cchCopy=CchSz( szWRITEText )) > cchNameMax ) + { + lpchName[ cchCopy = cchNameMax - 1 ] = '\0'; + } + + bltbx( (LPSTR)szWRITEText, (LPSTR)lpchName, cchCopy ); + } + +} + + + + +int NEAR FGetClipboardDC() +{ /* Get a DC for the clipboard window. Leave it in rgwwd [wwClipboard]. + Call SetupClipboardDC to set up proper colors */ + + if ((wwdClipboard.hDC = GetDC( wwdClipboard.wwptr )) == NULL ) + return FALSE; + + SetupClipboardDC(); + return TRUE; +} + +int NEAR SetupClipboardDC() +{ /* Select in the background brush for appropriate color behavior. */ + + extern long rgbBkgrnd; + extern long rgbText; + extern HBRUSH hbrBkgrnd; + +SelectObject( wwdClipboard.hDC, hbrBkgrnd ); +SetBkColor( wwdClipboard.hDC, rgbBkgrnd ); +SetTextColor( wwdClipboard.hDC, rgbText ); +} + + + +int NEAR ReleaseClipboardDC() +{ +ReleaseDC( wwdClipboard.wwptr, wwdClipboard.hDC ); +wwdClipboard.hDC = NULL; /* Mark clipboard DC as invalid */ +} |