813 lines
29 KiB
C++
813 lines
29 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program 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 General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
#ifndef BAGEL_MFC_WINGDI_H
|
|
#define BAGEL_MFC_WINGDI_H
|
|
|
|
#include "bagel/mfc/minwindef.h"
|
|
|
|
namespace Bagel {
|
|
namespace MFC {
|
|
|
|
class CDC;
|
|
|
|
#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (uint32)(uint16)(i)))
|
|
|
|
/*
|
|
* Class styles
|
|
*/
|
|
#define CS_VREDRAW 0x0001
|
|
#define CS_HREDRAW 0x0002
|
|
#define CS_DBLCLKS 0x0008
|
|
#define CS_OWNDC 0x0020
|
|
#define CS_CLASSDC 0x0040
|
|
#define CS_PARENTDC 0x0080
|
|
#define CS_NOCLOSE 0x0200
|
|
#define CS_SAVEBITS 0x0800
|
|
#define CS_BYTEALIGNCLIENT 0x1000
|
|
#define CS_BYTEALIGNWINDOW 0x2000
|
|
#define CS_GLOBALCLASS 0x4000
|
|
|
|
/* Device Parameters for GetDeviceCaps() */
|
|
#define DRIVERVERSION 0 /* Device driver version */
|
|
#define TECHNOLOGY 2 /* Device classification */
|
|
#define HORZSIZE 4 /* Horizontal size in millimeters */
|
|
#define VERTSIZE 6 /* Vertical size in millimeters */
|
|
#define HORZRES 8 /* Horizontal width in pixels */
|
|
#define VERTRES 10 /* Vertical height in pixels */
|
|
#define BITSPIXEL 12 /* Number of bits per pixel */
|
|
#define PLANES 14 /* Number of planes */
|
|
#define NUMBRUSHES 16 /* Number of brushes the device has */
|
|
#define NUMPENS 18 /* Number of pens the device has */
|
|
#define NUMMARKERS 20 /* Number of markers the device has */
|
|
#define NUMFONTS 22 /* Number of fonts the device has */
|
|
#define NUMCOLORS 24 /* Number of colors the device supports */
|
|
#define PDEVICESIZE 26 /* Size required for device descriptor */
|
|
#define CURVECAPS 28 /* Curve capabilities */
|
|
#define LINECAPS 30 /* Line capabilities */
|
|
#define POLYGONALCAPS 32 /* Polygonal capabilities */
|
|
#define TEXTCAPS 34 /* Text capabilities */
|
|
#define CLIPCAPS 36 /* Clipping capabilities */
|
|
#define RASTERCAPS 38 /* Bitblt capabilities */
|
|
#define ASPECTX 40 /* Length of the X leg */
|
|
#define ASPECTY 42 /* Length of the Y leg */
|
|
#define ASPECTXY 44 /* Length of the hypotenuse */
|
|
|
|
#define LOGPIXELSX 88 /* Logical pixels/inch in X */
|
|
#define LOGPIXELSY 90 /* Logical pixels/inch in Y */
|
|
|
|
#define SIZEPALETTE 104 /* Number of entries in physical palette */
|
|
#define NUMRESERVED 106 /* Number of reserved entries in palette */
|
|
#define COLORRES 108 /* Actual color resolution */
|
|
|
|
// Printing related DeviceCaps. These replace the appropriate Escapes
|
|
|
|
#define PHYSICALWIDTH 110 /* Physical Width in device units */
|
|
#define PHYSICALHEIGHT 111 /* Physical Height in device units */
|
|
#define PHYSICALOFFSETX 112 /* Physical Printable Area x margin */
|
|
#define PHYSICALOFFSETY 113 /* Physical Printable Area y margin */
|
|
#define SCALINGFACTORX 114 /* Scaling factor x */
|
|
#define SCALINGFACTORY 115 /* Scaling factor y */
|
|
|
|
// Display driver specific
|
|
|
|
#define VREFRESH 116 /* Current vertical refresh rate of the */
|
|
/* display device (for displays only) in Hz*/
|
|
#define DESKTOPVERTRES 117 /* Horizontal width of entire desktop in */
|
|
/* pixels */
|
|
#define DESKTOPHORZRES 118 /* Vertical height of entire desktop in */
|
|
/* pixels */
|
|
#define BLTALIGNMENT 119 /* Preferred blt alignment */
|
|
#define SHADEBLENDCAPS 120 /* Shading and blending caps */
|
|
#define COLORMGMTCAPS 121 /* Color Management caps */
|
|
|
|
|
|
/* Raster Capabilities */
|
|
#define RC_NONE
|
|
#define RC_BITBLT 1 /* Can do standard BLT. */
|
|
#define RC_BANDING 2 /* Device requires banding support */
|
|
#define RC_SCALING 4 /* Device requires scaling support */
|
|
#define RC_BITMAP64 8 /* Device can support >64K bitmap */
|
|
#define RC_GDI20_OUTPUT 0x0010 /* has 2.0 output calls */
|
|
#define RC_GDI20_STATE 0x0020
|
|
#define RC_SAVEBITMAP 0x0040
|
|
#define RC_DI_BITMAP 0x0080 /* supports DIB to memory */
|
|
#define RC_PALETTE 0x0100 /* supports a palette */
|
|
#define RC_DIBTODEV 0x0200 /* supports DIBitsToDevice */
|
|
#define RC_BIGFONT 0x0400 /* supports >64K fonts */
|
|
#define RC_STRETCHBLT 0x0800 /* supports StretchBlt */
|
|
#define RC_FLOODFILL 0x1000 /* supports FloodFill */
|
|
#define RC_STRETCHDIB 0x2000 /* supports StretchDIBits */
|
|
#define RC_OP_DX_OUTPUT 0x4000
|
|
#define RC_DEVBITS 0x8000
|
|
|
|
/* Ternary raster operations */
|
|
#define SRCCOPY (uint32)0x00CC0020 /* dest = source */
|
|
#define SRCPAINT (uint32)0x00EE0086 /* dest = source OR dest */
|
|
#define SRCAND (uint32)0x008800C6 /* dest = source AND dest */
|
|
#define SRCINVERT (uint32)0x00660046 /* dest = source XOR dest */
|
|
#define SRCERASE (uint32)0x00440328 /* dest = source AND (NOT dest ) */
|
|
#define NOTSRCCOPY (uint32)0x00330008 /* dest = (NOT source) */
|
|
#define NOTSRCERASE (uint32)0x001100A6 /* dest = (NOT src) AND (NOT dest) */
|
|
#define MERGECOPY (uint32)0x00C000CA /* dest = (source AND pattern) */
|
|
#define MERGEPAINT (uint32)0x00BB0226 /* dest = (NOT source) OR dest */
|
|
#define PATCOPY (uint32)0x00F00021 /* dest = pattern */
|
|
#define PATPAINT (uint32)0x00FB0A09 /* dest = DPSnoo */
|
|
#define PATINVERT (uint32)0x005A0049 /* dest = pattern XOR dest */
|
|
#define DSTINVERT (uint32)0x00550009 /* dest = (NOT dest) */
|
|
#define BLACKNESS (uint32)0x00000042 /* dest = BLACK */
|
|
#define WHITENESS (uint32)0x00FF0062 /* dest = WHITE */
|
|
#define NOMIRRORBITMAP (uint32)0x80000000 /* Do not Mirror the bitmap in this call */
|
|
#define CAPTUREBLT (uint32)0x40000000 /* Include layered windows */
|
|
|
|
/* StretchBlt() Modes */
|
|
#define BLACKONWHITE 1
|
|
#define WHITEONBLACK 2
|
|
#define COLORONCOLOR 3
|
|
#define HALFTONE 4
|
|
#define MAXSTRETCHBLTMODE 4
|
|
|
|
/* DIB color table identifiers */
|
|
#define DIB_RGB_COLORS 0 /* color table in RGBs */
|
|
#define DIB_PAL_COLORS 1 /* color table in palette indices */
|
|
|
|
/* constants for CreateDIBitmap */
|
|
#define CBM_INIT 0x04L /* initialize bitmap */
|
|
|
|
/*
|
|
* ShowWindow() Commands
|
|
*/
|
|
#define SW_HIDE 0
|
|
#define SW_SHOWNORMAL 1
|
|
#define SW_NORMAL 1
|
|
#define SW_SHOWMINIMIZED 2
|
|
#define SW_SHOWMAXIMIZED 3
|
|
#define SW_MAXIMIZE 3
|
|
#define SW_SHOWNOACTIVATE 4
|
|
#define SW_SHOW 5
|
|
#define SW_MINIMIZE 6
|
|
#define SW_SHOWMINNOACTIVE 7
|
|
#define SW_SHOWNA 8
|
|
#define SW_RESTORE 9
|
|
#define SW_SHOWDEFAULT 10
|
|
#define SW_FORCEMINIMIZE 11
|
|
#define SW_MAX 11
|
|
|
|
/* GetWindowWord */
|
|
#define GWW_HINSTANCE (-6)
|
|
|
|
/* Font Families */
|
|
#define FF_DONTCARE (0<<4) /* Don't care or don't know. */
|
|
#define FF_ROMAN (1<<4) /* Variable stroke width, serifed. */
|
|
/* Times Roman, Century Schoolbook, etc. */
|
|
#define FF_SWISS (2<<4) /* Variable stroke width, sans-serifed. */
|
|
/* Helvetica, Swiss, etc. */
|
|
#define FF_MODERN (3<<4) /* Constant stroke width, serifed or sans-serifed. */
|
|
/* Pica, Elite, Courier, etc. */
|
|
#define FF_SCRIPT (4<<4) /* Cursive, etc. */
|
|
#define FF_DECORATIVE (5<<4) /* Old English, etc. */
|
|
|
|
/* Font Weights */
|
|
enum FontWeight {
|
|
FW_DONTCARE = 0,
|
|
FW_THIN = 100,
|
|
FW_EXTRALIGHT = 200,
|
|
FW_LIGHT = 300,
|
|
FW_NORMAL = 400,
|
|
FW_MEDIUM = 500,
|
|
FW_SEMIBOLD = 600,
|
|
FW_BOLD = 700,
|
|
FW_EXTRABOLD = 800,
|
|
FW_HEAVY = 900,
|
|
|
|
FW_ULTRALIGHT = FW_EXTRALIGHT,
|
|
FW_REGULAR = FW_NORMAL,
|
|
FW_DEMIBOLD = FW_SEMIBOLD,
|
|
FW_ULTRABOLD = FW_EXTRABOLD,
|
|
FW_BLACK = FW_HEAVY
|
|
};
|
|
|
|
|
|
#define OUT_DEFAULT_PRECIS 0
|
|
#define OUT_STRING_PRECIS 1
|
|
#define OUT_CHARACTER_PRECIS 2
|
|
#define OUT_STROKE_PRECIS 3
|
|
#define OUT_TT_PRECIS 4
|
|
#define OUT_DEVICE_PRECIS 5
|
|
#define OUT_RASTER_PRECIS 6
|
|
#define OUT_TT_ONLY_PRECIS 7
|
|
#define OUT_OUTLINE_PRECIS 8
|
|
#define OUT_SCREEN_OUTLINE_PRECIS 9
|
|
#define OUT_PS_ONLY_PRECIS 10
|
|
|
|
#define DEFAULT_QUALITY 0
|
|
#define DRAFT_QUALITY 1
|
|
#define PROOF_QUALITY 2
|
|
#define NONANTIALIASED_QUALITY 3
|
|
#define ANTIALIASED_QUALITY 4
|
|
|
|
/* Background Modes */
|
|
#define TRANSPARENT 1
|
|
#define OPAQUE 2
|
|
#define BKMODE_LAST 2
|
|
|
|
/*
|
|
* Button Control Styles
|
|
*/
|
|
#define BS_PUSHBUTTON 0x00000000L
|
|
#define BS_DEFPUSHBUTTON 0x00000001L
|
|
#define BS_CHECKBOX 0x00000002L
|
|
#define BS_AUTOCHECKBOX 0x00000003L
|
|
#define BS_RADIOBUTTON 0x00000004L
|
|
#define BS_3STATE 0x00000005L
|
|
#define BS_AUTO3STATE 0x00000006L
|
|
#define BS_GROUPBOX 0x00000007L
|
|
#define BS_USERBUTTON 0x00000008L
|
|
#define BS_AUTORADIOBUTTON 0x00000009L
|
|
#define BS_PUSHBOX 0x0000000AL
|
|
#define BS_OWNERDRAW 0x0000000BL
|
|
#define BS_TYPEMASK 0x0000000FL
|
|
#define BS_LEFTTEXT 0x00000020L
|
|
#define BS_TEXT 0x00000000L
|
|
#define BS_ICON 0x00000040L
|
|
#define BS_BITMAP 0x00000080L
|
|
#define BS_LEFT 0x00000100L
|
|
#define BS_RIGHT 0x00000200L
|
|
#define BS_CENTER 0x00000300L
|
|
#define BS_TOP 0x00000400L
|
|
#define BS_BOTTOM 0x00000800L
|
|
#define BS_VCENTER 0x00000C00L
|
|
#define BS_PUSHLIKE 0x00001000L
|
|
#define BS_MULTILINE 0x00002000L
|
|
#define BS_NOTIFY 0x00004000L
|
|
#define BS_FLAT 0x00008000L
|
|
#define BS_RIGHTBUTTON BS_LEFTTEXT
|
|
|
|
/*
|
|
* Standard Cursor IDs
|
|
*/
|
|
#define MAKEINTRESOURCE(i) ((char *)((uintptr)((uint16)(i))))
|
|
#define IDC_NONE 0
|
|
|
|
#define IDC_ARROW MAKEINTRESOURCE(32512)
|
|
#define IDC_IBEAM MAKEINTRESOURCE(32513)
|
|
#define IDC_WAIT MAKEINTRESOURCE(32514)
|
|
#define IDC_CROSS MAKEINTRESOURCE(32515)
|
|
#define IDC_UPARROW MAKEINTRESOURCE(32516)
|
|
#define IDC_SIZE MAKEINTRESOURCE(32640) /* OBSOLETE: use IDC_SIZEALL */
|
|
#define IDC_ICON MAKEINTRESOURCE(32641) /* OBSOLETE: use IDC_ARROW */
|
|
#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
|
|
#define IDC_SIZENESW MAKEINTRESOURCE(32643)
|
|
#define IDC_SIZEWE MAKEINTRESOURCE(32644)
|
|
#define IDC_SIZENS MAKEINTRESOURCE(32645)
|
|
#define IDC_SIZEALL MAKEINTRESOURCE(32646)
|
|
#define IDC_NO MAKEINTRESOURCE(32648) /*not in win3.1 */
|
|
#define IDC_HAND MAKEINTRESOURCE(32649)
|
|
#define IDC_APPSTARTING MAKEINTRESOURCE(32650) /*not in win3.1 */
|
|
#define IDC_HELP MAKEINTRESOURCE(32651)
|
|
|
|
|
|
/*
|
|
* Owner draw state
|
|
*/
|
|
enum {
|
|
ODS_SELECTED = 0x0001,
|
|
ODS_ENABLED = 0x0002,
|
|
ODS_DISABLED = 0x0004,
|
|
ODS_GRAYED = ODS_DISABLED,
|
|
ODS_CHECKED = 0x0008,
|
|
ODS_FOCUS = 0x0010,
|
|
ODS_DEFAULT = 0x0020,
|
|
ODS_COMBOBOXEDIT = 0x1000,
|
|
ODS_HOTLIGHT = 0x0040,
|
|
ODS_INACTIVE = 0x0080,
|
|
ODS_NOACCEL = 0x0100,
|
|
ODS_NOFOCUSRECT = 0x0200
|
|
};
|
|
|
|
enum {
|
|
BST_UNCHECKED = 0,
|
|
BST_CHECKED = 1,
|
|
BST_INDETERMINATE = 2,
|
|
BST_PUSHED = 4,
|
|
BST_FOCUS = 8
|
|
};
|
|
|
|
/* Stock Logical Objects */
|
|
#define WHITE_BRUSH 0
|
|
#define LTGRAY_BRUSH 1
|
|
#define GRAY_BRUSH 2
|
|
#define DKGRAY_BRUSH 3
|
|
#define BLACK_BRUSH 4
|
|
#define NULL_BRUSH 5
|
|
#define HOLLOW_BRUSH NULL_BRUSH
|
|
#define WHITE_PEN 6
|
|
#define BLACK_PEN 7
|
|
#define NULL_PEN 8
|
|
#define OEM_FIXED_FONT 10
|
|
#define ANSI_FIXED_FONT 11
|
|
#define ANSI_VAR_FONT 12
|
|
#define SYSTEM_FONT 13
|
|
#define DEVICE_DEFAULT_FONT 14
|
|
#define DEFAULT_PALETTE 15
|
|
#define SYSTEM_FIXED_FONT 16
|
|
|
|
|
|
/* Pen Styles */
|
|
#define PS_SOLID 0
|
|
#define PS_DASH 1 /* ------- */
|
|
#define PS_DOT 2 /* ....... */
|
|
#define PS_DASHDOT 3 /* _._._._ */
|
|
#define PS_DASHDOTDOT 4 /* _.._.._ */
|
|
#define PS_NULL 5
|
|
#define PS_INSIDEFRAME 6
|
|
#define PS_USERSTYLE 7
|
|
#define PS_ALTERNATE 8
|
|
#define PS_STYLE_MASK 0x0000000F
|
|
|
|
|
|
/*
|
|
* Button Control Messages
|
|
*/
|
|
#define BM_GETCHECK 0x00F0
|
|
#define BM_SETCHECK 0x00F1
|
|
#define BM_GETSTATE 0x00F2
|
|
#define BM_SETSTATE 0x00F3
|
|
#define BM_SETSTYLE 0x00F4
|
|
#define BM_CLICK 0x00F5
|
|
#define BM_GETIMAGE 0x00F6
|
|
#define BM_SETIMAGE 0x00F7
|
|
#define BM_SETDONTCLICK 0x00F8
|
|
|
|
/*
|
|
* Owner draw control types
|
|
*/
|
|
#define ODT_MENU 1
|
|
#define ODT_LISTBOX 2
|
|
#define ODT_COMBOBOX 3
|
|
#define ODT_BUTTON 4
|
|
#define ODT_STATIC 5
|
|
|
|
/*
|
|
* Owner draw actions
|
|
*/
|
|
#define ODA_DRAWENTIRE 0x0001
|
|
#define ODA_SELECT 0x0002
|
|
#define ODA_FOCUS 0x0004
|
|
|
|
|
|
/*
|
|
* Color Types
|
|
*/
|
|
#define CTLCOLOR_MSGBOX 0
|
|
#define CTLCOLOR_EDIT 1
|
|
#define CTLCOLOR_LISTBOX 2
|
|
#define CTLCOLOR_BTN 3
|
|
#define CTLCOLOR_DLG 4
|
|
#define CTLCOLOR_SCROLLBAR 5
|
|
#define CTLCOLOR_STATIC 6
|
|
#define CTLCOLOR_MAX 7
|
|
|
|
#define COLOR_SCROLLBAR 0
|
|
#define COLOR_BACKGROUND 1
|
|
#define COLOR_ACTIVECAPTION 2
|
|
#define COLOR_INACTIVECAPTION 3
|
|
#define COLOR_MENU 4
|
|
#define COLOR_WINDOW 5
|
|
#define COLOR_WINDOWFRAME 6
|
|
#define COLOR_MENUTEXT 7
|
|
#define COLOR_WINDOWTEXT 8
|
|
#define COLOR_CAPTIONTEXT 9
|
|
#define COLOR_ACTIVEBORDER 10
|
|
#define COLOR_INACTIVEBORDER 11
|
|
#define COLOR_APPWORKSPACE 12
|
|
#define COLOR_HIGHLIGHT 13
|
|
#define COLOR_HIGHLIGHTTEXT 14
|
|
#define COLOR_BTNFACE 15
|
|
#define COLOR_BTNSHADOW 16
|
|
#define COLOR_GRAYTEXT 17
|
|
#define COLOR_BTNTEXT 18
|
|
#define COLOR_INACTIVECAPTIONTEXT 19
|
|
#define COLOR_BTNHIGHLIGHT 20
|
|
#define COLOR_3DDKSHADOW 21
|
|
#define COLOR_3DLIGHT 22
|
|
#define COLOR_INFOTEXT 23
|
|
#define COLOR_INFOBK 24
|
|
#define COLOR_HOTLIGHT 26
|
|
#define COLOR_GRADIENTACTIVECAPTION 27
|
|
#define COLOR_GRADIENTINACTIVECAPTION 28
|
|
#define COLOR_MENUHILIGHT 29
|
|
#define COLOR_MENUBAR 30
|
|
#define COLOR_DESKTOP COLOR_BACKGROUND
|
|
#define COLOR_3DFACE COLOR_BTNFACE
|
|
#define COLOR_3DSHADOW COLOR_BTNSHADOW
|
|
#define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT
|
|
#define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT
|
|
#define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT
|
|
|
|
/* StretchBlt() Modes */
|
|
#define BLACKONWHITE 1
|
|
#define WHITEONBLACK 2
|
|
#define COLORONCOLOR 3
|
|
#define HALFTONE 4
|
|
#define MAXSTRETCHBLTMODE 4
|
|
#define STRETCH_ANDSCANS BLACKONWHITE
|
|
#define STRETCH_ORSCANS WHITEONBLACK
|
|
#define STRETCH_DELETESCANS COLORONCOLOR
|
|
#define STRETCH_HALFTONE HALFTONE
|
|
|
|
/* Binary raster ops */
|
|
#define R2_BLACK 1 /* 0 */
|
|
#define R2_NOTMERGEPEN 2 /* DPon */
|
|
#define R2_MASKNOTPEN 3 /* DPna */
|
|
#define R2_NOTCOPYPEN 4 /* PN */
|
|
#define R2_MASKPENNOT 5 /* PDna */
|
|
#define R2_NOT 6 /* Dn */
|
|
#define R2_XORPEN 7 /* DPx */
|
|
#define R2_NOTMASKPEN 8 /* DPan */
|
|
#define R2_MASKPEN 9 /* DPa */
|
|
#define R2_NOTXORPEN 10 /* DPxn */
|
|
#define R2_NOP 11 /* D */
|
|
#define R2_MERGENOTPEN 12 /* DPno */
|
|
#define R2_COPYPEN 13 /* P */
|
|
#define R2_MERGEPENNOT 14 /* PDno */
|
|
#define R2_MERGEPEN 15 /* DPo */
|
|
#define R2_WHITE 16 /* 1 */
|
|
#define R2_LAST 16
|
|
|
|
/* Brush Styles */
|
|
#define BS_SOLID 0
|
|
#define BS_NULL 1
|
|
#define BS_HOLLOW BS_NULL
|
|
#define BS_HATCHED 2
|
|
#define BS_PATTERN 3
|
|
#define BS_INDEXED 4
|
|
#define BS_DIBPATTERN 5
|
|
#define BS_DIBPATTERNPT 6
|
|
#define BS_PATTERN8X8 7
|
|
#define BS_DIBPATTERN8X8 8
|
|
#define BS_MONOPATTERN 9
|
|
|
|
/* palette entry flags */
|
|
#define PC_RESERVED 0x01 /* palette index used for animation */
|
|
#define PC_EXPLICIT 0x02 /* palette index is explicit to device */
|
|
#define PC_NOCOLLAPSE 0x04 /* do not match color to system palette */
|
|
|
|
/*
|
|
* DrawText() Format Flags
|
|
*/
|
|
#define DT_TOP 0x00000000
|
|
#define DT_LEFT 0x00000000
|
|
#define DT_CENTER 0x00000001
|
|
#define DT_RIGHT 0x00000002
|
|
#define DT_VCENTER 0x00000004
|
|
#define DT_BOTTOM 0x00000008
|
|
#define DT_WORDBREAK 0x00000010
|
|
#define DT_SINGLELINE 0x00000020
|
|
#define DT_EXPANDTABS 0x00000040
|
|
#define DT_TABSTOP 0x00000080
|
|
#define DT_NOCLIP 0x00000100
|
|
#define DT_EXTERNALLEADING 0x00000200
|
|
#define DT_CALCRECT 0x00000400
|
|
#define DT_NOPREFIX 0x00000800
|
|
#define DT_INTERNAL 0x00001000
|
|
|
|
/* Text Alignment Options */
|
|
#define TA_NOUPDATECP 0
|
|
#define TA_UPDATECP 1
|
|
|
|
#define TA_LEFT 0
|
|
#define TA_RIGHT 2
|
|
#define TA_CENTER 6
|
|
|
|
#define TA_TOP 0
|
|
#define TA_BOTTOM 8
|
|
#define TA_BASELINE 24
|
|
|
|
/*
|
|
* Menu flags for Add/Check/EnableMenuItem()
|
|
*/
|
|
#define MF_INSERT 0x00000000L
|
|
#define MF_CHANGE 0x00000080L
|
|
#define MF_APPEND 0x00000100L
|
|
#define MF_DELETE 0x00000200L
|
|
#define MF_REMOVE 0x00001000L
|
|
|
|
#define MF_BYCOMMAND 0x00000000L
|
|
#define MF_BYPOSITION 0x00000400L
|
|
#define MF_SEPARATOR 0x00000800L
|
|
#define MF_ENABLED 0x00000000L
|
|
#define MF_GRAYED 0x00000001L
|
|
#define MF_DISABLED 0x00000002L
|
|
#define MF_UNCHECKED 0x00000000L
|
|
#define MF_CHECKED 0x00000008L
|
|
#define MF_USECHECKBITMAPS 0x00000200L
|
|
#define MF_STRING 0x00000000L
|
|
#define MF_BITMAP 0x00000004L
|
|
#define MF_OWNERDRAW 0x00000100L
|
|
#define MF_POPUP 0x00000010L
|
|
#define MF_MENUBARBREAK 0x00000020L
|
|
#define MF_MENUBREAK 0x00000040L
|
|
#define MF_UNHILITE 0x00000000L
|
|
#define MF_HILITE 0x00000080L
|
|
|
|
// CBrush hatch styles
|
|
#define HS_HORIZONTAL 0
|
|
#define HS_VERTICAL 1
|
|
#define HS_FDIAGONAL 2
|
|
#define HS_BDIAGONAL 3
|
|
#define HS_CROSS 4
|
|
#define HS_DIAGCROSS 5
|
|
|
|
// Constants for the biCompression field
|
|
#define BI_RGB 0L
|
|
|
|
/* tmPitchAndFamily flags */
|
|
#define TMPF_FIXED_PITCH 0x01
|
|
#define TMPF_VECTOR 0x02
|
|
#define TMPF_DEVICE 0x08
|
|
#define TMPF_TRUETYPE 0x04
|
|
|
|
#define ANSI_CHARSET 0
|
|
|
|
/* 3D border styles */
|
|
#define BDR_RAISEDOUTER 0x0001
|
|
#define BDR_SUNKENOUTER 0x0002
|
|
#define BDR_RAISEDINNER 0x0004
|
|
#define BDR_SUNKENINNER 0x0008
|
|
|
|
#define BDR_OUTER (BDR_RAISEDOUTER | BDR_SUNKENOUTER)
|
|
#define BDR_INNER (BDR_RAISEDINNER | BDR_SUNKENINNER)
|
|
#define BDR_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
|
|
#define BDR_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
|
|
|
|
|
|
#define EDGE_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
|
|
#define EDGE_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
|
|
#define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER)
|
|
#define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER)
|
|
|
|
/* Border flags */
|
|
#define BF_LEFT 0x0001
|
|
#define BF_TOP 0x0002
|
|
#define BF_RIGHT 0x0004
|
|
#define BF_BOTTOM 0x0008
|
|
|
|
#define BF_TOPLEFT (BF_TOP | BF_LEFT)
|
|
#define BF_TOPRIGHT (BF_TOP | BF_RIGHT)
|
|
#define BF_BOTTOMLEFT (BF_BOTTOM | BF_LEFT)
|
|
#define BF_BOTTOMRIGHT (BF_BOTTOM | BF_RIGHT)
|
|
#define BF_RECT (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
|
|
|
|
#define BF_DIAGONAL 0x0010
|
|
|
|
|
|
// For diagonal lines, the BF_RECT flags specify the end point of the
|
|
// vector bounded by the rectangle parameter.
|
|
#define BF_DIAGONAL_ENDTOPRIGHT (BF_DIAGONAL | BF_TOP | BF_RIGHT)
|
|
#define BF_DIAGONAL_ENDTOPLEFT (BF_DIAGONAL | BF_TOP | BF_LEFT)
|
|
#define BF_DIAGONAL_ENDBOTTOMLEFT (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
|
|
#define BF_DIAGONAL_ENDBOTTOMRIGHT (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
|
|
|
|
|
|
#define BF_MIDDLE 0x0800 /* Fill in the middle */
|
|
#define BF_SOFT 0x1000 /* For softer buttons */
|
|
#define BF_ADJUST 0x2000 /* Calculate the space left over */
|
|
#define BF_FLAT 0x4000 /* For flat rather than 3D borders */
|
|
#define BF_MONO 0x8000 /* For monochrome borders */
|
|
|
|
/*
|
|
* WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes
|
|
*/
|
|
#define HTERROR (-2)
|
|
#define HTTRANSPARENT (-1)
|
|
#define HTNOWHERE 0
|
|
#define HTCLIENT 1
|
|
#define HTCAPTION 2
|
|
#define HTSYSMENU 3
|
|
#define HTGROWBOX 4
|
|
#define HTSIZE HTGROWBOX
|
|
#define HTMENU 5
|
|
#define HTHSCROLL 6
|
|
#define HTVSCROLL 7
|
|
#define HTMINBUTTON 8
|
|
#define HTMAXBUTTON 9
|
|
#define HTLEFT 10
|
|
#define HTRIGHT 11
|
|
#define HTTOP 12
|
|
#define HTTOPLEFT 13
|
|
#define HTTOPRIGHT 14
|
|
#define HTBOTTOM 15
|
|
#define HTBOTTOMLEFT 16
|
|
#define HTBOTTOMRIGHT 17
|
|
#define HTBORDER 18
|
|
#define HTREDUCE HTMINBUTTON
|
|
#define HTZOOM HTMAXBUTTON
|
|
#define HTSIZEFIRST HTLEFT
|
|
#define HTSIZELAST HTBOTTOMRIGHT
|
|
|
|
|
|
typedef struct tagBITMAPINFOHEADER {
|
|
uint32 biSize;
|
|
long biWidth;
|
|
long biHeight;
|
|
uint16 biPlanes;
|
|
uint16 biBitCount;
|
|
uint32 biCompression;
|
|
uint32 biSizeImage;
|
|
long biXPelsPerMeter;
|
|
long biYPelsPerMeter;
|
|
uint32 biClrUsed;
|
|
uint32 biClrImportant;
|
|
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER,
|
|
*PBITMAPINFOHEADER;
|
|
|
|
typedef struct tagRGBQUAD {
|
|
byte rgbBlue;
|
|
byte rgbGreen;
|
|
byte rgbRed;
|
|
byte rgbReserved;
|
|
} RGBQUAD;
|
|
|
|
typedef struct tagBITMAPINFO {
|
|
BITMAPINFOHEADER bmiHeader;
|
|
RGBQUAD bmiColors[1];
|
|
} BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
|
|
|
|
/* Bitmap Header Definition */
|
|
typedef struct tagBITMAP {
|
|
int bmType;
|
|
int bmWidth;
|
|
int bmHeight;
|
|
int bmWidthBytes;
|
|
uint16 bmPlanes;
|
|
uint16 bmBitsPixel;
|
|
void * bmBits;
|
|
} BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
|
|
|
|
typedef struct tagBITMAPCOREHEADER {
|
|
uint32 bcSize; /* used to get to color table */
|
|
uint16 bcWidth;
|
|
uint16 bcHeight;
|
|
uint16 bcPlanes;
|
|
uint16 bcBitCount;
|
|
} BITMAPCOREHEADER, FAR *LPBITMAPCOREHEADER, *PBITMAPCOREHEADER;
|
|
|
|
typedef struct tagRGBTRIPLE {
|
|
byte rgbtBlue;
|
|
byte rgbtGreen;
|
|
byte rgbtRed;
|
|
} RGBTRIPLE, *PRGBTRIPLE, NEAR *NPRGBTRIPLE, FAR *LPRGBTRIPLE;
|
|
|
|
typedef struct tagBITMAPCOREINFO {
|
|
BITMAPCOREHEADER bmciHeader;
|
|
RGBTRIPLE bmciColors[1];
|
|
} BITMAPCOREINFO, FAR *LPBITMAPCOREINFO, *PBITMAPCOREINFO;
|
|
|
|
typedef struct tagPALETTEENTRY {
|
|
byte peRed;
|
|
byte peGreen;
|
|
byte peBlue;
|
|
byte peFlags;
|
|
} PALETTEENTRY, *PPALETTEENTRY, FAR *LPPALETTEENTRY;
|
|
|
|
typedef struct tagLOGPALETTE {
|
|
uint16 palVersion;
|
|
uint16 palNumEntries;
|
|
PALETTEENTRY palPalEntry[1];
|
|
} LOGPALETTE, *PLOGPALETTE, NEAR *NPLOGPALETTE, FAR *LPLOGPALETTE;
|
|
|
|
|
|
/*
|
|
* MEASUREITEMSTRUCT for ownerdraw
|
|
*/
|
|
typedef struct tagMEASUREITEMSTRUCT {
|
|
unsigned int CtlType;
|
|
unsigned int CtlID;
|
|
unsigned int itemID;
|
|
unsigned int itemWidth;
|
|
unsigned int itemHeight;
|
|
uintptr itemData;
|
|
} MEASUREITEMSTRUCT, NEAR *PMEASUREITEMSTRUCT, FAR *LPMEASUREITEMSTRUCT;
|
|
|
|
/*
|
|
* DRAWITEMSTRUCT for ownerdraw
|
|
*/
|
|
typedef struct tagDRAWITEMSTRUCT {
|
|
unsigned int CtlType;
|
|
unsigned int CtlID;
|
|
unsigned int itemID;
|
|
unsigned int itemAction;
|
|
unsigned int itemState;
|
|
HWND hwndItem;
|
|
HDC hDC;
|
|
RECT rcItem;
|
|
uintptr itemData;
|
|
} DRAWITEMSTRUCT, NEAR *PDRAWITEMSTRUCT, FAR *LPDRAWITEMSTRUCT;
|
|
|
|
/* Logical Brush (or Pattern) */
|
|
typedef struct tagLOGBRUSH {
|
|
unsigned int lbStyle;
|
|
COLORREF lbColor;
|
|
uintptr lbHatch;
|
|
} LOGBRUSH, *PLOGBRUSH, NEAR *NPLOGBRUSH, FAR *LPLOGBRUSH;
|
|
|
|
extern int GetDeviceCaps(HDC hdc, int index);
|
|
extern HDC CreateCompatibleDC(HDC hdc);
|
|
extern int ReleaseDC(HWND hWnd, HDC hDC);
|
|
extern bool DeleteDC(HDC hdc);
|
|
extern bool DeleteObject(HGDIOBJ ho);
|
|
extern HDC GetDC(HWND hWnd);
|
|
extern int GetObject(HANDLE h, int c, void *pv);
|
|
extern HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);
|
|
extern bool EndPaint(HWND hWnd, const PAINTSTRUCT *lpPaint);
|
|
|
|
extern intptr DialogBoxParam(HINSTANCE hInstance,
|
|
const char *lpTemplateName, HWND hWndParent,
|
|
DLGPROC lpDialogFunc, LPARAM dwInitParam);
|
|
extern bool IsWindow(HWND hWnd);
|
|
extern bool SetWindowText(HWND hWnd, const char *lpszString);
|
|
extern int GetWindowText(HWND hWnd, char *lpszStringBuf, int nMaxCount);
|
|
extern bool ScreenToClient(HWND hWnd, LPPOINT lpPoint);
|
|
|
|
HBITMAP CreateDIBitmap(HDC hdc, CONST BITMAPINFOHEADER *pbmih,
|
|
uint32 flInit, CONST void *pjBits, CONST BITMAPINFO *pbmi, unsigned int iUsage);
|
|
extern int GetDIBits(HDC hdc, HBITMAP hbm, unsigned int start, unsigned int cLines,
|
|
void *lpvBits, LPBITMAPINFO lpbmi, unsigned int usage);
|
|
|
|
extern HGDIOBJ SelectObject(HDC hdc, HGDIOBJ h);
|
|
extern HGDIOBJ GetStockObject(int i);
|
|
extern HPALETTE SelectPalette(HDC hdc, HPALETTE hPal, bool bForceBkgd);
|
|
extern unsigned int RealizePalette(HDC hdc);
|
|
extern bool BitBlt(HDC hdc, int xDest, int yDest, int width, int height,
|
|
HDC hdcSrc, int xSrc, int ySrc, uint32 rop);
|
|
extern bool StretchBlt(HDC hdcDest, int xDest, int yDest,
|
|
int wDest, int hDest, HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, uint32 rop);
|
|
extern int SetStretchBltMode(HDC hdc, int mode);
|
|
extern int StretchDIBits(HDC hdc, int xDest, int yDest, int DestWidth, int DestHeight,
|
|
int xSrc, int ySrc, int SrcWidth, int SrcHeight,
|
|
CONST void *lpBits, CONST BITMAPINFO *lpbmi, unsigned int iUsage, uint32 rop);
|
|
extern int GetTextExtent(HDC hdc, const char *text, size_t len);
|
|
extern bool GetTextMetrics(HDC hdc, LPTEXTMETRIC lptm);
|
|
extern intptr GetWindowWord(HWND hWnd, int nIndex);
|
|
extern int AddFontResource(const char *fontName);
|
|
extern bool RemoveFontResource(const char *fontName);
|
|
extern int SetScrollPos(HWND hWnd, int nBar,
|
|
int nPos, bool bRedraw);
|
|
extern void SetScrollRange(HWND hWnd, int nBar,
|
|
int nMinPos, int nMaxPos, bool bRedraw);
|
|
|
|
extern bool ClipCursor(const RECT *lpRect);
|
|
extern bool GetCursorPos(LPPOINT lpPoint);
|
|
extern bool SetCursorPos(int x, int y);
|
|
extern bool SetCapture(HWND hWnd);
|
|
extern bool ReleaseCapture();
|
|
extern HWND GetCapture();
|
|
extern HCURSOR LoadCursor(HINSTANCE hInstance,
|
|
const char *lpCursorName);
|
|
extern HCURSOR SetCursor(HCURSOR hCursor);
|
|
extern int ShowCursor(bool bShow);
|
|
|
|
typedef void (CALLBACK *LINEDDAPROC)(int x, int y, CDC *cdc);
|
|
extern bool LineDDA(int x0, int y0, int x1, int y1,
|
|
LINEDDAPROC lpProc, CDC *cdc);
|
|
|
|
extern byte GetRValue(COLORREF color);
|
|
extern byte GetGValue(COLORREF color);
|
|
extern byte GetBValue(COLORREF color);
|
|
|
|
extern HWND GetDlgItem(HWND hDlg, int nIDDlgItem);
|
|
extern bool EndDialog(HWND hDlg, intptr nResult);
|
|
extern bool SetDlgItemInt(HWND hDlg, int nIDDlgItem,
|
|
unsigned int uValue, bool bSigned);
|
|
extern bool CheckRadioButton(HWND hDlg, int nIDFirstButton,
|
|
int nIDLastButton, int nIDCheckButton);
|
|
|
|
extern uint32 GetSysColor(int nIndex);
|
|
extern HBRUSH GetSysColorBrush(int nIndex);
|
|
extern bool DestroyMenu(HMENU hMenu);
|
|
extern void SetActiveWindow(HWND hWnd);
|
|
|
|
} // namespace MFC
|
|
} // namespace Bagel
|
|
|
|
#endif
|