GLOBALS.C
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:15k
源码类别:
Windows编程
开发平台:
Visual C++
- /****************************************************************************/
- /* */
- /* Copyright (C) 1987-1996 Microsoft Corp. */
- /* All Rights Reserved */
- /* */
- /****************************************************************************/
- /****************************** Module Header *******************************
- * Module Name: globals.c
- *
- * Global data for the image editor.
- *
- * History:
- *
- ****************************************************************************/
- #include "imagedit.h"
- #include "dialogs.h"
- #include "iehelp.h"
- #include "ids.h"
- /*
- * Initialized data and structures -----------------------------------------
- */
- /*
- * Initialization data structure. This describes each profile entry
- * that is contained in the initialization file.
- */
- INIENTRY gaie[] = {
- { "fGrid", &gfGrid, FALSE, 0 },
- { "fShowColor", &gfShowColor, TRUE, 0 },
- { "fShowView", &gfShowView, TRUE, 0 },
- { "fShowToolbox", &gfShowToolbox, TRUE, 0 },
- { "nBrushSize", &gnBrushSize, 3, 0 },
- { NULL, NULL, 0, 0 }
- };
- BOOL gfGrid; // TRUE if the grid is on.
- BOOL gfShowColor; // TRUE if Color palette is to be shown.
- BOOL gfShowView; // TRUE if View window is to be shown.
- BOOL gfShowToolbox; // TRUE if Toolbox is to be shown.
- INT gnBrushSize; // Current brush size.
- CHAR szAppPos[] = "AppPos"; // App window's position keyname.
- CHAR szTBPos[] = "TBPos"; // Toolbox window's position keyname.
- CHAR szViewPos[] = "ViewPos"; // View window's position keyname.
- CHAR szColorPos[] = "ColorPos"; // Color palette window's position keyname.
- CHAR szrgbScreen[] = "rgbScreen"; // Screen color keyname.
- /*
- * Instance handles, window handles and class strings ----------------------
- */
- HANDLE ghInst; // App instance handle.
- HANDLE haccelTbl; // Accelerator table handle.
- HCURSOR hcurWait; // Standard hourglass cursor.
- HWND ghwndMain; // Main app window handle.
- HWND ghwndWork; // Workspace window handle.
- HWND ghwndPropBar; // Properties Bar window handle.
- HWND ghwndToolbox; // Toolbox window handle.
- HWND ghwndView; // View window handle.
- HWND ghwndColor; // Color palette window handle.
- CHAR szMainClass[] = "ImagEdit"; // Main window class.
- CHAR szWorkClass[] = "Work"; // Work window class.
- CHAR szToolboxClass[] = "Toolbox"; // Toolbox window class.
- CHAR szToolBtnClass[] = "ToolBtn"; // Toolbox button window class.
- CHAR szViewClass[] = "View"; // View window class.
- CHAR szColorBoxClass[] = "ColorBox";// Color box window class.
- CHAR szColorLRClass[] = "ColorLR"; // Color Left-Right sample class.
- /*
- * Device list globals -----------------------------------------------------
- */
- PDEVICE gpIconDeviceHead = NULL; // Head of icon device list.
- INT gnIconDevices = 0; // Number of icon devices.
- PDEVICE gpCursorDeviceHead = NULL; // Head of cursor device list.
- INT gnCursorDevices = 0; // Number of cursor devices.
- /*
- * Globals that describe the current file and image being edited -----------
- */
- CHAR gszFullFileName[CCHMAXPATH]; // Full path name of current file.
- PSTR gpszFileName = NULL; // Current file name (or NULL).
- INT giType = FT_BITMAP; // Type of object being edited currently.
- PIMAGEINFO gpImageHead = NULL; // Head of image linked list.
- INT gnImages = 0; // Number of images in the file.
- BOOL fFileDirty; // TRUE if the file is dirty.
- PIMAGEINFO gpImageCur = NULL; // Pointer to current image.
- INT gcxImage; // Width of the image.
- INT gcyImage; // Height of the image.
- INT gnColors = 16; // Number of colors of current image.
- BOOL fImageDirty; // TRUE if the image is dirty.
- /*
- * Drawing DC's and bitmaps ------------------------------------------------
- */
- HDC ghdcImage = NULL; // Image XOR DC.
- HBITMAP ghbmImage = NULL; // Image XOR bitmap.
- HDC ghdcANDMask = NULL; // Image AND mask DC.
- HBITMAP ghbmANDMask = NULL; // Image AND mask bitmap.
- HBITMAP ghbmUndo = NULL; // Backup of XOR bitmap for undo.
- HBITMAP ghbmUndoMask = NULL; // Backup of AND mask bitmap for undo.
- /*
- * Globals for the color palette and drawing -------------------------------
- */
- INT giColorLeft; // Index to the left color in gargbCurrent.
- INT giColorRight; // Index to the right color in gargbCurrent.
- INT gfModeLeft; // Mode of the left color brush.
- INT gfModeRight; // Mode of the right color brush.
- HBRUSH ghbrLeft = NULL; // Brush with left mouse button color.
- HBRUSH ghbrLeftSolid = NULL; // Brush with solid left button color.
- HBRUSH ghbrRight = NULL; // Brush with right mouse button color.
- HBRUSH ghbrRightSolid = NULL; // Brush with solid right button color.
- HBRUSH ghbrScreen = NULL; // Brush with screen color.
- HBRUSH ghbrInverse = NULL; // Brush with inverse screen color.
- HPEN ghpenLeft = NULL; // Left color pen.
- HPEN ghpenRight = NULL; // Right color pen.
- DWORD grgbScreenDefault; // Default screen color.
- DWORD grgbScreen; // RGB of screen color.
- DWORD grgbInverse; // RGB of inverse screen color.
- DWORD *gargbCurrent; // Points to the current color table.
- DWORD gargbColor[COLORSMAX]; // Current color color table.
- DWORD gargbMono[COLORSMAX]; // Current monochrome color table.
- HPEN hpenDarkGray = NULL; // A dark gray pen.
- DRAWPROC gpfnDrawProc; // Current drawing functions.
- INT gCurTool = -1; // Current tool (TOOL_* define).
- HBRUSH ghbrDraw = NULL; // Current drawing brush.
- HBRUSH ghbrDrawSolid = NULL; // Current solid drawing brush.
- HPEN ghpenDraw = NULL; // Current drawing pen.
- INT gfDrawMode; // Mode of current drawing brush.
- /*
- * The default color palette.
- */
- DWORD gargbDefaultColor[] = {
- RGB(255, 255, 255), RGB(0, 0, 0),
- RGB(192, 192, 192), RGB(128, 128, 128),
- RGB(255, 0, 0), RGB(128, 0, 0),
- RGB(255, 255, 0), RGB(128, 128, 0),
- RGB(0, 255, 0), RGB(0, 128, 0),
- RGB(0, 255, 255), RGB(0, 128, 128),
- RGB(0, 0, 255), RGB(0, 0, 128),
- RGB(255, 0, 255), RGB(128, 0, 128),
- RGB(255, 255, 128), RGB(128, 128, 64),
- RGB(0, 255, 128), RGB(0, 64, 64),
- RGB(128, 255, 255), RGB(0, 128, 255),
- RGB(128, 128, 255), RGB(0, 64, 128),
- RGB(255, 0, 128), RGB(64, 0, 128),
- RGB(255, 128, 64), RGB(128, 64, 0)
- };
- /*
- * The default monochrome palette.
- */
- DWORD gargbDefaultMono[] = {
- RGB(255, 255, 255), RGB(0, 0, 0),
- RGB(128, 128, 128), RGB(9, 9, 9),
- RGB(137, 137, 137), RGB(18, 18, 18),
- RGB(146, 146, 146), RGB(27, 27, 27),
- RGB(155, 155, 155), RGB(37, 37, 37),
- RGB(164, 164, 164), RGB(46, 46, 46),
- RGB(173, 173, 173), RGB(55, 55, 55),
- RGB(182, 182, 182), RGB(63, 63, 63),
- RGB(191, 191, 191), RGB(73, 73, 73),
- RGB(201, 201, 201), RGB(82, 82, 82),
- RGB(212, 212, 212), RGB(92, 92, 92),
- RGB(222, 222, 222), RGB(101, 101, 101),
- RGB(231, 231, 231), RGB(110, 110, 110),
- RGB(245, 245, 245), RGB(119, 119, 119)
- };
- /*
- * Color table for monochrome DIB's.
- */
- DWORD gargbColorTable2[] = {
- RGB(0, 0, 0),
- RGB(255, 255, 255)
- };
- /*
- * Array that describes each tool used in the editor. This table
- * is indexed by the TOOL_* defines.
- */
- TOOLS gaTools[] = {
- { PencilDP, NULL, IDBM_TUPENCIL, NULL, IDBM_TDPENCIL, NULL,
- TRUE, FALSE },
- { BrushDP, NULL, IDBM_TUBRUSH, NULL, IDBM_TDBRUSH, NULL,
- TRUE, FALSE },
- { PickDP, NULL, IDBM_TUSELECT, NULL, IDBM_TDSELECT, NULL,
- FALSE, FALSE },
- { LineDP, NULL, IDBM_TULINE, NULL, IDBM_TDLINE, NULL,
- FALSE, TRUE },
- { RectDP, NULL, IDBM_TURECT, NULL, IDBM_TDRECT, NULL,
- FALSE, TRUE },
- { RectDP, NULL, IDBM_TUSRECT, NULL, IDBM_TDSRECT, NULL,
- FALSE, TRUE },
- { CircleDP, NULL, IDBM_TUCIRCLE, NULL, IDBM_TDCIRCLE, NULL,
- FALSE, TRUE },
- { CircleDP, NULL, IDBM_TUSCIRCL, NULL, IDBM_TDSCIRCL, NULL,
- FALSE, TRUE },
- { FloodDP, NULL, IDBM_TUFLOOD, NULL, IDBM_TDFLOOD, NULL,
- TRUE, FALSE },
- { HotSpotDP, NULL, IDBM_TUHOTSPT, NULL, IDBM_TDHOTSPT, NULL,
- FALSE, FALSE }
- };
- /*
- * Globals and tables for messages and help --------------------------------
- */
- /*
- * Message box messages, for the Message() function.
- */
- MESSAGEDATA gamdMessages[] = {
- { IDS_OUTOFMEMORY, MB_OK | MB_ICONHAND },
- { IDS_MEMERROR, MB_OK | MB_ICONHAND },
- { IDS_BADBMPFILE, MB_OK | MB_ICONEXCLAMATION },
- { IDS_BADICOCURFILE, MB_OK | MB_ICONEXCLAMATION },
- { IDS_BADPALFILE, MB_OK | MB_ICONEXCLAMATION },
- { IDS_CANTOPEN, MB_OK | MB_ICONEXCLAMATION },
- { IDS_READERROR, MB_OK | MB_ICONEXCLAMATION },
- { IDS_WRITEERROR, MB_OK | MB_ICONEXCLAMATION },
- { IDS_CANTCREATE, MB_OK | MB_ICONEXCLAMATION },
- { IDS_NOCLIPBOARDFORMAT, MB_OK | MB_ICONEXCLAMATION },
- { IDS_NOCLIPBOARD, MB_OK | MB_ICONEXCLAMATION },
- { IDS_CANTEDITIMAGE, MB_OK | MB_ICONEXCLAMATION },
- { IDS_SAVEFILE, MB_YESNOCANCEL | MB_ICONEXCLAMATION },
- { IDS_ENTERANUMBER, MB_OK | MB_ICONEXCLAMATION },
- { IDS_BADDEVICESIZE, MB_OK | MB_ICONEXCLAMATION },
- { IDS_BADDEVICECOLORS, MB_OK | MB_ICONEXCLAMATION },
- { IDS_NOTSUPPORT, MB_OK | MB_ICONEXCLAMATION },
- { IDS_NOIMAGES, MB_OK | MB_ICONEXCLAMATION },
- { IDS_BADBMPSIZE, MB_OK | MB_ICONEXCLAMATION }
- };
- INT gidCurrentDlg = 0; // Current dialog id (null if none).
- INT gMenuSelected = 0; // Currently selected menu item.
- CHAR gszHelpFile[CCHMAXPATH]; // Path to the help file.
- HHOOK ghhkMsgFilter; // Hook handle for message filter func.
- FARPROC lpfnMsgFilterHookFunc; // The message filter proc instance.
- /*
- * Table that maps menu items to help context id's for them.
- */
- HELPMAP gahmapMenu[] = {
- {MENU_FILE_NEW, HELPID_FILE_NEW },
- {MENU_FILE_OPEN, HELPID_FILE_OPEN },
- {MENU_FILE_SAVE, HELPID_FILE_SAVE },
- {MENU_FILE_SAVEAS, HELPID_FILE_SAVEAS },
- {MENU_FILE_LOADCOLORS, HELPID_FILE_LOADCOLORS },
- {MENU_FILE_SAVECOLORS, HELPID_FILE_SAVECOLORS },
- {MENU_FILE_DEFAULTCOLORS, HELPID_FILE_DEFAULTCOLORS },
- {MENU_FILE_EXIT, HELPID_FILE_EXIT },
- {MENU_EDIT_UNDO, HELPID_EDIT_UNDO },
- {MENU_EDIT_RESTORE, HELPID_EDIT_RESTORE },
- {MENU_EDIT_COPY, HELPID_EDIT_COPY },
- {MENU_EDIT_PASTE, HELPID_EDIT_PASTE },
- {MENU_EDIT_CLEAR, HELPID_EDIT_CLEAR },
- {MENU_EDIT_NEWIMAGE, HELPID_EDIT_NEWIMAGE },
- {MENU_EDIT_SELECTIMAGE, HELPID_EDIT_SELECTIMAGE },
- {MENU_EDIT_DELETEIMAGE, HELPID_EDIT_DELETEIMAGE },
- {MENU_OPTIONS_GRID, HELPID_OPTIONS_GRID },
- {MENU_OPTIONS_BRUSH2, HELPID_OPTIONS_BRUSH2 },
- {MENU_OPTIONS_BRUSH3, HELPID_OPTIONS_BRUSH3 },
- {MENU_OPTIONS_BRUSH4, HELPID_OPTIONS_BRUSH4 },
- {MENU_OPTIONS_BRUSH5, HELPID_OPTIONS_BRUSH5 },
- {MENU_OPTIONS_SHOWCOLOR, HELPID_OPTIONS_SHOWCOLOR },
- {MENU_OPTIONS_SHOWVIEW, HELPID_OPTIONS_SHOWVIEW },
- {MENU_OPTIONS_SHOWTOOLBOX, HELPID_OPTIONS_SHOWTOOLBOX },
- {MENU_HELP_CONTENTS, HELPID_HELP_CONTENTS },
- {MENU_HELP_SEARCH, HELPID_HELP_SEARCH },
- // No help for the About menu command.
- {0, 0 }
- };
- /*
- * Table that maps dialog ids to help context id's for them.
- */
- HELPMAP gahmapDialog[] = {
- // No help for the About dialog.
- {DID_BITMAPSIZE, HELPID_BITMAPSIZE },
- {DID_PASTEOPTIONS, HELPID_PASTEOPTIONS },
- {DID_NEWCURSORIMAGE, HELPID_NEWCURSORIMAGE },
- {DID_NEWICONIMAGE, HELPID_NEWICONIMAGE },
- {DID_SELECTCURSORIMAGE, HELPID_SELECTCURSORIMAGE },
- {DID_SELECTICONIMAGE, HELPID_SELECTICONIMAGE },
- {DID_RESOURCETYPE, HELPID_RESOURCETYPE },
- {DID_COMMONFILEOPEN, HELPID_COMMONFILEOPEN },
- {DID_COMMONFILESAVE, HELPID_COMMONFILESAVE },
- {DID_COMMONFILEOPENPAL, HELPID_COMMONFILEOPENPAL },
- {DID_COMMONFILESAVEPAL, HELPID_COMMONFILESAVEPAL },
- {DID_COMMONFILECHOOSECOLOR, HELPID_COMMONFILECHOOSECOLOR },
- {DID_TOOLBOX, HELPID_TOOLBOX },
- {DID_PROPBAR, HELPID_PROPERTIESBAR },
- {DID_COLOR, HELPID_COLORPALETTE },
- {DID_VIEW, HELPID_VIEW },
- {0, 0 }
- };
- /*
- * Misc. globals -----------------------------------------------------------
- */
- INT gcxWorkSpace; // Width of workspace window.
- INT gcyWorkSpace; // Height of workspace window.
- INT gZoomFactor; // Magnification factor of image.
- RECT grcPick; // The current picking rectangle.
- INT gcxPick; // Width of picking rectangle.
- INT gcyPick; // Height of picking rectangle.
- UINT ClipboardFormat; // ID of private clipboard format.
- BOOL fStretchClipboardData = TRUE; // TRUE to default to stretch on paste.
- INT iNewFileType; // New file type the user selected.
- INT gcyBorder; // System border height.
- INT gcyPropBar; // Height of PropBar window.
- WNDPROC lpfnPropBarDlgProc = NULL; // Proc inst. of PropBar dialog proc.
- WNDPROC lpfnColorDlgProc = NULL; // Proc inst. of Color palette dlg proc.