Добавил:
PolosatyMux
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Borland C++.ver.3.1(Portable).English / INCLUDE / WINDOWS
.H/*****************************************************************************\
* *
* windows.h - Windows functions, types, and definitions *
* *
* Version 3.10 *
* *
*******************************************************************************
*
* The following symbols control inclusion of various parts of this file:
*
* WINVER Windows version number (0x030a). To exclude
* definitions introduced in version 3.1 (or above)
* #define WINVER 0x0300 before #including <windows.h>
*
* #define: To prevent inclusion of:
*
* NOKERNEL KERNEL APIs and definitions
* NOGDI GDI APIs and definitions
* NOUSER USER APIs and definitions
* NOSOUND Sound APIs and definitions
* NOCOMM Comm driver APIs and definitions
* NODRIVERS Installable driver APIs and definitions
*
* NOMINMAX min() and max() macros
* NOLOGERROR LogError() and related definitions
* NOPROFILER Profiler APIs
* NOMEMMGR Local and global memory management
* NOLFILEIO _l* file I/O routines
* NOOPENFILE OpenFile and related definitions
* NORESOURCE Resource management
* NOATOM Atom management
* NOLANGUAGE Character test routines
* NOLSTRING lstr* string management routines
* NODBCS Double-byte character set routines
* NOKEYBOARDINFO Keyboard driver routines
* NOGDICAPMASKS GDI device capability constants
* NOCOLOR COLOR_* color values
* NOGDIOBJ GDI pens, brushes, fonts
* NODRAWTEXT DrawText() and related definitions
* NOTEXTMETRIC TEXTMETRIC and related APIs
* NOSCALABLEFONT Truetype scalable font support
* NOBITMAP Bitmap support
* NORASTEROPS GDI Raster operation definitions
* NOMETAFILE Metafile support
* NOSYSMETRICS GetSystemMetrics() and related SM_* definitions
* NOSYSTEMPARAMSINFO SystemParametersInfo() and SPI_* definitions
* NOMSG APIs and definitions that use MSG structure
* NOWINSTYLES Window style definitions
* NOWINOFFSETS Get/SetWindowWord/Long offset definitions
* NOSHOWWINDOW ShowWindow and related definitions
* NODEFERWINDOWPOS DeferWindowPos and related definitions
* NOVIRTUALKEYCODES VK_* virtual key codes
* NOKEYSTATES MK_* message key state flags
* NOWH SetWindowsHook and related WH_* definitions
* NOMENUS Menu APIs
* NOSCROLL Scrolling APIs and scroll bar control
* NOCLIPBOARD Clipboard APIs and definitions
* NOICONS IDI_* icon IDs
* NOMB MessageBox and related definitions
* NOSYSCOMMANDS WM_SYSCOMMAND SC_* definitions
* NOMDI MDI support
* NOCTLMGR Control management and controls
* NOWINMESSAGES WM_* window messages
* NOHELP Help support
*
\****************************************************************************/
#ifndef __WINDOWS_H /* prevent multiple includes */
#define __WINDOWS_H
#ifndef RC_INVOKED
#pragma option -a- /* Assume byte packing throughout */
#endif /* RC_INVOKED */
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
/* If WINVER is not defined, assume version 3.1 */
#ifndef WINVER
#define WINVER 0x030a
#endif
#ifdef RC_INVOKED
/* Don't include definitions that RC.EXE can't parse */
#define NOATOM
#define NOGDI
#define NOGDICAPMASKS
#define NOMETAFILE
#define NOMINMAX
#define NOMSG
#define NOOPENFILE
#define NORASTEROPS
#define NOSCROLL
#define NOSOUND
#define NOSYSMETRICS
#define NOTEXTMETRIC
#define NOWH
#define NODBCS
#define NOSYSTEMPARAMSINFO
#define NOCOMM
#define NOOEMRESOURCE
#endif /* RC_INVOKED */
/* Handle OEMRESOURCE for 3.0 compatibility */
#if (WINVER < 0x030a)
#define NOOEMRESOURCE
#ifdef OEMRESOURCE
#undef NOOEMRESOURCE
#endif
#endif
/******* Common definitions and typedefs ***********************************/
#define VOID void
#define FAR _far
#define NEAR _near
#define PASCAL _pascal
#define CDECL _cdecl
#define WINAPI _far _pascal
#define CALLBACK _far _pascal
/****** Simple types & common helper macros *********************************/
typedef int BOOL;
#define FALSE 0
#define TRUE 1
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned int UINT;
#ifdef STRICT
typedef signed long LONG;
#else
#define LONG long
#endif
#define LOBYTE(w) ((BYTE)(w))
#define HIBYTE(w) ((BYTE)((UINT)(w) >> 8))
#define LOWORD(l) ((WORD)(l))
#define HIWORD(l) ((WORD)((DWORD)(l) >> 16))
#define MAKELONG(low, high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
#if !defined(NOMINMAX) && !defined(__cplusplus)
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#endif /* NOMINMAX */
/* Types use for passing & returning polymorphic values */
typedef UINT WPARAM;
typedef LONG LPARAM;
typedef LONG LRESULT;
#define MAKELPARAM(low, high) ((LPARAM)MAKELONG(low, high))
#define MAKELRESULT(low, high) ((LRESULT)MAKELONG(low, high))
/****** Common pointer types ************************************************/
#ifndef NULL
#define NULL 0
#endif
typedef char NEAR* PSTR;
typedef char NEAR* NPSTR;
typedef char FAR* LPSTR;
typedef const char FAR* LPCSTR;
typedef BYTE NEAR* PBYTE;
typedef BYTE FAR* LPBYTE;
typedef int NEAR* PINT;
typedef int FAR* LPINT;
typedef WORD NEAR* PWORD;
typedef WORD FAR* LPWORD;
typedef long NEAR* PLONG;
typedef long FAR* LPLONG;
typedef DWORD NEAR* PDWORD;
typedef DWORD FAR* LPDWORD;
typedef void FAR* LPVOID;
#define MAKELP(sel, off) ((void FAR*)MAKELONG((off), (sel)))
#define SELECTOROF(lp) HIWORD(lp)
#define OFFSETOF(lp) LOWORD(lp)
#define FIELDOFFSET(type, field) ((int)(&((type NEAR*)1)->field)-1)
/****** Common handle types *************************************************/
#ifdef STRICT
typedef const void NEAR* HANDLE;
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; \
typedef const struct name##__ NEAR* name
#define DECLARE_HANDLE32(name) struct name##__ { int unused; }; \
typedef const struct name##__ FAR* name
#else /* STRICT */
typedef UINT HANDLE;
#define DECLARE_HANDLE(name) typedef UINT name
#define DECLARE_HANDLE32(name) typedef DWORD name
#endif /* !STRICT */
typedef HANDLE* PHANDLE;
typedef HANDLE NEAR* SPHANDLE;
typedef HANDLE FAR* LPHANDLE;
typedef HANDLE HGLOBAL;
typedef HANDLE HLOCAL;
typedef HANDLE GLOBALHANDLE;
typedef HANDLE LOCALHANDLE;
typedef UINT ATOM;
#ifdef STRICT
typedef void (CALLBACK* FARPROC)(void);
typedef void (NEAR PASCAL* NEARPROC)(void);
#else
typedef int (CALLBACK* FARPROC)();
typedef int (NEAR PASCAL* NEARPROC)();
#endif
DECLARE_HANDLE(HSTR);
/****** KERNEL typedefs, structures, and functions **************************/
DECLARE_HANDLE(HINSTANCE);
typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */
#ifndef NOKERNEL
/****** Application entry point function ************************************/
#if defined(STRICT)
int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
int FAR PASCAL LibMain(HINSTANCE, WORD, WORD, LPSTR);
#else
int PASCAL WinMain(HANDLE, HANDLE, LPSTR, int);
int FAR PASCAL LibMain(HANDLE, WORD, WORD, LPSTR);
#endif
int CALLBACK WEP(int);
/****** System Information **************************************************/
DWORD WINAPI GetVersion(void);
DWORD WINAPI GetFreeSpace(UINT);
UINT WINAPI GetCurrentPDB(void);
UINT WINAPI GetWindowsDirectory(LPSTR, UINT);
UINT WINAPI GetSystemDirectory(LPSTR, UINT);
#if (WINVER >= 0x030a)
UINT WINAPI GetFreeSystemResources(UINT);
#define GFSR_SYSTEMRESOURCES 0x0000
#define GFSR_GDIRESOURCES 0x0001
#define GFSR_USERRESOURCES 0x0002
#endif /* WINVER >= 0x030a */
DWORD WINAPI GetWinFlags(void);
#define WF_PMODE 0x0001
#define WF_CPU286 0x0002
#define WF_CPU386 0x0004
#define WF_CPU486 0x0008
#define WF_STANDARD 0x0010
#define WF_WIN286 0x0010
#define WF_ENHANCED 0x0020
#define WF_WIN386 0x0020
#define WF_CPU086 0x0040
#define WF_CPU186 0x0080
#define WF_LARGEFRAME 0x0100
#define WF_SMALLFRAME 0x0200
#define WF_80x87 0x0400
#define WF_PAGING 0x0800
#define WF_WLO 0x8000
LPSTR WINAPI GetDOSEnvironment(void);
DWORD WINAPI GetCurrentTime(void);
DWORD WINAPI GetTickCount(void);
DWORD WINAPI GetTimerResolution(void);
/****** Error handling ******************************************************/
#if (WINVER >= 0x030a)
#ifndef NOLOGERROR
void WINAPI LogError(UINT err, void FAR* lpInfo);
void WINAPI LogParamError(UINT err, FARPROC lpfn, void FAR* param);
/****** LogParamError/LogError values */
/* Error modifier bits */
#define ERR_WARNING 0x8000
#define ERR_PARAM 0x4000
#define ERR_SIZE_MASK 0x3000
#define ERR_BYTE 0x1000
#define ERR_WORD 0x2000
#define ERR_DWORD 0x3000
/****** LogParamError() values */
/* Generic parameter values */
#define ERR_BAD_VALUE 0x6001
#define ERR_BAD_FLAGS 0x6002
#define ERR_BAD_INDEX 0x6003
#define ERR_BAD_DVALUE 0x7004
#define ERR_BAD_DFLAGS 0x7005
#define ERR_BAD_DINDEX 0x7006
#define ERR_BAD_PTR 0x7007
#define ERR_BAD_FUNC_PTR 0x7008
#define ERR_BAD_SELECTOR 0x6009
#define ERR_BAD_STRING_PTR 0x700a
#define ERR_BAD_HANDLE 0x600b
/* KERNEL parameter errors */
#define ERR_BAD_HINSTANCE 0x6020
#define ERR_BAD_HMODULE 0x6021
#define ERR_BAD_GLOBAL_HANDLE 0x6022
#define ERR_BAD_LOCAL_HANDLE 0x6023
#define ERR_BAD_ATOM 0x6024
#define ERR_BAD_HFILE 0x6025
/* USER parameter errors */
#define ERR_BAD_HWND 0x6040
#define ERR_BAD_HMENU 0x6041
#define ERR_BAD_HCURSOR 0x6042
#define ERR_BAD_HICON 0x6043
#define ERR_BAD_HDWP 0x6044
#define ERR_BAD_CID 0x6045
#define ERR_BAD_HDRVR 0x6046
/* GDI parameter errors */
#define ERR_BAD_COORDS 0x7060
#define ERR_BAD_GDI_OBJECT 0x6061
#define ERR_BAD_HDC 0x6062
#define ERR_BAD_HPEN 0x6063
#define ERR_BAD_HFONT 0x6064
#define ERR_BAD_HBRUSH 0x6065
#define ERR_BAD_HBITMAP 0x6066
#define ERR_BAD_HRGN 0x6067
#define ERR_BAD_HPALETTE 0x6068
#define ERR_BAD_HMETAFILE 0x6069
/**** LogError() values */
/* KERNEL errors */
#define ERR_GALLOC 0x0001
#define ERR_GREALLOC 0x0002
#define ERR_GLOCK 0x0003
#define ERR_LALLOC 0x0004
#define ERR_LREALLOC 0x0005
#define ERR_LLOCK 0x0006
#define ERR_ALLOCRES 0x0007
#define ERR_LOCKRES 0x0008
#define ERR_LOADMODULE 0x0009
/* USER errors */
#define ERR_CREATEDLG 0x0040
#define ERR_CREATEDLG2 0x0041
#define ERR_REGISTERCLASS 0x0042
#define ERR_DCBUSY 0x0043
#define ERR_CREATEWND 0x0044
#define ERR_STRUCEXTRA 0x0045
#define ERR_LOADSTR 0x0046
#define ERR_LOADMENU 0x0047
#define ERR_NESTEDBEGINPAINT 0x0048
#define ERR_BADINDEX 0x0049
#define ERR_CREATEMENU 0x004a
/* GDI errors */
#define ERR_CREATEDC 0x0080
#define ERR_CREATEMETA 0x0081
#define ERR_DELOBJSELECTED 0x0082
#define ERR_SELBITMAP 0x0083
/* Debugging support (DEBUG SYSTEM ONLY) */
typedef struct tagWINDEBUGINFO
{
UINT flags;
DWORD dwOptions;
DWORD dwFilter;
char achAllocModule[8];
DWORD dwAllocBreak;
DWORD dwAllocCount;
} WINDEBUGINFO;
BOOL WINAPI GetWinDebugInfo(WINDEBUGINFO FAR* lpwdi, UINT flags);
BOOL WINAPI SetWinDebugInfo(const WINDEBUGINFO FAR* lpwdi);
void FAR _cdecl DebugOutput(UINT flags, LPCSTR lpsz, ...);
/* WINDEBUGINFO flags values */
#define WDI_OPTIONS 0x0001
#define WDI_FILTER 0x0002
#define WDI_ALLOCBREAK 0x0004
/* dwOptions values */
#define DBO_CHECKHEAP 0x0001
#define DBO_BUFFERFILL 0x0004
#define DBO_DISABLEGPTRAPPING 0x0010
#define DBO_CHECKFREE 0x0020
#define DBO_SILENT 0x8000
#define DBO_TRACEBREAK 0x2000
#define DBO_WARNINGBREAK 0x1000
#define DBO_NOERRORBREAK 0x0800
#define DBO_NOFATALBREAK 0x0400
#define DBO_INT3BREAK 0x0100
/* DebugOutput flags values */
#define DBF_TRACE 0x0000
#define DBF_WARNING 0x4000
#define DBF_ERROR 0x8000
#define DBF_FATAL 0xc000
/* dwFilter values */
#define DBF_KERNEL 0x1000
#define DBF_KRN_MEMMAN 0x0001
#define DBF_KRN_LOADMODULE 0x0002
#define DBF_KRN_SEGMENTLOAD 0x0004
#define DBF_USER 0x0800
#define DBF_GDI 0x0400
#define DBF_MMSYSTEM 0x0040
#define DBF_PENWIN 0x0020
#define DBF_APPLICATION 0x0008
#define DBF_DRIVER 0x0010
#endif /* NOLOGERROR */
#endif /* WINVER >= 0x030a */
void WINAPI FatalExit(int);
void WINAPI FatalAppExit(UINT, LPCSTR);
BOOL WINAPI ExitWindows(DWORD dwReturnCode, UINT wReserved);
#define EW_RESTARTWINDOWS 0x42
#if (WINVER >= 0x030a)
#define EW_REBOOTSYSTEM 0x43
BOOL WINAPI ExitWindowsExec(LPCSTR, LPCSTR);
#endif /* WINVER >= 0x030a */
void WINAPI DebugBreak(void);
void WINAPI OutputDebugString(LPCSTR);
/* SetErrorMode() constants */
#define SEM_FAILCRITICALERRORS 0x0001
#define SEM_NOGPFAULTERRORBOX 0x0002
#define SEM_NOOPENFILEERRORBOX 0x8000
UINT WINAPI SetErrorMode(UINT);
/****** Pointer validation **************************************************/
#if (WINVER >= 0x030a)
BOOL WINAPI IsBadReadPtr(const void FAR* lp, UINT cb);
BOOL WINAPI IsBadWritePtr(void FAR* lp, UINT cb);
BOOL WINAPI IsBadHugeReadPtr(const void _huge* lp, DWORD cb);
BOOL WINAPI IsBadHugeWritePtr(void _huge* lp, DWORD cb);
BOOL WINAPI IsBadCodePtr(FARPROC lpfn);
BOOL WINAPI IsBadStringPtr(const void FAR* lpsz, UINT cchMax);
#endif /* WINVER >= 0x030a */
/****** Profiling support ***************************************************/
#ifndef NOPROFILER
int WINAPI ProfInsChk(void);
void WINAPI ProfSetup(int,int);
void WINAPI ProfSampRate(int,int);
void WINAPI ProfStart(void);
void WINAPI ProfStop(void);
void WINAPI ProfClear(void);
void WINAPI ProfFlush(void);
void WINAPI ProfFinish(void);
#endif /* NOPROFILER */
/****** Catch/Throw and stack management ************************************/
typedef int CATCHBUF[9];
typedef int FAR* LPCATCHBUF;
int WINAPI Catch(int FAR*);
void WINAPI Throw(const int FAR*, int);
void WINAPI SwitchStackBack(void);
void WINAPI SwitchStackTo(UINT, UINT, UINT);
/****** Module Management ***************************************************/
#define HINSTANCE_ERROR ((HINSTANCE)32)
HINSTANCE WINAPI LoadModule(LPCSTR, LPVOID);
BOOL WINAPI FreeModule(HINSTANCE);
HINSTANCE WINAPI LoadLibrary(LPCSTR);
void WINAPI FreeLibrary(HINSTANCE);
UINT WINAPI WinExec(LPCSTR, UINT);
HMODULE WINAPI GetModuleHandle(LPCSTR);
int WINAPI GetModuleUsage(HINSTANCE);
int WINAPI GetModuleFileName(HINSTANCE, LPSTR, int);
FARPROC WINAPI GetProcAddress(HINSTANCE, LPCSTR);
int WINAPI GetInstanceData(HINSTANCE, BYTE*, int);
HGLOBAL WINAPI GetCodeHandle(FARPROC);
typedef struct tagSEGINFO
{
UINT offSegment;
UINT cbSegment;
UINT flags;
UINT cbAlloc;
HGLOBAL h;
UINT alignShift;
UINT reserved[2];
} SEGINFO;
typedef SEGINFO FAR* LPSEGINFO;
void WINAPI GetCodeInfo(FARPROC lpProc, SEGINFO FAR* lpSegInfo);
FARPROC WINAPI MakeProcInstance(FARPROC, HINSTANCE);
void WINAPI FreeProcInstance(FARPROC);
#ifdef _LAX
#define MakeProcInstance(__F, __H) MakeProcInstance((FARPROC)__F, __H)
#define FreeProcInstance(__F) FreeProcInstance((FARPROC)__F)
#endif /* _LAX */
LONG WINAPI SetSwapAreaSize(UINT);
void WINAPI SwapRecording(UINT);
void WINAPI ValidateCodeSegments(void);
/* Windows Exit Procedure flag values */
#define WEP_SYSTEM_EXIT 1
#define WEP_FREE_DLL 0
/****** Task Management *****************************************************/
#endif /* NOKERNEL */
DECLARE_HANDLE(HTASK);
#ifndef NOKERNEL
UINT WINAPI GetNumTasks(void);
#if (WINVER >= 0x030a)
BOOL WINAPI IsTask(HTASK);
#endif /* WINVER >= 0x030a */
HTASK WINAPI GetCurrentTask(void);
void WINAPI Yield(void);
void WINAPI DirectedYield(HTASK);
/****** Global memory management ********************************************/
#ifndef NOMEMMGR
/* Global Memory Flags */
#define GMEM_FIXED 0x0000
#define GMEM_MOVEABLE 0x0002
#define GMEM_NOCOMPACT 0x0010
#define GMEM_NODISCARD 0x0020
#define GMEM_ZEROINIT 0x0040
#define GMEM_MODIFY 0x0080
#define GMEM_DISCARDABLE 0x0100
#define GMEM_NOT_BANKED 0x1000
#define GMEM_SHARE 0x2000
#define GMEM_DDESHARE 0x2000
#define GMEM_NOTIFY 0x4000
#define GMEM_LOWER GMEM_NOT_BANKED
#define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT)
#define GPTR (GMEM_FIXED | GMEM_ZEROINIT)
#define GlobalDiscard(h) GlobalReAlloc(h, 0L, GMEM_MOVEABLE)
HGLOBAL WINAPI GlobalAlloc(UINT, DWORD);
HGLOBAL WINAPI GlobalReAlloc(HGLOBAL, DWORD, UINT);
HGLOBAL WINAPI GlobalFree(HGLOBAL);
DWORD WINAPI GlobalDosAlloc(DWORD);
UINT WINAPI GlobalDosFree(UINT);
#ifdef STRICT
void FAR* WINAPI GlobalLock(HGLOBAL);
#else
char FAR* WINAPI GlobalLock(HGLOBAL);
#endif
BOOL WINAPI GlobalUnlock(HGLOBAL);
DWORD WINAPI GlobalSize(HGLOBAL);
DWORD WINAPI GlobalHandle(UINT);
/* GlobalFlags return flags (in addition to GMEM_DISCARDABLE) */
#define GMEM_DISCARDED 0x4000
#define GMEM_LOCKCOUNT 0x00FF
UINT WINAPI GlobalFlags(HGLOBAL);
#ifdef STRICT
void FAR* WINAPI GlobalWire(HGLOBAL);
#else
char FAR* WINAPI GlobalWire(HGLOBAL);
#endif
BOOL WINAPI GlobalUnWire(HGLOBAL);
UINT WINAPI GlobalPageLock(HGLOBAL);
UINT WINAPI GlobalPageUnlock(HGLOBAL);
void WINAPI GlobalFix(HGLOBAL);
void WINAPI GlobalUnfix(HGLOBAL);
HGLOBAL WINAPI GlobalLRUNewest(HGLOBAL);
HGLOBAL WINAPI GlobalLRUOldest(HGLOBAL);
DWORD WINAPI GlobalCompact(DWORD);
#ifdef STRICT
typedef BOOL (CALLBACK* GNOTIFYPROC)(HGLOBAL);
#else
typedef FARPROC GNOTIFYPROC;
#endif
void WINAPI GlobalNotify(GNOTIFYPROC);
HGLOBAL WINAPI LockSegment(UINT);
void WINAPI UnlockSegment(UINT);
#define LockData(dummy) LockSegment((UINT)-1)
#define UnlockData(dummy) UnlockSegment((UINT)-1)
UINT WINAPI AllocSelector(UINT);
UINT WINAPI FreeSelector(UINT);
UINT WINAPI AllocDStoCSAlias(UINT);
UINT WINAPI PrestoChangoSelector(UINT sourceSel, UINT destSel);
DWORD WINAPI GetSelectorBase(UINT);
UINT WINAPI SetSelectorBase(UINT, DWORD);
DWORD WINAPI GetSelectorLimit(UINT);
UINT WINAPI SetSelectorLimit(UINT, DWORD);
void WINAPI LimitEmsPages(DWORD);
void WINAPI ValidateFreeSpaces(void);
/* Low system memory notification message */
#define WM_COMPACTING 0x0041
/***** Local Memory Management */
/* Local Memory Flags */
#define LMEM_FIXED 0x0000
#define LMEM_MOVEABLE 0x0002
#define LMEM_NOCOMPACT 0x0010
#define LMEM_NODISCARD 0x0020
#define LMEM_ZEROINIT 0x0040
#define LMEM_MODIFY 0x0080
#define LMEM_DISCARDABLE 0x0F00
#define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT)
#define LPTR (LMEM_FIXED | LMEM_ZEROINIT)
#define NONZEROLHND (LMEM_MOVEABLE)
#define NONZEROLPTR (LMEM_FIXED)
#define LocalDiscard(h) LocalReAlloc(h, 0, LMEM_MOVEABLE)
HLOCAL WINAPI LocalAlloc(UINT, UINT);
HLOCAL WINAPI LocalReAlloc(HLOCAL, UINT, UINT);
HLOCAL WINAPI LocalFree(HLOCAL);
#ifdef STRICT
void NEAR* WINAPI LocalLock(HLOCAL);
#else
char NEAR* WINAPI LocalLock(HLOCAL);
#endif
BOOL WINAPI LocalUnlock(HLOCAL);
UINT WINAPI LocalSize(HLOCAL);
#ifdef STRICT
HLOCAL WINAPI LocalHandle(void NEAR*);
#else
HLOCAL WINAPI LocalHandle(UINT);
#endif
/* LocalFlags return flags (in addition to LMEM_DISCARDABLE) */
#define LMEM_DISCARDED 0x4000
#define LMEM_LOCKCOUNT 0x00FF
UINT WINAPI LocalFlags(HLOCAL);
BOOL WINAPI LocalInit(UINT, UINT, UINT);
UINT WINAPI LocalCompact(UINT);
UINT WINAPI LocalShrink(HLOCAL, UINT);
#endif /* NOMEMMGR */
/****** File I/O ************************************************************/
#ifndef NOLFILEIO
typedef int HFILE; /* Polymorphic with C runtime file handle type */
#define HFILE_ERROR ((HFILE)-1)
#ifndef NOOPENFILE
/* OpenFile() Structure */
typedef struct tagOFSTRUCT
{
BYTE cBytes;
BYTE fFixedDisk;
UINT nErrCode;
BYTE reserved[4];
char szPathName[128];
} OFSTRUCT;
typedef OFSTRUCT* POFSTRUCT;
typedef OFSTRUCT NEAR* NPOFSTRUCT;
typedef OFSTRUCT FAR* LPOFSTRUCT;
/* OpenFile() Flags */
#define OF_READ 0x0000
#define OF_WRITE 0x0001
#define OF_READWRITE 0x0002
#define OF_SHARE_COMPAT 0x0000
#define OF_SHARE_EXCLUSIVE 0x0010
#define OF_SHARE_DENY_WRITE 0x0020
#define OF_SHARE_DENY_READ 0x0030
#define OF_SHARE_DENY_NONE 0x0040
#define OF_PARSE 0x0100
#define OF_DELETE 0x0200
#define OF_VERIFY 0x0400 /* Used with OF_REOPEN */
#define OF_SEARCH 0x0400 /* Used without OF_REOPEN */
#define OF_CANCEL 0x0800
#define OF_CREATE 0x1000
#define OF_PROMPT 0x2000
#define OF_EXIST 0x4000
#define OF_REOPEN 0x8000
HFILE WINAPI OpenFile(LPCSTR, OFSTRUCT FAR*, UINT);
#endif /* NOOPENFILE */
/* _lopen() flags */
#define READ 0
#define WRITE 1
#define READ_WRITE 2
HFILE WINAPI _lopen(LPCSTR, int);
HFILE WINAPI _lcreat(LPCSTR, int);
HFILE WINAPI _lclose(HFILE);
LONG WINAPI _llseek(HFILE, LONG, int);
/* _llseek origin values */
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
UINT WINAPI _lread(HFILE, void _huge*, UINT);
UINT WINAPI _lwrite(HFILE, const void _huge*, UINT);
#if (WINVER >= 0x030a)
long WINAPI _hread(HFILE, void _huge*, long);
long WINAPI _hwrite(HFILE, const void _huge*, long);
#endif /* WINVER >= 0x030a */
#endif /* NOLFILEIO */
/* GetTempFileName() Flags */
#define TF_FORCEDRIVE (BYTE)0x80
int WINAPI GetTempFileName(BYTE, LPCSTR, UINT, LPSTR);
BYTE WINAPI GetTempDrive(char);
/* GetDriveType return values */
#define DRIVE_REMOVABLE 2
#define DRIVE_FIXED 3
#define DRIVE_REMOTE 4
UINT WINAPI GetDriveType(int);
UINT WINAPI SetHandleCount(UINT);
/****** Network support *****************************************************/
UINT WINAPI WNetAddConnection(LPSTR, LPSTR, LPSTR);
UINT WINAPI WNetGetConnection(LPSTR, LPSTR, UINT FAR*);
UINT WINAPI WNetCancelConnection(LPSTR, BOOL);
/* Errors */
#define WN_SUCCESS 0x0000
#define WN_NOT_SUPPORTED 0x0001
#define WN_NET_ERROR 0x0002
#define WN_MORE_DATA 0x0003
#define WN_BAD_POINTER 0x0004
#define WN_BAD_VALUE 0x0005
#define WN_BAD_PASSWORD 0x0006
#define WN_ACCESS_DENIED 0x0007
#define WN_FUNCTION_BUSY 0x0008
#define WN_WINDOWS_ERROR 0x0009
#define WN_BAD_USER 0x000A
#define WN_OUT_OF_MEMORY 0x000B
#define WN_CANCEL 0x000C
#define WN_CONTINUE 0x000D
/* Connection errors */
#define WN_NOT_CONNECTED 0x0030
#define WN_OPEN_FILES 0x0031
#define WN_BAD_NETNAME 0x0032
#define WN_BAD_LOCALNAME 0x0033
#define WN_ALREADY_CONNECTED 0x0034
#define WN_DEVICE_ERROR 0x0035
#define WN_CONNECTION_CLOSED 0x0036
/****** Resource Management *************************************************/
DECLARE_HANDLE(HRSRC);
HRSRC WINAPI FindResource(HINSTANCE, LPCSTR, LPCSTR);
HGLOBAL WINAPI LoadResource(HINSTANCE, HRSRC);
BOOL WINAPI FreeResource(HGLOBAL);
#ifdef STRICT
void FAR* WINAPI LockResource(HGLOBAL);
#else
char FAR* WINAPI LockResource(HGLOBAL);
#endif
#define UnlockResource(h) GlobalUnlock(h)
DWORD WINAPI SizeofResource(HINSTANCE, HRSRC);
int WINAPI AccessResource(HINSTANCE, HRSRC);
HGLOBAL WINAPI AllocResource(HINSTANCE, HRSRC, DWORD);
#ifdef STRICT
typedef HGLOBAL (CALLBACK* RSRCHDLRPROC)(HGLOBAL, HINSTANCE, HRSRC);
#else
typedef FARPROC RSRCHDLRPROC;
#endif
RSRCHDLRPROC WINAPI SetResourceHandler(HINSTANCE, LPCSTR, RSRCHDLRPROC);
#if defined(_WIN30_API)
#define MAKEINTRESOURCE(i) ((LPSTR)MAKELP(0, (i)))
#else
#define MAKEINTRESOURCE(i) ((LPCSTR)MAKELP(0, (i)))
#endif
#ifndef NORESOURCE
/* Predefined Resource Types */
#define RT_CURSOR MAKEINTRESOURCE(1)
#define RT_BITMAP MAKEINTRESOURCE(2)
#define RT_ICON MAKEINTRESOURCE(3)
#define RT_MENU MAKEINTRESOURCE(4)
#define RT_DIALOG MAKEINTRESOURCE(5)
#define RT_STRING MAKEINTRESOURCE(6)
#define RT_FONTDIR MAKEINTRESOURCE(7)
#define RT_FONT MAKEINTRESOURCE(8)
#define RT_ACCELERATOR MAKEINTRESOURCE(9)
#define RT_RCDATA MAKEINTRESOURCE(10)
#define RT_GROUP_CURSOR MAKEINTRESOURCE(12)
#define RT_GROUP_ICON MAKEINTRESOURCE(14)
#endif /* NORESOURCE */
#ifdef OEMRESOURCE
/* OEM Resource Ordinal Numbers */
#define OBM_CLOSE 32754
#define OBM_UPARROW 32753
#define OBM_DNARROW 32752
#define OBM_RGARROW 32751
#define OBM_LFARROW 32750
#define OBM_REDUCE 32749
#define OBM_ZOOM 32748
#define OBM_RESTORE 32747
#define OBM_REDUCED 32746
#define OBM_ZOOMD 32745
#define OBM_RESTORED 32744
#define OBM_UPARROWD 32743
#define OBM_DNARROWD 32742
#define OBM_RGARROWD 32741
#define OBM_LFARROWD 32740
#define OBM_MNARROW 32739
#define OBM_COMBO 32738
#if (WINVER >= 0x030a)
#define OBM_UPARROWI 32737
#define OBM_DNARROWI 32736
#define OBM_RGARROWI 32735
#define OBM_LFARROWI 32734
#endif /* WINVER >= 0x030a */
#define OBM_OLD_CLOSE 32767
#define OBM_SIZE 32766
#define OBM_OLD_UPARROW 32765
#define OBM_OLD_DNARROW 32764
#define OBM_OLD_RGARROW 32763
#define OBM_OLD_LFARROW 32762
#define OBM_BTSIZE 32761
#define OBM_CHECK 32760
#define OBM_CHECKBOXES 32759
#define OBM_BTNCORNERS 32758
#define OBM_OLD_REDUCE 32757
#define OBM_OLD_ZOOM 32756
#define OBM_OLD_RESTORE 32755
#define OCR_NORMAL 32512
#define OCR_IBEAM 32513
#define OCR_WAIT 32514
#define OCR_CROSS 32515
#define OCR_UP 32516
#define OCR_SIZE 32640
#define OCR_ICON 32641
#define OCR_SIZENWSE 32642
#define OCR_SIZENESW 32643
#define OCR_SIZEWE 32644
#define OCR_SIZENS 32645
#define OCR_SIZEALL 32646
#define OCR_ICOCUR 32647
#define OIC_SAMPLE 32512
#define OIC_HAND 32513
#define OIC_QUES 32514
#define OIC_BANG 32515
#define OIC_NOTE 32516
#endif /* OEMRESOURCE */
/****** Atom Management *****************************************************/
#if defined(_WIN30_API)
#define MAKEINTATOM(i) ((LPSTR)MAKELP(0, (i)))
#else
#define MAKEINTATOM(i) ((LPCSTR)MAKELP(0, (i)))
#endif
#ifndef NOATOM
BOOL WINAPI InitAtomTable(int);
ATOM WINAPI AddAtom(LPCSTR);
ATOM WINAPI DeleteAtom(ATOM);
ATOM WINAPI FindAtom(LPCSTR);
UINT WINAPI GetAtomName(ATOM, LPSTR, int);
ATOM WINAPI GlobalAddAtom(LPCSTR);
ATOM WINAPI GlobalDeleteAtom(ATOM);
ATOM WINAPI GlobalFindAtom(LPCSTR);
UINT WINAPI GlobalGetAtomName(ATOM, LPSTR, int);
HLOCAL WINAPI GetAtomHandle(ATOM);
#endif /* NOATOM */
/****** WIN.INI Support *****************************************************/
/* User Profile Routines */
UINT WINAPI GetProfileInt(LPCSTR, LPCSTR, int);
int WINAPI GetProfileString(LPCSTR, LPCSTR, LPCSTR, LPSTR, int);
BOOL WINAPI WriteProfileString(LPCSTR, LPCSTR, LPCSTR);
UINT WINAPI GetPrivateProfileInt(LPCSTR, LPCSTR, int, LPCSTR);
int WINAPI GetPrivateProfileString(LPCSTR, LPCSTR, LPCSTR, LPSTR, int, LPCSTR);
BOOL WINAPI WritePrivateProfileString(LPCSTR, LPCSTR, LPCSTR, LPCSTR);
#define WM_WININICHANGE 0x001A
/****** International & Char Translation Support ****************************/
void WINAPI AnsiToOem(const char _huge*, char _huge*);
void WINAPI OemToAnsi(const char _huge*, char _huge*);
void WINAPI AnsiToOemBuff(LPCSTR, LPSTR, UINT);
void WINAPI OemToAnsiBuff(LPCSTR, LPSTR, UINT);
LPSTR WINAPI AnsiNext(LPCSTR);
LPSTR WINAPI AnsiPrev(LPCSTR, LPCSTR);
LPSTR WINAPI AnsiUpper(LPSTR);
LPSTR WINAPI AnsiLower(LPSTR);
UINT WINAPI AnsiUpperBuff(LPSTR, UINT);
UINT WINAPI AnsiLowerBuff(LPSTR, UINT);
#ifndef NOLANGUAGE
BOOL WINAPI IsCharAlpha(char);
BOOL WINAPI IsCharAlphaNumeric(char);
BOOL WINAPI IsCharUpper(char);
BOOL WINAPI IsCharLower(char);
#endif
#ifndef NOLSTRING
int WINAPI lstrcmp(LPCSTR, LPCSTR);
int WINAPI lstrcmpi(LPCSTR, LPCSTR);
LPSTR WINAPI lstrcpy(LPSTR, LPCSTR);
LPSTR WINAPI lstrcat(LPSTR, LPCSTR);
int WINAPI lstrlen(LPCSTR);
#if (WINVER >= 0x030a)
LPSTR WINAPI lstrcpyn(LPSTR, LPCSTR, int);
void WINAPI hmemcpy(void _huge*, const void _huge*, long);
#endif /* WINVER >= 0x030a */
#endif /* NOLSTRING */
#if (WINVER >= 0x030a)
#ifndef NODBCS
BOOL WINAPI IsDBCSLeadByte(BYTE);
#endif /* NODBCS */
#endif /* WINVER >= 0x030a */
int WINAPI LoadString(HINSTANCE, UINT, LPSTR, int);
/****** Keyboard Driver Functions *******************************************/
#ifndef NOKEYBOARDINFO
DWORD WINAPI OemKeyScan(UINT);
UINT WINAPI VkKeyScan(UINT);
int WINAPI GetKeyboardType(int);
UINT WINAPI MapVirtualKey(UINT, UINT);
int WINAPI GetKBCodePage(void);
int WINAPI GetKeyNameText(LONG, LPSTR, int);
int WINAPI ToAscii(UINT wVirtKey, UINT wScanCode, BYTE FAR* lpKeyState, DWORD FAR* lpChar, UINT wFlags);
#endif
#endif /* NOKERNEL */
/****** GDI typedefs, structures, and functions *****************************/
DECLARE_HANDLE(HDC);
#ifndef NOGDI
#ifdef STRICT
typedef const void NEAR* HGDIOBJ;
#else
DECLARE_HANDLE(HGDIOBJ);
#endif
#endif /* NOGDI */
DECLARE_HANDLE(HBITMAP);
DECLARE_HANDLE(HPEN);
DECLARE_HANDLE(HBRUSH);
DECLARE_HANDLE(HRGN);
DECLARE_HANDLE(HPALETTE);
DECLARE_HANDLE(HFONT);
typedef struct tagRECT
{
int left;
int top;
int right;
int bottom;
} RECT;
typedef RECT* PRECT;
typedef RECT NEAR* NPRECT;
typedef RECT FAR* LPRECT;
typedef struct tagPOINT
{
int x;
int y;
} POINT;
typedef POINT* PPOINT;
typedef POINT NEAR* NPPOINT;
typedef POINT FAR* LPPOINT;
#if (WINVER >= 0x030a)
typedef struct tagSIZE
{
int cx;
int cy;
} SIZE;
typedef SIZE* PSIZE;
typedef SIZE NEAR* NPSIZE;
typedef SIZE FAR* LPSIZE;
#endif /* WINVER >= 0x030a */
#define MAKEPOINT(l) (*((POINT FAR*)&(l)))
#ifndef NOGDI
/****** DC Management *******************************************************/
HDC WINAPI CreateDC(LPCSTR, LPCSTR, LPCSTR, const void FAR*);
HDC WINAPI CreateIC(LPCSTR, LPCSTR, LPCSTR, const void FAR*);
HDC WINAPI CreateCompatibleDC(HDC);
BOOL WINAPI DeleteDC(HDC);
DWORD WINAPI GetDCOrg(HDC);
int WINAPI SaveDC(HDC);
BOOL WINAPI RestoreDC(HDC, int);
int WINAPI SetEnvironment(LPCSTR, const void FAR*, UINT);
int WINAPI GetEnvironment(LPCSTR, void FAR*, UINT);
int WINAPI MulDiv(int, int, int);
#if (WINVER >= 0x030a)
/* Drawing bounds accumulation APIs */
UINT WINAPI SetBoundsRect(HDC hDC, const RECT FAR* lprcBounds, UINT flags);
UINT WINAPI GetBoundsRect(HDC hDC, RECT FAR* lprcBounds, UINT flags);
#define DCB_RESET 0x0001
#define DCB_ACCUMULATE 0x0002
#define DCB_DIRTY DCB_ACCUMULATE
#define DCB_SET (DCB_RESET | DCB_ACCUMULATE)
#define DCB_ENABLE 0x0004
#define DCB_DISABLE 0x0008
#endif /* WINVER >= 0x030a */
/****** Device Capabilities *************************************************/
int WINAPI GetDeviceCaps(HDC, int);
/* Device Parameters for GetDeviceCaps() */
#define DRIVERVERSION 0
#define TECHNOLOGY 2
#define HORZSIZE 4
#define VERTSIZE 6
#define HORZRES 8
#define VERTRES 10
#define BITSPIXEL 12
#define PLANES 14
#define NUMBRUSHES 16
#define NUMPENS 18
#define NUMMARKERS 20
#define NUMFONTS 22
#define NUMCOLORS 24
#define PDEVICESIZE 26
#define CURVECAPS 28
#define LINECAPS 30
#define POLYGONALCAPS 32
#define TEXTCAPS 34
#define CLIPCAPS 36
#define RASTERCAPS 38
#define ASPECTX 40
#define ASPECTY 42
#define ASPECTXY 44
#define LOGPIXELSX 88
#define LOGPIXELSY 90
#define SIZEPALETTE 104
#define NUMRESERVED 106
#define COLORRES 108
#ifndef NOGDICAPMASKS
/* GetDeviceCaps() return value masks */
/* TECHNOLOGY */
#define DT_PLOTTER 0
#define DT_RASDISPLAY 1
#define DT_RASPRINTER 2
#define DT_RASCAMERA 3
#define DT_CHARSTREAM 4
#define DT_METAFILE 5
#define DT_DISPFILE 6
/* CURVECAPS */
#define CC_NONE 0x0000
#define CC_CIRCLES 0x0001
#define CC_PIE 0x0002
#define CC_CHORD 0x0004
#define CC_ELLIPSES 0x0008
#define CC_WIDE 0x0010
#define CC_STYLED 0x0020
#define CC_WIDESTYLED 0x0040
#define CC_INTERIORS 0x0080
#define CC_ROUNDRECT 0x0100
/* LINECAPS */
#define LC_NONE 0x0000
#define LC_POLYLINE 0x0002
#define LC_MARKER 0x0004
#define LC_POLYMARKER 0x0008
#define LC_WIDE 0x0010
#define LC_STYLED 0x0020
#define LC_WIDESTYLED 0x0040
#define LC_INTERIORS 0x0080
/* POLYGONALCAPS */
#define PC_NONE 0x0000
#define PC_POLYGON 0x0001
#define PC_RECTANGLE 0x0002
#define PC_WINDPOLYGON 0x0004
#define PC_SCANLINE 0x0008
#define PC_WIDE 0x0010
#define PC_STYLED 0x0020
#define PC_WIDESTYLED 0x0040
#define PC_INTERIORS 0x0080
/* TEXTCAPS */
#define TC_OP_CHARACTER 0x0001
#define TC_OP_STROKE 0x0002
#define TC_CP_STROKE 0x0004
#define TC_CR_90 0x0008
#define TC_CR_ANY 0x0010
#define TC_SF_X_YINDEP 0x0020
#define TC_SA_DOUBLE 0x0040
#define TC_SA_INTEGER 0x0080
#define TC_SA_CONTIN 0x0100
#define TC_EA_DOUBLE 0x0200
#define TC_IA_ABLE 0x0400
#define TC_UA_ABLE 0x0800
#define TC_SO_ABLE 0x1000
#define TC_RA_ABLE 0x2000
#define TC_VA_ABLE 0x4000
#define TC_RESERVED 0x8000
/* CLIPCAPS */
#define CP_NONE 0x0000
#define CP_RECTANGLE 0x0001
#define CP_REGION 0x0002
/* RASTERCAPS */
#define RC_NONE
#define RC_BITBLT 0x0001
#define RC_BANDING 0x0002
#define RC_SCALING 0x0004
#define RC_BITMAP64 0x0008
#define RC_GDI20_OUTPUT 0x0010
#define RC_GDI20_STATE 0x0020
#define RC_SAVEBITMAP 0x0040
#define RC_DI_BITMAP 0x0080
#define RC_PALETTE 0x0100
#define RC_DIBTODEV 0x0200
#define RC_BIGFONT 0x0400
#define RC_STRETCHBLT 0x0800
#define RC_FLOODFILL 0x1000
#define RC_STRETCHDIB 0x2000
#define RC_OP_DX_OUTPUT 0x4000
#define RC_DEVBITS 0x8000
#endif /* NOGDICAPMASKS */
/****** Coordinate transformation support ***********************************/
int WINAPI SetMapMode(HDC, int);
int WINAPI GetMapMode(HDC);
/* Map modes */
#define MM_TEXT 1
#define MM_LOMETRIC 2
#define MM_HIMETRIC 3
#define MM_LOENGLISH 4
#define MM_HIENGLISH 5
#define MM_TWIPS 6
#define MM_ISOTROPIC 7
#define MM_ANISOTROPIC 8
DWORD WINAPI SetWindowOrg(HDC, int, int);
DWORD WINAPI GetWindowOrg(HDC);
DWORD WINAPI SetWindowExt(HDC, int, int);
DWORD WINAPI GetWindowExt(HDC);
DWORD WINAPI OffsetWindowOrg(HDC, int, int);
DWORD WINAPI ScaleWindowExt(HDC, int, int, int, int);
DWORD WINAPI SetViewportOrg(HDC, int, int);
DWORD WINAPI GetViewportOrg(HDC);
DWORD WINAPI SetViewportExt(HDC, int, int);
DWORD WINAPI GetViewportExt(HDC);
DWORD WINAPI OffsetViewportOrg(HDC, int, int);
DWORD WINAPI ScaleViewportExt(HDC, int, int, int, int);
#if (WINVER >= 0x030a)
BOOL WINAPI SetWindowOrgEx(HDC, int, int, POINT FAR*);
BOOL WINAPI GetWindowOrgEx(HDC, POINT FAR*);
BOOL WINAPI SetWindowExtEx(HDC, int, int, SIZE FAR*);
BOOL WINAPI GetWindowExtEx(HDC, SIZE FAR*);
BOOL WINAPI OffsetWindowOrgEx(HDC, int, int, POINT FAR*);
BOOL WINAPI ScaleWindowExtEx(HDC, int, int, int, int, SIZE FAR*);
BOOL WINAPI SetViewportExtEx(HDC, int, int, SIZE FAR*);
BOOL WINAPI GetViewportExtEx(HDC, SIZE FAR*);
BOOL WINAPI SetViewportOrgEx(HDC, int, int, POINT FAR*);
BOOL WINAPI GetViewportOrgEx(HDC, POINT FAR*);
BOOL WINAPI OffsetViewportOrgEx(HDC, int, int, POINT FAR*);
BOOL WINAPI ScaleViewportExtEx(HDC, int, int, int, int, SIZE FAR*);
#endif /* WINVER >= 0x030a */
BOOL WINAPI DPtoLP(HDC, POINT FAR*, int);
BOOL WINAPI LPtoDP(HDC, POINT FAR*, int);
/* Coordinate Modes */
#define ABSOLUTE 1
#define RELATIVE 2
/****** Color support *******************************************************/
typedef DWORD COLORREF;
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
#define GetRValue(rgb) ((BYTE)(rgb))
#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
#define GetBValue(rgb) ((BYTE)((rgb)>>16))
COLORREF WINAPI GetNearestColor(HDC, COLORREF);
#ifndef NOCOLOR
COLORREF WINAPI GetSysColor(int);
void WINAPI SetSysColors(int, const int FAR*, const COLORREF FAR*);
#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
#if (WINVER >= 0x030a)
#define COLOR_INACTIVECAPTIONTEXT 19
#define COLOR_BTNHIGHLIGHT 20
#endif /* WINVER >= 0x030a */
#endif /* NOCOLOR */
#define WM_SYSCOLORCHANGE 0x0015
/****** GDI Object Support **************************************************/
#ifndef NOGDIOBJ
HGDIOBJ WINAPI GetStockObject(int);
BOOL WINAPI IsGDIObject(HGDIOBJ);
BOOL WINAPI DeleteObject(HGDIOBJ);
HGDIOBJ WINAPI SelectObject(HDC, HGDIOBJ);
int WINAPI GetObject(HGDIOBJ, int, void FAR*);
BOOL WINAPI UnrealizeObject(HGDIOBJ);
#ifdef STRICT
typedef (CALLBACK* GOBJENUMPROC)(void FAR*, LPARAM);
#else
typedef FARPROC GOBJENUMPROC;
#endif
#ifdef STRICT
int WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPARAM);
#else
int WINAPI EnumObjects(HDC, int, GOBJENUMPROC, LPSTR);
#endif
/* Object types for EnumObjects() */
#define OBJ_PEN 1
#define OBJ_BRUSH 2
/****** Pen support *********************************************************/
/* Logical Pen */
typedef struct tagLOGPEN
{
UINT lopnStyle;
POINT lopnWidth;
COLORREF lopnColor;
} LOGPEN;
typedef LOGPEN* PLOGPEN;
typedef LOGPEN NEAR* NPLOGPEN;
typedef LOGPEN FAR* LPLOGPEN;
/* 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
HPEN WINAPI CreatePen(int, int, COLORREF);
HPEN WINAPI CreatePenIndirect(LOGPEN FAR*);
/* Stock pens for use with GetStockObject(); */
#define WHITE_PEN 6
#define BLACK_PEN 7
#define NULL_PEN 8
/****** Brush support *******************************************************/
/* 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
/* 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
/* Logical Brush (or Pattern) */
typedef struct tagLOGBRUSH
{
UINT lbStyle;
COLORREF lbColor;
int lbHatch;
} LOGBRUSH;
typedef LOGBRUSH* PLOGBRUSH;
typedef LOGBRUSH NEAR* NPLOGBRUSH;
typedef LOGBRUSH FAR* LPLOGBRUSH;
typedef LOGBRUSH PATTERN;
typedef PATTERN* PPATTERN;
typedef PATTERN NEAR* NPPATTERN;
typedef PATTERN FAR* LPPATTERN;
HBRUSH WINAPI CreateSolidBrush(COLORREF);
HBRUSH WINAPI CreateHatchBrush(int, COLORREF);
HBRUSH WINAPI CreatePatternBrush(HBITMAP);
HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL, UINT);
HBRUSH WINAPI CreateBrushIndirect(LOGBRUSH FAR*);
/* Stock brushes for use with GetStockObject() */
#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
DWORD WINAPI SetBrushOrg(HDC, int, int);
DWORD WINAPI GetBrushOrg(HDC);
#if (WINVER >= 0x030a)
BOOL WINAPI GetBrushOrgEx(HDC, POINT FAR*);
#endif /* WINVER >= 0x030a */
#endif /* NOGDIOBJ */
/****** Region support ******************************************************/
HRGN WINAPI CreateRectRgn(int, int, int, int);
HRGN WINAPI CreateRectRgnIndirect(const RECT FAR*);
HRGN WINAPI CreateEllipticRgnIndirect(const RECT FAR*);
HRGN WINAPI CreateEllipticRgn(int, int, int, int);
HRGN WINAPI CreatePolygonRgn(const POINT FAR*, int, int);
HRGN WINAPI CreatePolyPolygonRgn(const POINT FAR*, const int FAR*, int, int);
HRGN WINAPI CreateRoundRectRgn(int, int, int, int, int, int);
/* Region type flags */
#define ERROR 0
#define NULLREGION 1
#define SIMPLEREGION 2
#define COMPLEXREGION 3
void WINAPI SetRectRgn(HRGN, int, int, int, int);
int WINAPI CombineRgn(HRGN, HRGN, HRGN, int);
/* CombineRgn() command values */
#define RGN_AND 1
#define RGN_OR 2
#define RGN_XOR 3
#define RGN_DIFF 4
#define RGN_COPY 5
BOOL WINAPI EqualRgn(HRGN, HRGN);
int WINAPI OffsetRgn(HRGN, int, int);
int WINAPI GetRgnBox(HRGN, RECT FAR*);
BOOL WINAPI RectInRegion(HRGN, const RECT FAR*);
BOOL WINAPI PtInRegion(HRGN, int, int);
/****** Color palette Support ************************************************/
#define PALETTERGB(r,g,b) (0x02000000L | RGB(r,g,b))
#define PALETTEINDEX(i) ((COLORREF)(0x01000000L | (DWORD)(WORD)(i)))
typedef struct tagPALETTEENTRY
{
BYTE peRed;
BYTE peGreen;
BYTE peBlue;
BYTE peFlags;
} PALETTEENTRY;
typedef PALETTEENTRY FAR* LPPALETTEENTRY;
/* 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 */
/* Logical Palette */
typedef struct tagLOGPALETTE
{
WORD palVersion;
WORD palNumEntries;
PALETTEENTRY palPalEntry[1];
} LOGPALETTE;
typedef LOGPALETTE* PLOGPALETTE;
typedef LOGPALETTE NEAR* NPLOGPALETTE;
typedef LOGPALETTE FAR* LPLOGPALETTE;
HPALETTE WINAPI CreatePalette(const LOGPALETTE FAR*);
HPALETTE WINAPI SelectPalette(HDC, HPALETTE, BOOL);
UINT WINAPI RealizePalette(HDC);
int WINAPI UpdateColors(HDC);
void WINAPI AnimatePalette(HPALETTE, UINT, UINT, const PALETTEENTRY FAR*);
UINT WINAPI SetPaletteEntries(HPALETTE, UINT, UINT, const PALETTEENTRY FAR*);
UINT WINAPI GetPaletteEntries(HPALETTE, UINT, UINT, PALETTEENTRY FAR*);
UINT WINAPI GetNearestPaletteIndex(HPALETTE, COLORREF);
BOOL WINAPI ResizePalette(HPALETTE, UINT);
UINT WINAPI GetSystemPaletteEntries(HDC, UINT, UINT, PALETTEENTRY FAR*);
UINT WINAPI GetSystemPaletteUse(HDC);
UINT WINAPI SetSystemPaletteUse(HDC, UINT);
/* Get/SetSystemPaletteUse() values */
#define SYSPAL_STATIC 1
#define SYSPAL_NOSTATIC 2
/* Palette window messages */
#define WM_QUERYNEWPALETTE 0x030F
#define WM_PALETTEISCHANGING 0x0310
#define WM_PALETTECHANGED 0x0311
/****** Clipping support *****************************************************/
int WINAPI SelectClipRgn(HDC, HRGN);
int WINAPI GetClipBox(HDC, RECT FAR*);
int WINAPI IntersectClipRect(HDC, int, int, int, int);
int WINAPI OffsetClipRgn(HDC, int, int);
int WINAPI ExcludeClipRect(HDC, int, int, int, int);
BOOL WINAPI PtVisible(HDC, int, int);
BOOL WINAPI RectVisible(HDC, const RECT FAR*);
/****** General drawing support ********************************************/
DWORD WINAPI MoveTo(HDC, int, int);
DWORD WINAPI GetCurrentPosition(HDC);
#if (WINVER >= 0x030a)
BOOL WINAPI MoveToEx(HDC, int, int, POINT FAR*);
BOOL WINAPI GetCurrentPositionEx(HDC, POINT FAR*);
#endif /* WINVER >= 0x030a */
BOOL WINAPI LineTo(HDC, int, int);
BOOL WINAPI Polyline(HDC, const POINT FAR*, int);
#ifdef STRICT
typedef void (CALLBACK* LINEDDAPROC)(int, int, LPARAM);
#else
typedef FARPROC LINEDDAPROC;
#endif
void WINAPI LineDDA(int, int, int, int, LINEDDAPROC, LPARAM);
BOOL WINAPI Rectangle(HDC, int, int, int, int);
BOOL WINAPI RoundRect(HDC, int, int, int, int, int, int);
BOOL WINAPI Ellipse(HDC, int, int, int, int);
BOOL WINAPI Arc(HDC, int, int, int, int, int, int, int, int);
BOOL WINAPI Chord(HDC, int, int, int, int, int, int, int, int);
BOOL WINAPI Pie(HDC, int, int, int, int, int, int, int, int);
BOOL WINAPI Polygon(HDC, const POINT FAR*, int);
BOOL WINAPI PolyPolygon(HDC, const POINT FAR*, int FAR*, int);
/* PolyFill Modes */
#define ALTERNATE 1
#define WINDING 2
int WINAPI SetPolyFillMode(HDC, int);
int WINAPI GetPolyFillMode(HDC);
BOOL WINAPI FloodFill(HDC, int, int, COLORREF);
BOOL WINAPI ExtFloodFill(HDC, int, int, COLORREF, UINT);
/* ExtFloodFill style flags */
#define FLOODFILLBORDER 0
#define FLOODFILLSURFACE 1
BOOL WINAPI FillRgn(HDC, HRGN, HBRUSH);
BOOL WINAPI FrameRgn(HDC, HRGN, HBRUSH, int, int);
BOOL WINAPI InvertRgn(HDC, HRGN);
BOOL WINAPI PaintRgn(HDC, HRGN);
/* Rectangle output routines */
int WINAPI FillRect(HDC, const RECT FAR*, HBRUSH);
int WINAPI FrameRect(HDC, const RECT FAR*, HBRUSH);
void WINAPI InvertRect(HDC, const RECT FAR*);
void WINAPI DrawFocusRect(HDC, const RECT FAR*);
/****** Text support ********************************************************/
BOOL WINAPI TextOut(HDC, int, int, LPCSTR, int);
LONG WINAPI TabbedTextOut(HDC, int, int, LPCSTR, int, int, int FAR*, int);
BOOL WINAPI ExtTextOut(HDC, int, int, UINT, const RECT FAR*, LPCSTR, UINT, int FAR*);
#define ETO_GRAYED 0x0001
#define ETO_OPAQUE 0x0002
#define ETO_CLIPPED 0x0004
DWORD WINAPI GetTextExtent(HDC, LPCSTR, int);
DWORD WINAPI GetTabbedTextExtent(HDC, LPCSTR, int, int, int FAR*);
#if (WINVER >= 0x030a)
BOOL WINAPI GetTextExtentPoint(HDC, LPCSTR, int, SIZE FAR*);
#endif /* WINVER >= 0x030a */
/* DrawText() Format Flags */
#ifndef NODRAWTEXT
#define DT_TOP 0x0000
#define DT_LEFT 0x0000
#define DT_CENTER 0x0001
#define DT_RIGHT 0x0002
#define DT_VCENTER 0x0004
#define DT_BOTTOM 0x0008
#define DT_WORDBREAK 0x0010
#define DT_SINGLELINE 0x0020
#define DT_EXPANDTABS 0x0040
#define DT_TABSTOP 0x0080
#define DT_NOCLIP 0x0100
#define DT_EXTERNALLEADING 0x0200
#define DT_CALCRECT 0x0400
#define DT_NOPREFIX 0x0800
#define DT_INTERNAL 0x1000
int WINAPI DrawText(HDC, LPCSTR, int, RECT FAR*, UINT);
#endif /* NODRAWTEXT */
#ifdef STRICT
typedef BOOL (CALLBACK* GRAYSTRINGPROC)(HDC, LPARAM, int);
#else
typedef FARPROC GRAYSTRINGPROC;
#endif
BOOL WINAPI GrayString(HDC, HBRUSH, GRAYSTRINGPROC, LPARAM, int, int, int, int, int);
BOOL WINAPI GetCharWidth(HDC, UINT, UINT, int FAR*);
COLORREF WINAPI SetTextColor(HDC, COLORREF);
COLORREF WINAPI GetTextColor(HDC);
COLORREF WINAPI SetBkColor(HDC, COLORREF);
COLORREF WINAPI GetBkColor(HDC);
int WINAPI SetBkMode(HDC, int);
int WINAPI GetBkMode(HDC);
/* Background Modes */
#define TRANSPARENT 1
#define OPAQUE 2
UINT WINAPI SetTextAlign(HDC, UINT);
UINT WINAPI GetTextAlign(HDC);
/* Text Alignment Options */
#define TA_NOUPDATECP 0x0000
#define TA_UPDATECP 0x0001
#define TA_LEFT 0x0000
#define TA_RIGHT 0x0002
#define TA_CENTER 0x0006
#define TA_TOP 0x0000
#define TA_BOTTOM 0x0008
#define TA_BASELINE 0x0018
int WINAPI SetTextCharacterExtra(HDC, int);
int WINAPI GetTextCharacterExtra(HDC);
int WINAPI SetTextJustification(HDC, int, int);
/****** Font support ********************************************************/
#ifndef NOGDIOBJ
/* Logical Font */
#define LF_FACESIZE 32
typedef struct tagLOGFONT
{
int lfHeight;
int lfWidth;
int lfEscapement;
int lfOrientation;
int lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
char lfFaceName[LF_FACESIZE];
} LOGFONT;
typedef LOGFONT* PLOGFONT;
typedef LOGFONT NEAR* NPLOGFONT;
typedef LOGFONT FAR* LPLOGFONT;
/* weight values */
#define FW_DONTCARE 0
#define FW_THIN 100
#define FW_EXTRALIGHT 200
#define FW_LIGHT 300
#define FW_NORMAL 400
#define FW_MEDIUM 500
#define FW_SEMIBOLD 600
#define FW_BOLD 700
#define FW_EXTRABOLD 800
#define FW_HEAVY 900
#define FW_ULTRALIGHT FW_EXTRALIGHT
#define FW_REGULAR FW_NORMAL
#define FW_DEMIBOLD FW_SEMIBOLD
#define FW_ULTRABOLD FW_EXTRABOLD
#define FW_BLACK FW_HEAVY
/* CharSet values */
#define ANSI_CHARSET 0
#define DEFAULT_CHARSET 1
#define SYMBOL_CHARSET 2
#define SHIFTJIS_CHARSET 128
#define HANGEUL_CHARSET 129
#define CHINESEBIG5_CHARSET 136
#define OEM_CHARSET 255
/* OutPrecision values */
#define OUT_DEFAULT_PRECIS 0
#define OUT_STRING_PRECIS 1
#define OUT_CHARACTER_PRECIS 2
#define OUT_STROKE_PRECIS 3
#if (WINVER >= 0x030a)
#define OUT_TT_PRECIS 4
#define OUT_DEVICE_PRECIS 5
#define OUT_RASTER_PRECIS 6
#define OUT_TT_ONLY_PRECIS 7
#endif /* WINVER >= 0x030a */
/* ClipPrecision values */
#define CLIP_DEFAULT_PRECIS 0x00
#define CLIP_CHARACTER_PRECIS 0x01
#define CLIP_STROKE_PRECIS 0x02
#define CLIP_MASK 0x0F
#if (WINVER >= 0x030a)
#define CLIP_LH_ANGLES 0x10
#define CLIP_TT_ALWAYS 0x20
#define CLIP_EMBEDDED 0x80
#endif /* WINVER >= 0x030a */
/* Quality values */
#define DEFAULT_QUALITY 0
#define DRAFT_QUALITY 1
#define PROOF_QUALITY 2
/* PitchAndFamily pitch values (low 4 bits) */
#define DEFAULT_PITCH 0x00
#define FIXED_PITCH 0x01
#define VARIABLE_PITCH 0x02
/* PitchAndFamily family values (high 4 bits) */
#define FF_DONTCARE 0x00
#define FF_ROMAN 0x10
#define FF_SWISS 0x20
#define FF_MODERN 0x30
#define FF_SCRIPT 0x40
#define FF_DECORATIVE 0x50
HFONT WINAPI CreateFont(int, int, int, int, int, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, BYTE, LPCSTR);
HFONT WINAPI CreateFontIndirect(const LOGFONT FAR*);
/* Stock fonts for use with GetStockObject() */
#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
DWORD WINAPI SetMapperFlags(HDC, DWORD);
#define ASPECT_FILTERING 0x00000001L
int WINAPI AddFontResource(LPCSTR);
BOOL WINAPI RemoveFontResource(LPCSTR);
#define WM_FONTCHANGE 0x001D
int WINAPI GetTextFace(HDC, int, LPSTR);
DWORD WINAPI GetAspectRatioFilter(HDC);
#if (WINVER >= 0x030a)
BOOL WINAPI GetAspectRatioFilterEx(HDC, SIZE FAR*);
#endif /* WINVER >= 0x030a */
#endif /* NOGDIOBJ */
#ifndef NOTEXTMETRIC
typedef struct tagTEXTMETRIC
{
int tmHeight;
int tmAscent;
int tmDescent;
int tmInternalLeading;
int tmExternalLeading;
int tmAveCharWidth;
int tmMaxCharWidth;
int tmWeight;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
BYTE tmFirstChar;
BYTE tmLastChar;
BYTE tmDefaultChar;
BYTE tmBreakChar;
BYTE tmPitchAndFamily;
BYTE tmCharSet;
int tmOverhang;
int tmDigitizedAspectX;
int tmDigitizedAspectY;
} TEXTMETRIC;
typedef TEXTMETRIC* PTEXTMETRIC;
typedef TEXTMETRIC NEAR* NPTEXTMETRIC;
typedef TEXTMETRIC FAR* LPTEXTMETRIC;
/* tmPitchAndFamily values */
#define TMPF_FIXED_PITCH 0x01
#define TMPF_VECTOR 0x02
#define TMPF_DEVICE 0x08
#if (WINVER >= 0x030a)
#define TMPF_TRUETYPE 0x04
#endif /* WINVER >= 0x030a */
BOOL WINAPI GetTextMetrics(HDC, TEXTMETRIC FAR*);
#if (WINVER >= 0x030a)
#ifndef NOSCALABLEFONT
typedef struct tagPANOSE
{
BYTE bFamilyType;
BYTE bSerifStyle;
BYTE bWeight;
BYTE bProportion;
BYTE bContrast;
BYTE bStrokeVariation;
BYTE bArmStyle;
BYTE bLetterform;
BYTE bMidline;
BYTE bXHeight;
} PANOSE, FAR* LPPANOSE;
typedef struct tagOUTLINETEXTMETRIC
{
UINT otmSize;
TEXTMETRIC otmTextMetrics;
BYTE otmFiller;
PANOSE otmPanoseNumber;
UINT otmfsSelection;
UINT otmfsType;
int otmsCharSlopeRise;
int otmsCharSlopeRun;
int otmItalicAngle;
UINT otmEMSquare;
int otmAscent;
int otmDescent;
UINT otmLineGap;
UINT otmsCapEmHeight;
UINT otmsXHeight;
RECT otmrcFontBox;
int otmMacAscent;
int otmMacDescent;
UINT otmMacLineGap;
UINT otmusMinimumPPEM;
POINT otmptSubscriptSize;
POINT otmptSubscriptOffset;
POINT otmptSuperscriptSize;
POINT otmptSuperscriptOffset;
UINT otmsStrikeoutSize;
int otmsStrikeoutPosition;
int otmsUnderscorePosition;
int otmsUnderscoreSize;
PSTR otmpFamilyName;
PSTR otmpFaceName;
PSTR otmpStyleName;
PSTR otmpFullName;
} OUTLINETEXTMETRIC, FAR* LPOUTLINETEXTMETRIC;
WORD WINAPI GetOutlineTextMetrics(HDC, UINT, OUTLINETEXTMETRIC FAR*);
#endif /* WINVER >= 0x030a */
#endif /* NOSCALABLEFONT */
#ifndef NOGDIOBJ
#if (WINVER >= 0x030a)
/* Structure passed to FONTENUMPROC */
/* NOTE: NEWTEXTMETRIC is the same as TEXTMETRIC plus 4 new fields */
typedef struct tagNEWTEXTMETRIC
{
int tmHeight;
int tmAscent;
int tmDescent;
int tmInternalLeading;
int tmExternalLeading;
int tmAveCharWidth;
int tmMaxCharWidth;
int tmWeight;
BYTE tmItalic;
BYTE tmUnderlined;
BYTE tmStruckOut;
BYTE tmFirstChar;
BYTE tmLastChar;
BYTE tmDefaultChar;
BYTE tmBreakChar;
BYTE tmPitchAndFamily;
BYTE tmCharSet;
int tmOverhang;
int tmDigitizedAspectX;
int tmDigitizedAspectY;
DWORD ntmFlags;
UINT ntmSizeEM;
UINT ntmCellHeight;
UINT ntmAvgWidth;
} NEWTEXTMETRIC;
typedef NEWTEXTMETRIC* PNEWTEXTMETRIC;
typedef NEWTEXTMETRIC NEAR* NPNEWTEXTMETRIC;
typedef NEWTEXTMETRIC FAR* LPNEWTEXTMETRIC;
/* ntmFlags field flags */
#define NTM_REGULAR 0x00000040L
#define NTM_BOLD 0x00000020L
#define NTM_ITALIC 0x00000001L
#define LF_FULLFACESIZE 64
/* Structure passed to FONTENUMPROC */
typedef struct tagENUMLOGFONT
{
LOGFONT elfLogFont;
char elfFullName[LF_FULLFACESIZE];
char elfStyle[LF_FACESIZE];
} ENUMLOGFONT, FAR* LPENUMLOGFONT;
#endif /* WINVER >= 0x030a */
#endif /* NOGDIOBJ */
#ifdef STRICT
#ifndef NOGDIOBJ
typedef int (CALLBACK* OLDFONTENUMPROC)(const LOGFONT FAR*, const TEXTMETRIC FAR*, int, LPARAM);
#if (WINVER >= 0x030a)
typedef int (CALLBACK* FONTENUMPROC)(const ENUMLOGFONT FAR*, const NEWTEXTMETRIC FAR*, int, LPARAM);
int WINAPI EnumFontFamilies(HDC, LPCSTR, FONTENUMPROC, LPARAM);
#else /* WINVER >= 0x030a */
typedef OLDFONTENUMPROC FONTENUMPROC;
#endif /* WINVER >= 0x030a */
int WINAPI EnumFonts(HDC, LPCSTR, OLDFONTENUMPROC, LPARAM);
#endif /* NOGDIOBJ */
#else /* STRICT */
typedef FARPROC OLDFONTENUMPROC;
typedef FARPROC FONTENUMPROC;
int WINAPI EnumFonts(HDC, LPCSTR, OLDFONTENUMPROC, LPSTR);
#if (WINVER >= 0x030a)
int WINAPI EnumFontFamilies(HDC, LPCSTR, FONTENUMPROC, LPSTR);
#endif /* WINVER >= 0x030a */
#endif /* !STRICT */
/* EnumFonts font type values */
#define RASTER_FONTTYPE 0x0001
#define DEVICE_FONTTYPE 0X0002
#if (WINVER >= 0x030a)
#define TRUETYPE_FONTTYPE 0x0004
#endif /* WINVER >= 0x030a */
#endif /* NOTEXTMETRIC */
#ifndef NOSCALABLEFONT
#if (WINVER >= 0x030a)
DWORD WINAPI GetFontData(HDC, DWORD, DWORD, void FAR*, DWORD);
BOOL WINAPI CreateScalableFontResource(UINT, LPCSTR, LPCSTR, LPCSTR);
typedef struct tagGLYPHMETRICS
{
UINT gmBlackBoxX;
UINT gmBlackBoxY;
POINT gmptGlyphOrigin;
int gmCellIncX;
int gmCellIncY;
} GLYPHMETRICS, FAR* LPGLYPHMETRICS;
typedef struct tagFIXED
{
UINT fract;
int value;
} FIXED, FAR* LPFIXED;
typedef struct tagMAT2
{
FIXED eM11;
FIXED eM12;
FIXED eM21;
FIXED eM22;
} MAT2, FAR* LPMAT2;
DWORD WINAPI GetGlyphOutline(HDC, UINT, UINT, GLYPHMETRICS FAR*, DWORD, void FAR*, const MAT2 FAR*);
/* GetGlyphOutline constants */
#define GGO_METRICS 0
#define GGO_BITMAP 1
#define GGO_NATIVE 2
#define TT_POLYGON_TYPE 24
#define TT_PRIM_LINE 1
#define TT_PRIM_QSPLINE 2
typedef struct tagPOINTFX
{
FIXED x;
FIXED y;
} POINTFX, FAR* LPPOINTFX;
typedef struct tagTTPOLYCURVE
{
UINT wType;
UINT cpfx;
POINTFX apfx[1];
} TTPOLYCURVE, FAR* LPTTPOLYCURVE;
typedef struct tagTTPOLYGONHEADER
{
DWORD cb;
DWORD dwType;
POINTFX pfxStart;
} TTPOLYGONHEADER, FAR* LPTTPOLYGONHEADER;
typedef struct tagABC
{
int abcA;
UINT abcB;
int abcC;
} ABC;
typedef ABC FAR* LPABC;
BOOL WINAPI GetCharABCWidths(HDC, UINT, UINT, ABC FAR*);
typedef struct tagKERNINGPAIR
{
WORD wFirst;
WORD wSecond;
int iKernAmount;
} KERNINGPAIR, FAR* LPKERNINGPAIR;
int WINAPI GetKerningPairs(HDC, int, KERNINGPAIR FAR*);
typedef struct tagRASTERIZER_STATUS
{
int nSize;
int wFlags;
int nLanguageID;
} RASTERIZER_STATUS;
typedef RASTERIZER_STATUS FAR* LPRASTERIZER_STATUS;
/* bits defined in wFlags of RASTERIZER_STATUS */
#define TT_AVAILABLE 0x0001
#define TT_ENABLED 0x0002
BOOL WINAPI GetRasterizerCaps(RASTERIZER_STATUS FAR*, int);
#endif /* WINVER >= 0x030a */
#endif /* NOSCALABLEFONT */
/****** Bitmap support ******************************************************/
#ifndef NOBITMAP
typedef struct tagBITMAP
{
int bmType;
int bmWidth;
int bmHeight;
int bmWidthBytes;
BYTE bmPlanes;
BYTE bmBitsPixel;
void FAR* bmBits;
} BITMAP;
typedef BITMAP* PBITMAP;
typedef BITMAP NEAR* NPBITMAP;
typedef BITMAP FAR* LPBITMAP;
/* Bitmap Header structures */
typedef struct tagRGBTRIPLE
{
BYTE rgbtBlue;
BYTE rgbtGreen;
BYTE rgbtRed;
} RGBTRIPLE;
typedef RGBTRIPLE FAR* LPRGBTRIPLE;
typedef struct tagRGBQUAD
{
BYTE rgbBlue;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
} RGBQUAD;
typedef RGBQUAD FAR* LPRGBQUAD;
/* structures for defining DIBs */
typedef struct tagBITMAPCOREHEADER
{
DWORD bcSize;
short bcWidth;
short bcHeight;
WORD bcPlanes;
WORD bcBitCount;
} BITMAPCOREHEADER;
typedef BITMAPCOREHEADER* PBITMAPCOREHEADER;
typedef BITMAPCOREHEADER FAR* LPBITMAPCOREHEADER;
typedef struct tagBITMAPINFOHEADER
{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
typedef BITMAPINFOHEADER* PBITMAPINFOHEADER;
typedef BITMAPINFOHEADER FAR* LPBITMAPINFOHEADER;
/* constants for the biCompression field */
#define BI_RGB 0L
#define BI_RLE8 1L
#define BI_RLE4 2L
typedef struct tagBITMAPINFO
{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;
typedef BITMAPINFO* PBITMAPINFO;
typedef BITMAPINFO FAR* LPBITMAPINFO;
typedef struct tagBITMAPCOREINFO
{
BITMAPCOREHEADER bmciHeader;
RGBTRIPLE bmciColors[1];
} BITMAPCOREINFO;
typedef BITMAPCOREINFO* PBITMAPCOREINFO;
typedef BITMAPCOREINFO FAR* LPBITMAPCOREINFO;
typedef struct tagBITMAPFILEHEADER
{
UINT bfType;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
typedef BITMAPFILEHEADER* PBITMAPFILEHEADER;
typedef BITMAPFILEHEADER FAR* LPBITMAPFILEHEADER;
HBITMAP WINAPI CreateBitmap(int, int, UINT, UINT, const void FAR*);
HBITMAP WINAPI CreateBitmapIndirect(BITMAP FAR* );
HBITMAP WINAPI CreateCompatibleBitmap(HDC, int, int);
HBITMAP WINAPI CreateDiscardableBitmap(HDC, int, int);
HBITMAP WINAPI CreateDIBitmap(HDC, BITMAPINFOHEADER FAR*, DWORD, const void FAR*, BITMAPINFO FAR*, UINT);
HBITMAP WINAPI LoadBitmap(HINSTANCE, LPCSTR);
/* DIB color table identifiers */
#define DIB_RGB_COLORS 0
#define DIB_PAL_COLORS 1
/* constants for CreateDIBitmap */
#define CBM_INIT 0x00000004L
#endif /* NOBITMAP */
#ifndef NORASTEROPS
/* Binary raster ops */
#define R2_BLACK 1
#define R2_NOTMERGEPEN 2
#define R2_MASKNOTPEN 3
#define R2_NOTCOPYPEN 4
#define R2_MASKPENNOT 5
#define R2_NOT 6
#define R2_XORPEN 7
#define R2_NOTMASKPEN 8
#define R2_MASKPEN 9
#define R2_NOTXORPEN 10
#define R2_NOP 11
#define R2_MERGENOTPEN 12
#define R2_COPYPEN 13
#define R2_MERGEPENNOT 14
#define R2_MERGEPEN 15
#define R2_WHITE 16
/* Ternary raster operations */
#define SRCCOPY 0x00CC0020L
#define SRCPAINT 0x00EE0086L
#define SRCAND 0x008800C6L
#define SRCINVERT 0x00660046L
#define SRCERASE 0x00440328L
#define NOTSRCCOPY 0x00330008L
#define NOTSRCERASE 0x001100A6L
#define MERGECOPY 0x00C000CAL
#define MERGEPAINT 0x00BB0226L
#define PATCOPY 0x00F00021L
#define PATPAINT 0x00FB0A09L
#define PATINVERT 0x005A0049L
#define DSTINVERT 0x00550009L
#define BLACKNESS 0x00000042L
#define WHITENESS 0x00FF0062L
#endif /* NORASTEROPS */
#ifndef NOBITMAP
BOOL WINAPI BitBlt(HDC, int, int, int, int, HDC, int, int, DWORD);
BOOL WINAPI PatBlt(HDC, int, int, int, int, DWORD);
BOOL WINAPI StretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD);
int WINAPI StretchDIBits(HDC, int, int, int, int, int,
int, int, int, const void FAR*, LPBITMAPINFO, UINT, DWORD);
COLORREF WINAPI SetPixel(HDC, int, int, COLORREF);
COLORREF WINAPI GetPixel(HDC, int, int);
/* StretchBlt() Modes */
#define BLACKONWHITE 1
#define WHITEONBLACK 2
#define COLORONCOLOR 3
/* new StretchBlt() Modes (simpler names) */
#define STRETCH_ANDSCANS 1
#define STRETCH_ORSCANS 2
#define STRETCH_DELETESCANS 3
int WINAPI SetStretchBltMode(HDC, int);
int WINAPI GetStretchBltMode(HDC);
DWORD WINAPI SetBitmapDimension(HBITMAP, int, int);
DWORD WINAPI GetBitmapDimension(HBITMAP);
#if (WINVER >= 0x030a)
BOOL WINAPI SetBitmapDimensionEx(HBITMAP, int, int, SIZE FAR*);
BOOL WINAPI GetBitmapDimensionEx(HBITMAP, SIZE FAR*);
#endif /* WINVER >= 0x030a */
int WINAPI SetROP2(HDC, int);
int WINAPI GetROP2(HDC);
LONG WINAPI SetBitmapBits(HBITMAP, DWORD, const void FAR*);
LONG WINAPI GetBitmapBits(HBITMAP, LONG, void FAR*);
int WINAPI SetDIBits(HDC, HBITMAP, UINT, UINT, const void FAR*, BITMAPINFO FAR*, UINT);
int WINAPI GetDIBits(HDC, HBITMAP, UINT, UINT, void FAR*, BITMAPINFO FAR*, UINT);
int WINAPI SetDIBitsToDevice(HDC, int, int, int, int, int, int, UINT, UINT,
void FAR*, BITMAPINFO FAR*, UINT);
#endif /* NOBITMAP */
/****** Metafile support ****************************************************/
#ifndef NOMETAFILE
DECLARE_HANDLE(HMETAFILE);
HDC WINAPI CreateMetaFile(LPCSTR);
HMETAFILE WINAPI CloseMetaFile(HDC);
HMETAFILE WINAPI GetMetaFile(LPCSTR);
BOOL WINAPI DeleteMetaFile(HMETAFILE);
HMETAFILE WINAPI CopyMetaFile(HMETAFILE, LPCSTR);
BOOL WINAPI PlayMetaFile(HDC, HMETAFILE);
HGLOBAL WINAPI GetMetaFileBits(HMETAFILE);
HMETAFILE WINAPI SetMetaFileBits(HGLOBAL);
#if (WINVER >= 0x030a)
HMETAFILE WINAPI SetMetaFileBitsBetter(HGLOBAL);
#endif /* WINVER >= 0x030a */
/* Clipboard Metafile Picture Structure */
typedef struct tagMETAFILEPICT
{
int mm;
int xExt;
int yExt;
HMETAFILE hMF;
} METAFILEPICT;
typedef METAFILEPICT FAR* LPMETAFILEPICT;
typedef struct tagMETAHEADER
{
UINT mtType;
UINT mtHeaderSize;
UINT mtVersion;
DWORD mtSize;
UINT mtNoObjects;
DWORD mtMaxRecord;
UINT mtNoParameters;
} METAHEADER;
typedef struct tagHANDLETABLE
{
HGDIOBJ objectHandle[1];
} HANDLETABLE;
typedef HANDLETABLE* PHANDLETABLE;
typedef HANDLETABLE FAR* LPHANDLETABLE;
typedef struct tagMETARECORD
{
DWORD rdSize;
UINT rdFunction;
UINT rdParm[1];
} METARECORD;
typedef METARECORD* PMETARECORD;
typedef METARECORD FAR* LPMETARECORD;
/* Metafile Functions */
#define META_SETBKCOLOR 0x0201
#define META_SETBKMODE 0x0102
#define META_SETMAPMODE 0x0103
#define META_SETROP2 0x0104
#define META_SETRELABS 0x0105
#define META_SETPOLYFILLMODE 0x0106
#define META_SETSTRETCHBLTMODE 0x0107
#define META_SETTEXTCHAREXTRA 0x0108
#define META_SETTEXTCOLOR 0x0209
#define META_SETTEXTJUSTIFICATION 0x020A
#define META_SETWINDOWORG 0x020B
#define META_SETWINDOWEXT 0x020C
#define META_SETVIEWPORTORG 0x020D
#define META_SETVIEWPORTEXT 0x020E
#define META_OFFSETWINDOWORG 0x020F
#define META_SCALEWINDOWEXT 0x0410
#define META_OFFSETVIEWPORTORG 0x0211
#define META_SCALEVIEWPORTEXT 0x0412
#define META_LINETO 0x0213
#define META_MOVETO 0x0214
#define META_EXCLUDECLIPRECT 0x0415
#define META_INTERSECTCLIPRECT 0x0416
#define META_ARC 0x0817
#define META_ELLIPSE 0x0418
#define META_FLOODFILL 0x0419
#define META_PIE 0x081A
#define META_RECTANGLE 0x041B
#define META_ROUNDRECT 0x061C
#define META_PATBLT 0x061D
#define META_SAVEDC 0x001E
#define META_SETPIXEL 0x041F
#define META_OFFSETCLIPRGN 0x0220
#define META_TEXTOUT 0x0521
#define META_BITBLT 0x0922
#define META_STRETCHBLT 0x0B23
#define META_POLYGON 0x0324
#define META_POLYLINE 0x0325
#define META_ESCAPE 0x0626
#define META_RESTOREDC 0x0127
#define META_FILLREGION 0x0228
#define META_FRAMEREGION 0x0429
#define META_INVERTREGION 0x012A
#define META_PAINTREGION 0x012B
#define META_SELECTCLIPREGION 0x012C
#define META_SELECTOBJECT 0x012D
#define META_SETTEXTALIGN 0x012E
#define META_DRAWTEXT 0x062F
#define META_CHORD 0x0830
#define META_SETMAPPERFLAGS 0x0231
#define META_EXTTEXTOUT 0x0a32
#define META_SETDIBTODEV 0x0d33
#define META_SELECTPALETTE 0x0234
#define META_REALIZEPALETTE 0x0035
#define META_ANIMATEPALETTE 0x0436
#define META_SETPALENTRIES 0x0037
#define META_POLYPOLYGON 0x0538
#define META_RESIZEPALETTE 0x0139
#define META_DIBBITBLT 0x0940
#define META_DIBSTRETCHBLT 0x0b41
#define META_DIBCREATEPATTERNBRUSH 0x0142
#define META_STRETCHDIB 0x0f43
#define META_EXTFLOODFILL 0x0548
#define META_RESETDC 0x014C
#define META_STARTDOC 0x014D
#define META_STARTPAGE 0x004F
#define META_ENDPAGE 0x0050
#define META_ABORTDOC 0x0052
#define META_ENDDOC 0x005E
#define META_DELETEOBJECT 0x01f0
#define META_CREATEPALETTE 0x00f7
#define META_CREATEBRUSH 0x00F8
#define META_CREATEPATTERNBRUSH 0x01F9
#define META_CREATEPENINDIRECT 0x02FA
#define META_CREATEFONTINDIRECT 0x02FB
#define META_CREATEBRUSHINDIRECT 0x02FC
#define META_CREATEBITMAPINDIRECT 0x02FD
#define META_CREATEBITMAP 0x06FE
#define META_CREATEREGION 0x06FF
void WINAPI PlayMetaFileRecord(HDC, HANDLETABLE FAR*, METARECORD FAR*, UINT);
#ifdef STRICT
typedef int (CALLBACK* MFENUMPROC)(HDC, HANDLETABLE FAR*, METARECORD FAR*, int, LPARAM);
#else
typedef FARPROC MFENUMPROC;
#endif
BOOL WINAPI EnumMetaFile(HDC, HMETAFILE, MFENUMPROC, LPARAM);
#endif /* NOMETAFILE */
/****** Printing support ****************************************************/
#ifdef STRICT
typedef BOOL (CALLBACK* ABORTPROC)(HDC, int);
#else
typedef FARPROC ABORTPROC;
#endif
#if (WINVER >= 0x030a)
typedef struct
{
int cbSize;
LPCSTR lpszDocName;
LPCSTR lpszOutput;
} DOCINFO;
typedef DOCINFO FAR* LPDOCINFO;
int WINAPI StartDoc(HDC, DOCINFO FAR*);
int WINAPI StartPage(HDC);
int WINAPI EndPage(HDC);
int WINAPI EndDoc(HDC);
int WINAPI AbortDoc(HDC);
int WINAPI SetAbortProc(HDC, ABORTPROC);
HANDLE WINAPI SpoolFile(LPSTR, LPSTR, LPSTR, LPSTR);
#endif /* WINVER >= 0x030a */
BOOL WINAPI QueryAbort(HDC, int);
/* Spooler Error Codes */
#define SP_NOTREPORTED 0x4000
#define SP_ERROR (-1)
#define SP_APPABORT (-2)
#define SP_USERABORT (-3)
#define SP_OUTOFDISK (-4)
#define SP_OUTOFMEMORY (-5)
#define PR_JOBSTATUS 0x0000
#endif /* NOGDI */
/* Spooler status notification message */
#define WM_SPOOLERSTATUS 0x002A
#ifndef NOGDI
/******* GDI Escape support *************************************************/
int WINAPI Escape(HDC, int, int, LPCSTR, void FAR*);
/* GDI Escapes */
#define NEWFRAME 1
#define ABORTDOC 2
#define NEXTBAND 3
#define SETCOLORTABLE 4
#define GETCOLORTABLE 5
#define FLUSHOUTPUT 6
#define DRAFTMODE 7
#define QUERYESCSUPPORT 8
#define SETABORTPROC 9
#define STARTDOC 10
#define ENDDOC 11
#define GETPHYSPAGESIZE 12
#define GETPRINTINGOFFSET 13
#define GETSCALINGFACTOR 14
#define MFCOMMENT 15
#define GETPENWIDTH 16
#define SETCOPYCOUNT 17
#define SELECTPAPERSOURCE 18
#define DEVICEDATA 19
#define PASSTHROUGH 19
#define GETTECHNOLGY 20
#define GETTECHNOLOGY 20
#define SETLINECAP 21
#define SETLINEJOIN 22
#define SETMITERLIMIT 23
#define BANDINFO 24
#define DRAWPATTERNRECT 25
#define GETVECTORPENSIZE 26
#define GETVECTORBRUSHSIZE 27
#define ENABLEDUPLEX 28
#define GETSETPAPERBINS 29
#define GETSETPRINTORIENT 30
#define ENUMPAPERBINS 31
#define SETDIBSCALING 32
#define EPSPRINTING 33
#define ENUMPAPERMETRICS 34
#define GETSETPAPERMETRICS 35
#define POSTSCRIPT_DATA 37
#define POSTSCRIPT_IGNORE 38
#define MOUSETRAILS 39
#define GETEXTENDEDTEXTMETRICS 256
#define GETEXTENTTABLE 257
#define GETPAIRKERNTABLE 258
#define GETTRACKKERNTABLE 259
#define EXTTEXTOUT 512
#define GETFACENAME 513
#define ENABLERELATIVEWIDTHS 768
#define ENABLEPAIRKERNING 769
#define SETKERNTRACK 770
#define SETALLJUSTVALUES 771
#define SETCHARSET 772
#define STRETCHBLT 2048
#define GETSETSCREENPARAMS 3072
#define BEGIN_PATH 4096
#define CLIP_TO_PATH 4097
#define END_PATH 4098
#define EXT_DEVICE_CAPS 4099
#define RESTORE_CTM 4100
#define SAVE_CTM 4101
#define SET_ARC_DIRECTION 4102
#define SET_BACKGROUND_COLOR 4103
#define SET_POLY_MODE 4104
#define SET_SCREEN_ANGLE 4105
#define SET_SPREAD 4106
#define TRANSFORM_CTM 4107
#define SET_CLIP_BOX 4108
#define SET_BOUNDS 4109
#endif /* NOGDI */
/****** USER typedefs, structures, and functions *****************************/
DECLARE_HANDLE(HWND);
#ifndef NOUSER
DECLARE_HANDLE(HMENU);
DECLARE_HANDLE(HICON);
typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */
/****** System Metrics *******************************************************/
#ifndef NOSYSMETRICS
int WINAPI GetSystemMetrics(int);
/* GetSystemMetrics() codes */
#define SM_CXSCREEN 0
#define SM_CYSCREEN 1
#define SM_CXVSCROLL 2
#define SM_CYHSCROLL 3
#define SM_CYCAPTION 4
#define SM_CXBORDER 5
#define SM_CYBORDER 6
#define SM_CXDLGFRAME 7
#define SM_CYDLGFRAME 8
#define SM_CYVTHUMB 9
#define SM_CXHTHUMB 10
#define SM_CXICON 11
#define SM_CYICON 12
#define SM_CXCURSOR 13
#define SM_CYCURSOR 14
#define SM_CYMENU 15
#define SM_CXFULLSCREEN 16
#define SM_CYFULLSCREEN 17
#define SM_CYKANJIWINDOW 18
#define SM_MOUSEPRESENT 19
#define SM_CYVSCROLL 20
#define SM_CXHSCROLL 21
#define SM_DEBUG 22
#define SM_SWAPBUTTON 23
#define SM_RESERVED1 24
#define SM_RESERVED2 25
#define SM_RESERVED3 26
#define SM_RESERVED4 27
#define SM_CXMIN 28
#define SM_CYMIN 29
#define SM_CXSIZE 30
#define SM_CYSIZE 31
#define SM_CXFRAME 32
#define SM_CYFRAME 33
#define SM_CXMINTRACK 34
#define SM_CYMINTRACK 35
#if (WINVER >= 0x030a)
#define SM_CXDOUBLECLK 36
#define SM_CYDOUBLECLK 37
#define SM_CXICONSPACING 38
#define SM_CYICONSPACING 39
#define SM_MENUDROPALIGNMENT 40
#define SM_PENWINDOWS 41
#define SM_DBCSENABLED 42
#endif /* WINVER >= 0x030a */
#define SM_CMETRICS 43
#endif /* NOSYSMETRICS */
UINT WINAPI GetDoubleClickTime(void);
void WINAPI SetDoubleClickTime(UINT);
#define WM_DEVMODECHANGE 0x001B
#define WM_TIMECHANGE 0x001E
/****** System Parameters support ********************************************/
#if (WINVER >= 0x030a)
#ifndef NOSYSTEMPARAMSINFO
BOOL WINAPI SystemParametersInfo(UINT, UINT, VOID FAR*, UINT);
#define SPI_GETBEEP 1
#define SPI_SETBEEP 2
#define SPI_GETMOUSE 3
#define SPI_SETMOUSE 4
#define SPI_GETBORDER 5
#define SPI_SETBORDER 6
#define SPI_GETKEYBOARDSPEED 10
#define SPI_SETKEYBOARDSPEED 11
#define SPI_LANGDRIVER 12
#define SPI_ICONHORIZONTALSPACING 13
#define SPI_GETSCREENSAVETIMEOUT 14
#define SPI_SETSCREENSAVETIMEOUT 15
#define SPI_GETSCREENSAVEACTIVE 16
#define SPI_SETSCREENSAVEACTIVE 17
#define SPI_GETGRIDGRANULARITY 18
#define SPI_SETGRIDGRANULARITY 19
#define SPI_SETDESKWALLPAPER 20
#define SPI_SETDESKPATTERN 21
#define SPI_GETKEYBOARDDELAY 22
#define SPI_SETKEYBOARDDELAY 23
#define SPI_ICONVERTICALSPACING 24
#define SPI_GETICONTITLEWRAP 25
#define SPI_SETICONTITLEWRAP 26
#define SPI_GETMENUDROPALIGNMENT 27
#define SPI_SETMENUDROPALIGNMENT 28
#define SPI_SETDOUBLECLKWIDTH 29
#define SPI_SETDOUBLECLKHEIGHT 30
#define SPI_GETICONTITLELOGFONT 31
#define SPI_SETDOUBLECLICKTIME 32
#define SPI_SETMOUSEBUTTONSWAP 33
#define SPI_SETICONTITLELOGFONT 34
#define SPI_GETFASTTASKSWITCH 35
#define SPI_SETFASTTASKSWITCH 36
/* SystemParametersInfo flags */
#define SPIF_UPDATEINIFILE 0x0001
#define SPIF_SENDWININICHANGE 0x0002
#endif /* NOSYSTEMPARAMSINFO */
#endif /* WINVER >= 0x030a */
/****** Rectangle support ****************************************************/
void WINAPI SetRect(RECT FAR*, int, int, int, int);
void WINAPI SetRectEmpty(RECT FAR*);
void WINAPI CopyRect(RECT FAR*, const RECT FAR*);
BOOL WINAPI IsRectEmpty(const RECT FAR*);
BOOL WINAPI EqualRect(const RECT FAR*, const RECT FAR*);
BOOL WINAPI IntersectRect(RECT FAR*, const RECT FAR*, const RECT FAR*);
BOOL WINAPI UnionRect(RECT FAR*, const RECT FAR*, const RECT FAR*);
BOOL WINAPI SubtractRect(RECT FAR*, const RECT FAR*, const RECT FAR*);
void WINAPI OffsetRect(RECT FAR*, int, int);
void WINAPI InflateRect(RECT FAR*, int, int);
BOOL WINAPI PtInRect(const RECT FAR*, POINT);
/****** Window message support ***********************************************/
UINT WINAPI RegisterWindowMessage(LPCSTR);
#define WM_NULL 0x0000
/* NOTE: All messages below 0x0400 are RESERVED by Windows */
#define WM_USER 0x0400
#ifndef NOMSG
/* Queued message structure */
typedef struct tagMSG
{
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
typedef MSG* PMSG;
typedef MSG NEAR* NPMSG;
typedef MSG FAR* LPMSG;
BOOL WINAPI GetMessage(MSG FAR*, HWND, UINT, UINT);
BOOL WINAPI PeekMessage(MSG FAR*, HWND, UINT, UINT, UINT);
/* PeekMessage() options */
#define PM_NOREMOVE 0x0000
#define PM_REMOVE 0x0001
#define PM_NOYIELD 0x0002
void WINAPI WaitMessage(void);
DWORD WINAPI GetMessagePos(void);
LONG WINAPI GetMessageTime(void);
#if (WINVER >= 0x030a)
LPARAM WINAPI GetMessageExtraInfo(void);
#endif /* WINVER >= 0x030a */
BOOL WINAPI TranslateMessage(const MSG FAR*);
LONG WINAPI DispatchMessage(const MSG FAR*);
BOOL WINAPI SetMessageQueue(int);
BOOL WINAPI GetInputState(void);
#if (WINVER >= 0x030a)
DWORD WINAPI GetQueueStatus(UINT flags);
/* GetQueueStatus flags */
#define QS_KEY 0x0001
#define QS_MOUSEMOVE 0x0002
#define QS_MOUSEBUTTON 0x0004
#define QS_MOUSE (QS_MOUSEMOVE | QS_MOUSEBUTTON)
#define QS_POSTMESSAGE 0x0008
#define QS_TIMER 0x0010
#define QS_PAINT 0x0020
#define QS_SENDMESSAGE 0x0040
#define QS_ALLINPUT 0x007f
#endif /* WINVER >= 0x030a */
#endif /* NOMSG */
BOOL WINAPI PostMessage(HWND, UINT, WPARAM, LPARAM);
LRESULT WINAPI SendMessage(HWND, UINT, WPARAM, LPARAM);
#ifndef NOMSG
BOOL WINAPI PostAppMessage(HTASK, UINT, WPARAM, LPARAM);
void WINAPI ReplyMessage(LRESULT);
BOOL WINAPI InSendMessage(void);
/* Special HWND value for use with PostMessage() and SendMessage() */
#define HWND_BROADCAST ((HWND)0xffff)
BOOL WINAPI CallMsgFilter(MSG FAR*, int);
#define WH_GETMESSAGE 3
#define WH_CALLWNDPROC 4
#define WH_MSGFILTER (-1)
#define WH_SYSMSGFILTER 6
/* CallMsgFilter() and WH_SYS/MSGFILTER context codes */
#define MSGF_DIALOGBOX 0
#define MSGF_MENU 2
#define MSGF_MOVE 3
#define MSGF_SIZE 4
#define MSGF_SCROLLBAR 5
#define MSGF_NEXTWINDOW 6
#define MSGF_MAINLOOP 8
#define MSGF_USER 4096
#endif /* NOMSG */
/* Standard window messages */
/* PenWindows specific messages */
#define WM_PENWINFIRST 0x0380
#define WM_PENWINLAST 0x038F
/* Coalescing messages */
#define WM_COALESCE_FIRST 0x0390
#define WM_COALESCE_LAST 0x039F
#if (WINVER >= 0x030a)
/****** Power management ****************************************************/
#define WM_POWER 0x0048
/* wParam for WM_POWER window message and DRV_POWER driver notification */
#define PWR_OK 1
#define PWR_FAIL (-1)
#define PWR_SUSPENDREQUEST 1
#define PWR_SUSPENDRESUME 2
#define PWR_CRITICALRESUME 3
#endif /* WINVER >= 0x030a */
/****** Application termination *********************************************/
#define WM_QUERYENDSESSION 0x0011
#define WM_ENDSESSION 0x0016
#define WM_QUIT 0x0012
void WINAPI PostQuitMessage(int);
#define WM_SYSTEMERROR 0x0017
/****** Window class management *********************************************/
typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
typedef struct tagWNDCLASS
{
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCSTR lpszMenuName;
LPCSTR lpszClassName;
} WNDCLASS;
typedef WNDCLASS* PWNDCLASS;
typedef WNDCLASS NEAR* NPWNDCLASS;
typedef WNDCLASS FAR* LPWNDCLASS;
ATOM WINAPI RegisterClass(const WNDCLASS FAR*);
BOOL WINAPI UnregisterClass(LPCSTR, HINSTANCE);
BOOL WINAPI GetClassInfo(HINSTANCE, LPCSTR, WNDCLASS FAR*);
int WINAPI GetClassName(HWND, LPSTR, int);
#ifndef NOWINSTYLES
/* Class styles */
#define CS_VREDRAW 0x0001
#define CS_HREDRAW 0x0002
#define CS_OWNDC 0x0020
#define CS_CLASSDC 0x0040
#define CS_PARENTDC 0x0080
#define CS_SAVEBITS 0x0800
#define CS_DBLCLKS 0x0008
#define CS_BYTEALIGNCLIENT 0x1000
#define CS_BYTEALIGNWINDOW 0x2000
#define CS_NOCLOSE 0x0200
#define CS_KEYCVTWINDOW 0x0004
#define CS_NOKEYCVT 0x0100
#define CS_GLOBALCLASS 0x4000
#endif /* NOWINSTYLES */
#ifndef NOWINOFFSETS
WORD WINAPI GetClassWord(HWND, int);
WORD WINAPI SetClassWord(HWND, int, WORD);
LONG WINAPI GetClassLong(HWND, int);
LONG WINAPI SetClassLong(HWND, int, LONG);
/* Class field offsets for GetClassLong() and GetClassWord() */
#define GCL_MENUNAME (-8)
#define GCW_HBRBACKGROUND (-10)
#define GCW_HCURSOR (-12)
#define GCW_HICON (-14)
#define GCW_HMODULE (-16)
#define GCW_CBWNDEXTRA (-18)
#define GCW_CBCLSEXTRA (-20)
#define GCL_WNDPROC (-24)
#define GCW_STYLE (-26)
#if (WINVER >= 0x030a)
#define GCW_ATOM (-32)
#endif /* WINVER >= 0x030a */
#endif /* NOWINOFFSETS */
/****** Window creation/destroy *********************************************/
/* Window Styles */
#ifndef NOWINSTYLES
/* Basic window types */
#define WS_OVERLAPPED 0x00000000L
#define WS_POPUP 0x80000000L
#define WS_CHILD 0x40000000L
/* Clipping styles */
#define WS_CLIPSIBLINGS 0x04000000L
#define WS_CLIPCHILDREN 0x02000000L
/* Generic window states */
#define WS_VISIBLE 0x10000000L
#define WS_DISABLED 0x08000000L
/* Main window states */
#define WS_MINIMIZE 0x20000000L
#define WS_MAXIMIZE 0x01000000L
/* Main window styles */
#define WS_CAPTION 0x00C00000L /* WS_BORDER | WS_DLGFRAME */
#define WS_BORDER 0x00800000L
#define WS_DLGFRAME 0x00400000L
#define WS_VSCROLL 0x00200000L
#define WS_HSCROLL 0x00100000L
#define WS_SYSMENU 0x00080000L
#define WS_THICKFRAME 0x00040000L
#define WS_MINIMIZEBOX 0x00020000L
#define WS_MAXIMIZEBOX 0x00010000L
/* Control window styles */
#define WS_GROUP 0x00020000L
#define WS_TABSTOP 0x00010000L
/* Common Window Styles */
#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
#define WS_CHILDWINDOW (WS_CHILD)
/* Extended Window Styles */
#define WS_EX_DLGMODALFRAME 0x00000001L
#define WS_EX_NOPARENTNOTIFY 0x00000004L
#if (WINVER >= 0x030a)
#define WS_EX_TOPMOST 0x00000008L
#define WS_EX_ACCEPTFILES 0x00000010L
#define WS_EX_TRANSPARENT 0x00000020L
#endif /* WINVER >= 0x030a */
/* Obsolete style names */
#define WS_TILED WS_OVERLAPPED
#define WS_ICONIC WS_MINIMIZE
#define WS_SIZEBOX WS_THICKFRAME
#define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
#endif /* NOWINSTYLES */
/* Special value for CreateWindow, et al. */
#define HWND_DESKTOP ((HWND)0)
BOOL WINAPI IsWindow(HWND);
HWND WINAPI CreateWindowEx(DWORD, LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, void FAR*);
HWND WINAPI CreateWindow(LPCSTR, LPCSTR, DWORD, int, int, int, int, HWND, HMENU, HINSTANCE, void FAR*);
#define WM_CREATE 0x0001
#define WM_NCCREATE 0x0081
/* WM_CREATE/WM_NCCREATE lParam struct */
typedef struct tagCREATESTRUCT
{
void FAR* lpCreateParams;
HINSTANCE hInstance;
HMENU hMenu;
HWND hwndParent;
int cy;
int cx;
int y;
int x;
LONG style;
LPCSTR lpszName;
LPCSTR lpszClass;
DWORD dwExStyle;
} CREATESTRUCT;
typedef CREATESTRUCT FAR* LPCREATESTRUCT;
BOOL WINAPI DestroyWindow(HWND);
#define WM_DESTROY 0x0002
#define WM_NCDESTROY 0x0082
/* Basic window attributes */
HTASK WINAPI GetWindowTask(HWND);
BOOL WINAPI IsChild(HWND, HWND);
HWND WINAPI GetParent(HWND);
HWND WINAPI SetParent(HWND, HWND);
BOOL WINAPI IsWindowVisible(HWND);
BOOL WINAPI ShowWindow(HWND, int);
#ifndef NOSHOWWINDOW
#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
/* Obsolete ShowWindow() command names */
#define HIDE_WINDOW 0
#define SHOW_OPENWINDOW 1
#define SHOW_ICONWINDOW 2
#define SHOW_FULLSCREEN 3
#define SHOW_OPENNOACTIVATE 4
#define WM_SHOWWINDOW 0x0018
/* WM_SHOWWINDOW wParam codes */
#define SW_PARENTCLOSING 1
#define SW_OTHERMAXIMIZED 2
#define SW_PARENTOPENING 3
#define SW_OTHERRESTORED 4
/* Obsolete constant names */
#define SW_OTHERZOOM SW_OTHERMAXIMIZED
#define SW_OTHERUNZOOM SW_OTHERRESTORED
#endif /* NOSHOWWINDOW */
#define WM_SETREDRAW 0x000B
/* Enabled state */
BOOL WINAPI EnableWindow(HWND,BOOL);
BOOL WINAPI IsWindowEnabled(HWND);
#define WM_ENABLE 0x000A
/* Window text */
void WINAPI SetWindowText(HWND, LPCSTR);
int WINAPI GetWindowText(HWND, LPSTR, int);
int WINAPI GetWindowTextLength(HWND);
#define WM_SETTEXT 0x000C
#define WM_GETTEXT 0x000D
#define WM_GETTEXTLENGTH 0x000E
/* Window words */
WORD WINAPI GetWindowWord(HWND, int);
WORD WINAPI SetWindowWord(HWND, int, WORD);
LONG WINAPI GetWindowLong(HWND, int);
LONG WINAPI SetWindowLong(HWND, int, LONG);
/* Window field offsets for GetWindowLong() and GetWindowWord() */
#ifndef NOWINOFFSETS
#define GWL_WNDPROC (-4)
#define GWW_HINSTANCE (-6)
#define GWW_HWNDPARENT (-8)
#define GWW_ID (-12)
#define GWL_STYLE (-16)
#define GWL_EXSTYLE (-20)
#endif /* NOWINOFFSETS */
/****** Window size, position, Z-order, and visibility **********************/
#define CW_USEDEFAULT ((int)0x8000)
void WINAPI GetClientRect(HWND, RECT FAR*);
void WINAPI GetWindowRect(HWND, RECT FAR*);
#if (WINVER >= 0x030a)
typedef struct tagWINDOWPLACEMENT
{
UINT length;
UINT flags;
UINT showCmd;
POINT ptMinPosition;
POINT ptMaxPosition;
RECT rcNormalPosition;
} WINDOWPLACEMENT;
typedef WINDOWPLACEMENT *PWINDOWPLACEMENT;
typedef WINDOWPLACEMENT FAR* LPWINDOWPLACEMENT;
#define WPF_SETMINPOSITION 0x0001
#define WPF_RESTORETOMAXIMIZED 0x0002
BOOL WINAPI GetWindowPlacement(HWND, WINDOWPLACEMENT FAR*);
BOOL WINAPI SetWindowPlacement(HWND, const WINDOWPLACEMENT FAR*);
#endif /* WINVER >= 0x030a */
BOOL WINAPI SetWindowPos(HWND, HWND, int, int, int, int, UINT);
/* SetWindowPos() and WINDOWPOS flags */
#define SWP_NOSIZE 0x0001
#define SWP_NOMOVE 0x0002
#define SWP_NOZORDER 0x0004
#define SWP_NOREDRAW 0x0008
#define SWP_NOACTIVATE 0x0010
#define SWP_FRAMECHANGED 0x0020 /* The frame changed: send WM_NCCALCSIZE */
#define SWP_SHOWWINDOW 0x0040
#define SWP_HIDEWINDOW 0x0080
#define SWP_NOCOPYBITS 0x0100
#define SWP_NOOWNERZORDER 0x0200 /* Don't do owner Z ordering */
#define SWP_DRAWFRAME SWP_FRAMECHANGED
#define SWP_NOREPOSITION SWP_NOOWNERZORDER
#define SWP_NOSENDCHANGING 0x0400
#define SWP_DEFERERASE 0x2000
/* SetWindowPos() hwndInsertAfter field values */
#define HWND_TOP ((HWND)0)
#define HWND_BOTTOM ((HWND)1)
#define HWND_TOPMOST ((HWND)-1)
#define HWND_NOTOPMOST ((HWND)-2)
#ifndef NODEFERWINDOWPOS
DECLARE_HANDLE(HDWP);
HDWP WINAPI BeginDeferWindowPos(int);
HDWP WINAPI DeferWindowPos(HDWP, HWND, HWND, int, int, int, int, UINT);
BOOL WINAPI EndDeferWindowPos(HDWP);
#endif /* NODEFERWINDOWPOS */
BOOL WINAPI MoveWindow(HWND, int, int, int, int, BOOL);
BOOL WINAPI BringWindowToTop(HWND);
#if (WINVER >= 0x030a)
#define WM_WINDOWPOSCHANGING 0x0046
#define WM_WINDOWPOSCHANGED 0x0047
/* WM_WINDOWPOSCHANGING/CHANGED struct pointed to by lParam */
typedef struct tagWINDOWPOS
{
HWND hwnd;
HWND hwndInsertAfter;
int x;
int y;
int cx;
int cy;
UINT flags;
} WINDOWPOS;
typedef WINDOWPOS FAR* LPWINDOWPOS;
#endif /* WINVER >= 0x030a */
#define WM_MOVE 0x0003
#define WM_SIZE 0x0005
/* WM_SIZE message wParam values */
#define SIZE_RESTORED 0
#define SIZE_MINIMIZED 1
#define SIZE_MAXIMIZED 2
#define SIZE_MAXSHOW 3
#define SIZE_MAXHIDE 4
/* Obsolete constant names */
#define SIZENORMAL SIZE_RESTORED
#define SIZEICONIC SIZE_MINIMIZED
#define SIZEFULLSCREEN SIZE_MAXIMIZED
#define SIZEZOOMSHOW SIZE_MAXSHOW
#define SIZEZOOMHIDE SIZE_MAXHIDE
/****** Window proc implementation & subclassing support *********************/
LRESULT WINAPI DefWindowProc(HWND, UINT, WPARAM, LPARAM);
#ifdef STRICT
LRESULT WINAPI CallWindowProc(WNDPROC, HWND, UINT, WPARAM, LPARAM);
#else
LRESULT WINAPI CallWindowProc(FARPROC, HWND, UINT, WPARAM, LPARAM);
#endif
/****** Main window support **************************************************/
void WINAPI AdjustWindowRect(RECT FAR*, DWORD, BOOL);
void WINAPI AdjustWindowRectEx(RECT FAR*, DWORD, BOOL, DWORD);
#define WM_QUERYOPEN 0x0013
#define WM_CLOSE 0x0010
/* Struct pointed to by WM_GETMINMAXINFO lParam */
typedef struct tagMINMAXINFO
{
POINT ptReserved;
POINT ptMaxSize;
POINT ptMaxPosition;
POINT ptMinTrackSize;
POINT ptMaxTrackSize;
} MINMAXINFO;
#define WM_GETMINMAXINFO 0x0024
BOOL WINAPI FlashWindow(HWND, BOOL);
void WINAPI ShowOwnedPopups(HWND, BOOL);
/* Obsolete functions */
BOOL WINAPI OpenIcon(HWND);
void WINAPI CloseWindow(HWND);
BOOL WINAPI AnyPopup(void);
BOOL WINAPI IsIconic(HWND);
BOOL WINAPI IsZoomed(HWND);
/****** Window coordinate mapping and hit-testing ***************************/
void WINAPI ClientToScreen(HWND, POINT FAR*);
void WINAPI ScreenToClient(HWND, POINT FAR*);
#if (WINVER >= 0x030a)
void WINAPI MapWindowPoints(HWND hwndFrom, HWND hwndTo, POINT FAR* lppt, UINT cpt);
#endif /* WINVER >= 0x030a */
HWND WINAPI WindowFromPoint(POINT);
HWND WINAPI ChildWindowFromPoint(HWND, POINT);
/****** Window query and enumeration ****************************************/
HWND WINAPI GetDesktopWindow(void);
HWND WINAPI FindWindow(LPCSTR, LPCSTR);
#ifdef STRICT
typedef BOOL (CALLBACK* WNDENUMPROC)(HWND, LPARAM);
#else
typedef FARPROC WNDENUMPROC;
#endif
BOOL WINAPI EnumWindows(WNDENUMPROC, LPARAM);
BOOL WINAPI EnumChildWindows(HWND, WNDENUMPROC, LPARAM);
BOOL WINAPI EnumTaskWindows(HTASK, WNDENUMPROC, LPARAM);
HWND WINAPI GetTopWindow(HWND);
HWND WINAPI GetWindow(HWND, UINT);
HWND WINAPI GetNextWindow(HWND, UINT);
/* GetWindow() constants */
#define GW_HWNDFIRST 0
#define GW_HWNDLAST 1
#define GW_HWNDNEXT 2
#define GW_HWNDPREV 3
#define GW_OWNER 4
#define GW_CHILD 5
/****** Window property support *********************************************/
BOOL WINAPI SetProp(HWND, LPCSTR, HANDLE);
HANDLE WINAPI GetProp(HWND, LPCSTR);
HANDLE WINAPI RemoveProp(HWND, LPCSTR);
#ifdef STRICT
typedef BOOL (CALLBACK* PROPENUMPROC)(HWND, LPCSTR, HANDLE);
#else
typedef FARPROC PROPENUMPROC;
#endif
int WINAPI EnumProps(HWND, PROPENUMPROC);
/****** Window drawing support **********************************************/
HDC WINAPI GetDC(HWND);
int WINAPI ReleaseDC(HWND, HDC);
HDC WINAPI GetWindowDC(HWND);
#if (WINVER >= 0x030a)
HDC WINAPI GetDCEx(register HWND hwnd, HRGN hrgnClip, DWORD flags);
#define DCX_WINDOW 0x00000001L
#define DCX_CACHE 0x00000002L
#define DCX_CLIPCHILDREN 0x00000008L
#define DCX_CLIPSIBLINGS 0x00000010L
#define DCX_PARENTCLIP 0x00000020L
#define DCX_EXCLUDERGN 0x00000040L
#define DCX_INTERSECTRGN 0x00000080L
#define DCX_LOCKWINDOWUPDATE 0x00000400L
#define DCX_USESTYLE 0x00010000L
#endif /* WINVER >= 0x030a */
/****** Window repainting ***************************************************/
#define WM_PAINT 0x000F
#define WM_ERASEBKGND 0x0014
#define WM_ICONERASEBKGND 0x0027
/* BeginPaint() return structure */
typedef struct tagPAINTSTRUCT
{
HDC hdc;
BOOL fErase;
RECT rcPaint;
BOOL fRestore;
BOOL fIncUpdate;
BYTE rgbReserved[16];
} PAINTSTRUCT;
typedef PAINTSTRUCT* PPAINTSTRUCT;
typedef PAINTSTRUCT NEAR* NPPAINTSTRUCT;
typedef PAINTSTRUCT FAR* LPPAINTSTRUCT;
HDC WINAPI BeginPaint(HWND, PAINTSTRUCT FAR*);
void WINAPI EndPaint(HWND, const PAINTSTRUCT FAR*);
void WINAPI UpdateWindow(HWND);
int WINAPI ExcludeUpdateRgn(HDC, HWND);
#if (WINVER >= 0x030a)
BOOL WINAPI LockWindowUpdate(HWND hwndLock);
#endif /* WINVER >= 0x030a */
BOOL WINAPI GetUpdateRect(HWND, RECT FAR*, BOOL);
int WINAPI GetUpdateRgn(HWND, HRGN, BOOL);
void WINAPI InvalidateRect(HWND, const RECT FAR*, BOOL);
void WINAPI ValidateRect(HWND, const RECT FAR*);
void WINAPI InvalidateRgn(HWND, HRGN, BOOL);
void WINAPI ValidateRgn(HWND, HRGN);
#if (WINVER >= 0x030a)
BOOL WINAPI RedrawWindow(HWND hwnd, const RECT FAR* lprcUpdate, HRGN hrgnUpdate, UINT flags);
#define RDW_INVALIDATE 0x0001
#define RDW_INTERNALPAINT 0x0002
#define RDW_ERASE 0x0004
#define RDW_VALIDATE 0x0008
#define RDW_NOINTERNALPAINT 0x0010
#define RDW_NOERASE 0x0020
#define RDW_NOCHILDREN 0x0040
#define RDW_ALLCHILDREN 0x0080
#define RDW_UPDATENOW 0x0100
#define RDW_ERASENOW 0x0200
#define RDW_FRAME 0x0400
#define RDW_NOFRAME 0x0800
#endif /* WINVER >= 0x030a */
/****** Window scrolling ****************************************************/
void WINAPI ScrollWindow(HWND, int, int, const RECT FAR*, const RECT FAR*);
BOOL WINAPI ScrollDC(HDC, int, int, const RECT FAR*, const RECT FAR*, HRGN, RECT FAR*);
#if (WINVER >= 0x030a)
int WINAPI ScrollWindowEx(HWND hwnd, int dx, int dy,
const RECT FAR* prcScroll, const RECT FAR* prcClip,
HRGN
Соседние файлы в папке INCLUDE