windows-nt/Source/XPSP1/NT/base/mvdm/wow16/write/ruler3.c
2020-09-26 16:20:57 +08:00

114 lines
3.1 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/************************************************************/
/* Windows Write, Copyright 1985-1992 Microsoft Corporation */
/************************************************************/
/* The file contains the message handler for the ruler. */
#define NOGDICAPMASKS
#define NOVIRTUALKEYCODES
#define NOWINSTYLES
#define NOSYSMETRICS
#define NOCLIPBOARD
#define NOMENUS
#define NOCTLMGR
#include <windows.h>
extern HBITMAP hbmNull;
extern HWND vhWndRuler;
extern HDC vhDCRuler;
extern HDC hMDCBitmap;
extern HDC hMDCScreen;
extern HBITMAP hbmBtn;
extern HBITMAP hbmMark;
extern HBITMAP hbmNullRuler;
extern int dxpRuler;
extern int dypRuler;
long FAR PASCAL RulerWndProc(hWnd, message, wParam, lParam)
HWND hWnd;
unsigned message;
WORD wParam;
LONG lParam;
{
/* This routine processes the messages sent to the ruler window. */
extern vfCloseFilesInDialog;
PAINTSTRUCT ps;
switch (message)
{
case WM_PAINT:
/* Time for the ruler to draw itself. */
ResetRuler();
BeginPaint(hWnd, (LPPAINTSTRUCT)&ps);
RulerPaint(FALSE, TRUE, TRUE);
EndPaint(hWnd, (LPPAINTSTRUCT)&ps);
RulerPaint(TRUE, FALSE, FALSE);
break;
case WM_SIZE:
/* We are saving the length of the ruler; we already know it's
height. */
dxpRuler = MAKEPOINT(lParam).x;
break;
case WM_DESTROY:
/* Destroy the ruler window. */
if (hMDCBitmap != NULL)
{
DeleteDC(hMDCBitmap);
}
if (hMDCScreen != NULL)
{
DeleteObject(SelectObject(hMDCScreen, hbmNull));
DeleteDC(hMDCScreen);
}
if (vhDCRuler != NULL)
{
DeleteObject(SelectObject(vhDCRuler,
GetStockObject(SYSTEM_FONT)));
SelectObject(vhDCRuler, GetStockObject(WHITE_BRUSH));
DeleteObject(SelectObject(vhDCRuler,
GetStockObject(BLACK_PEN)));
ReleaseDC(vhWndRuler, vhDCRuler);
}
if (hbmNullRuler != NULL)
{
DeleteObject(hbmNullRuler);
hbmNullRuler = NULL;
}
vhDCRuler = hMDCScreen = hMDCBitmap = NULL;
break;
case WM_LBUTTONDOWN:
case WM_LBUTTONDBLCLK:
/* Process mouse events on the ruler. */
RulerMouse(MAKEPOINT(lParam));
break;
#ifdef DEBUG
case WM_RBUTTONDBLCLK:
/* This the trap door that displays the "marquee" message. */
if (wParam & MK_SHIFT && wParam & MK_CONTROL)
{
RulerMarquee();
break;
}
#endif
default:
/* All of the messages we are not interested in. */
return (DefWindowProc(hWnd, message, wParam, lParam));
break;
}
if (vfCloseFilesInDialog)
CloseEveryRfn( FALSE );
/* A window procedure should always return something. */
return (0L);
}