|
|
/*****************************************************************************\
* * * windows.h - Windows functions, types, and definitions * * * * Version 3.10 * * * * Copyright (c) 1985-1992, Microsoft Corp. All rights reserved. * * * ******************************************************************************* * * 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 _INC_WINDOWS
#define _INC_WINDOWS /* #defined if windows.h has been included */
#ifndef RC_INVOKED
#pragma pack(1) /* Assume byte packing throughout */
#pragma warning(4:4020)
#pragma warning(disable:4001)
#pragma warning(disable:4103)
#endif /* RC_INVOKED */
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */ #endif /* __cplusplus */
#ifdef NOWIN31 /* ;Internal */
#define WINVER 0x0300 /* ;Internal */
#endif /* ;Internal */
/* ;Internal */ /* 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 */
/* Temp internal compatibility hacks */ /* ;Internal */ #define NOOEMRESOURCE /* ;Internal */
#ifdef OEMRESOURCE /* ;Internal */
#undef NOOEMRESOURCE /* ;Internal */
#endif /* ;Internal */
#define NOCOMM /* ;Internal */
#ifdef USECOMM /* ;Internal */
#undef NOCOMM /* ;Internal */
#endif /* ;Internal */
/* ;Internal */ /* 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 CONST const /* ;Internal */
#ifdef BUILDDLL /* ;Internal */
#define WINAPI _loadds _far _pascal /* ;Internal */
#define CALLBACK _loadds _far _pascal /* ;Internal */
#else /* ;Internal */
#define WINAPI _far _pascal
#define CALLBACK _far _pascal
#endif /* ;Internal */
/* ;Internal */ #define API WINAPI /* ;Internal */
/****** 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) & 0xFF))
#define LOWORD(l) ((WORD)(DWORD)(l))
#define HIWORD(l) ((WORD)((((DWORD)(l)) >> 16) & 0xFFFF))
#define MAKELONG(low, high) ((LONG)(((WORD)(low)) | (((DWORD)((WORD)(high))) << 16)))
#ifndef NOMINMAX
#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;
#define SZ char /* ;Internal */
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 ************************************/
#ifdef STRICT
int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int); #endif
/****** 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
#define GFSR_VALID 0x0002 /* ;Internal */
#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_CPUEM 0x0100
#define WF_SMALLFRAME 0x0200
#define WF_80x87 0x0400
#define WF_PAGING 0x0800
#define WF_WINNT 0x4000
#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
/* Internal error value masks */ /* ;Internal */ #define ERR_TYPE_MASK 0x0fff /* ;Internal */
#define ERR_FLAGS_MASK 0xc000 /* ;Internal */
/* ;Internal */ #define ERR_SIZE_MASK 0x3000
#define ERR_SIZE_SHIFT 12 /* ;Internal */
#define ERR_BYTE 0x1000
#define ERR_WORD 0x2000
#define ERR_DWORD 0x3000
/* ;Internal */ /* Error option flags (set by [kernel] ErrorOptions win.ini variable) *//* ;Internal */ /* ;Internal */ #define ERO_PARAM_ERROR_BREAK 0x0001 /* ;Internal */
#define ERO_BUFFER_FILL 0x0002 /* ;Internal */
/****** 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
/* Debug fill constants */ /* ;Internal */ /* ;Internal */ #define DBGFILL_ALLOC 0xfd /* ;Internal */
#define DBGFILL_FREE 0xfb /* ;Internal */
#define DBGFILL_BUFFER 0xf9 /* ;Internal */
#define DBGFILL_STACK 0xf7 /* ;Internal */
/**** 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, ...); void WINAPI DebugFillBuffer(void FAR* lpb, UINT cb); /* ;Internal */
/* WINDEBUGINFO flags values */ #define WDI_OPTIONS 0x0001
#define WDI_FILTER 0x0002
#define WDI_ALLOCBREAK 0x0004
#define WDI_VALID 0x0007 /* ;Internal */
/* 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
#define DBF_SEVMASK 0xc000 /* ;Internal */
#define DBF_FILTERMASK 0x3fff /* ;Internal */
/* 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
#define EW_EXITANDEXECAPP 0x44 /* ;Internal */
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)
LONG WINAPI GetExpWinVer(HINSTANCE); /* ;Internal */
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);
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); int WINAPI SetPriority(HTASK, int); /* ;Internal */
void WINAPI Yield(void); void WINAPI DirectedYield(HTASK);
DWORD WINAPI GetAppCompatFlags(HTASK); /* ;Internal */ /* ;Internal */ /* GetAppCompatFlags flag values */ /* ;Internal */ #define GACF_IGNORENODISCARD 0x0001 /* ;Internal */
#define GACF_FORCETEXTBAND 0x0002 /* ;Internal */
#define GACF_ONELANDGRXBAND 0x0004 /* ;Internal */
#define GACF_IGNORETOPMOST 0x0008 /* ;Internal */
#define GACF_CALLTTDEVICE 0x0010 /* ;Internal */
#define GACF_MULTIPLEBANDS 0x0020 /* ;Internal */
#define GACF_ALWAYSSENDNCPAINT 0x0040 /* ;Internal */
#define GACF_EDITSETTEXTMUNGE 0x0080 /* ;Internal */
#define GACF_MOREEXTRAWNDWORDS 0x0100 /* ;Internal */
#define GACF_TTIGNORERASTERDUPE 0x0200 /* ;Internal */
#define GACF_HACKWINFLAGS 0x0400 /* ;Internal */
#define GACF_DELAYHWHNDSHAKECHK 0x0800 /* ;Internal */
#define GACF_ENUMHELVNTMSRMN 0x1000 /* ;Internal */
#define GACF_ENUMTTNOTDEVICE 0x2000 /* ;Internal */
#define GACF_SUBTRACTCLIPSIBS 0x4000 /* ;Internal */
#define GACF_FORCETTGRAPHICS 0x8000 /* ;Internal */
#define GACF_NOHRGN1 0x00010000 /* ;Internal */
#define GACF_NCCALCSIZEONMOVE 0x00020000 /* ;Internal */
#define GACF_SENDMENUDBLCLK 0x00040000 /* ;Internal */
#define GACF_30AVGWIDTH 0x00080000 /* ;Internal */
/****** 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)
extern UINT NEAR* PASCAL pLocalHeap; /* ;Internal */ #define LocalFreeze(dummy) (*(pLocalHeap+1) += 1) /* ;Internal */
#define LocalMelt(dummy) (*(pLocalHeap+1) -= 1) /* ;Internal */
#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
UINT WINAPI LocalHandleDelta(UINT); /* ;Internal */
/* 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);
/* LocalNotify callback */ /* ;Internal */ #ifdef STRICT /* ;Internal */
typedef BOOL (CALLBACK* LNOTIFYPROC)(UINT, HLOCAL, void NEAR*); /* ;Internal */ #else /* ;Internal */
typedef FARPROC LNOTIFYPROC; /* ;Internal */ #endif /* ;Internal */
/* ;Internal */ #define LNOTIFY_OUTOFMEM 0 /* ;Internal */
#define LNOTIFY_MOVE 1 /* ;Internal */
#define LNOTIFY_DISCARD 2 /* ;Internal */
/* ;Internal */ LNOTIFYPROC WINAPI LocalNotify(LNOTIFYPROC); /* ;Internal */ /* ;Internal */ #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 */
UINT WINAPI DeletePathname(LPCSTR); /* ;Internal */
#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);
#define MAKEINTRESOURCE(i) ((LPCSTR)MAKELP(0, (i)))
#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)
/* If any new types are added above this point, */ /* ;Internal */ /* DIFFERENCE must be changed. The GROUP_* */ /* ;Internal */ /* values minus the non-GROUP values must be */ /* ;Internal */ /* equal to DIFFERENCE */ /* ;Internal */ #define DIFFERENCE 11 /* ;Internal */
#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 *****************************************************/
#define MAKEINTATOM(i) ((LPCSTR)MAKELP(0, (i)))
#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);
/* Language driver entry point ordinal */ /* ;Internal */ #define ORD_LANGDRIVER 1 /* ;Internal */
#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); UINT WINAPI GetSystemDefaultLangID(void); #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); DWORD WINAPI SetDCOrg(HDC, int, int); /* ;Internal */
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
#define DCB_WINDOWMGR 0x8000 /* ;Internal */
/* ;Internal */ /* Internal SelectBitmap stuff */ /* ;Internal */ /*HBITMAP WINAPI SelectBitmap(HDC hDC, HBITMAP hbm);*/ /* ;Internal */ #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);
int WINAPI SetRelAbs(HDC, int); /* ;Internal */ int WINAPI GetRelAbs(HDC); /* ;Internal */
/* 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
#define COLOR_MAX 20 /* ;Internal */
#else /* WINVER >= 0x030a */ /* ;Internal */
#define COLOR_MAX 18 /* ;Internal */
#endif /* WINVER >= 0x030a */
#define COLOR_ENDCOLORS COLOR_MAX /* ;Internal */
#endif /* NOCOLOR */
#define WM_SYSCOLORCHANGE 0x0015
/****** GDI Object Support **************************************************/
#ifndef NOGDIOBJ
HGDIOBJ WINAPI GetStockObject(int);
BOOL WINAPI IsGDIObject(HGDIOBJ); #define GDIOBJ_PEN 1 /* ;Internal */
#define GDIOBJ_BRUSH 2 /* ;Internal */
#define GDIOBJ_FONT 3 /* ;Internal */
#define GDIOBJ_PALETTE 4 /* ;Internal */
#define GDIOBJ_BITMAP 5 /* ;Internal */
#define GDIOBJ_RGN 6 /* ;Internal */
#define GDIOBJ_DC 7 /* ;Internal */
#define GDIOBJ_IC 8 /* ;Internal */
#define GDIOBJ_DISABLEDDC 9 /* ;Internal */
#define GDIOBJ_METADC 10 /* ;Internal */
#define GDIOBJ_METAFILE 11 /* ;Internal */
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
#define WM_PALETTEGONNACHANGE WM_PALETTEISCHANGING /* ;Internal */
#define WM_CHANGEPALETTE WM_PALETTECHANGED /* ;Internal */
/****** 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*);
#if (WINVER >= 0x030a) /* ;Internal */
/* DC hook callback function */ /* ;Internal */ /* ;Internal */ typedef UINT (CALLBACK* DCHOOKPROC)(HDC hDC, UINT code, DWORD data, DWORD lParam); /* ;Internal */ /* ;Internal */ BOOL WINAPI SetDCHook(HDC hDC, DCHOOKPROC lpNewProc, DWORD data); /* ;Internal */ DWORD WINAPI GetDCHook(HDC hDC, DCHOOKPROC FAR* lplpproc); /* ;Internal */ /* ;Internal */ /* Callback reason code values */ /* ;Internal */ /* ;Internal */ #define DCHC_INVALIDVISRGN 0x0001 /* ;Internal */
#define DCHC_DELETEDC 0x0002 /* ;Internal */
/* ;Internal */ UINT WINAPI SetHookFlags(HDC hDC, UINT flags); /* ;Internal */ /* ;Internal */ #define DCHF_INVALIDATEVISRGN 0x0001 /* ;Internal */
#define DCHF_VALIDATEVISRGN 0x0002 /* ;Internal */
#endif /* WINVER >= 0x030a */ /* ;Internal */
/****** 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*);
BOOL WINAPI FastWindowFrame(HDC, const RECT FAR*, UINT, UINT, DWORD); /* ;Internal */
/****** 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
#define DT_VALID 0x1fff /* ;Internal: Union of all those above */
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
#define TRANSPARENT1 3 /* ;Internal */
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 GB2312_CHARSET 134
#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 ConvertOutlineFontFile(LPCSTR, LPCSTR, LPCSTR); /* ;Internal */ 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 UINT FAR* LPFONTDIR; /* ;Internal */ /* ;Internal */ DWORD WINAPI EngineMakeFontDir(HDC, LPFONTDIR, LPCSTR); /* ;Internal */ /* ;Internal */ 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;
/* Pel Array */ /* ;Internal */ typedef struct tagPELARRAY /* ;Internal */ { /* ;Internal */ int paXCount; /* ;Internal */ int paYCount; /* ;Internal */ int paXExt; /* ;Internal */ int paYExt; /* ;Internal */ BYTE paRGBs; /* ;Internal */ } PELARRAY; /* ;Internal */ typedef PELARRAY* PPELARRAY; /* ;Internal */ typedef PELARRAY NEAR* NPPELARRAY; /* ;Internal */ typedef PELARRAY FAR* LPPELARRAY; /* ;Internal */
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); BOOL WINAPI QueryJob(HANDLE, int); /* ;Internal */ #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 *****************************/
#ifdef tagWND /* ;Internal */
typedef struct tagWND NEAR* HWND; /* ;Internal */ #else /* ;Internal */
DECLARE_HANDLE(HWND); #endif /* ;Internal */
#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_MAX 42 /* ;Internal */
#define SM_CMETRICS 43
#endif /* NOSYSMETRICS */
UINT WINAPI GetDoubleClickTime(void); void WINAPI SetDoubleClickTime(UINT);
#define WM_DEVMODECHANGE 0x001B
#define WM_TIMECHANGE 0x001E
#define WM_FILESYSCHANGE 0x0034 /* ;Internal */
/****** 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_TIMEOUTS 7 /* ;Internal */
#define SPI_KANJIMENU 8 /* ;Internal */
#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
#define SPI_MAX 36 /* ;Internal */
/* SystemParametersInfo flags */ #define SPIF_UPDATEINIFILE 0x0001
#define SPIF_SENDWININICHANGE 0x0002
#define SPIF_VALID 0x0003 /* ;Internal */
#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
#define PM_VALID 0x0003 /* ;Internal */
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
#define QS_VALID 0x007f /* ;Internal */
#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_MESSAGEBOX 1 /* ;Internal */
#define MSGF_MENU 2
#define MSGF_MOVE 3
#define MSGF_SIZE 4
#define MSGF_SCROLLBAR 5
#define MSGF_NEXTWINDOW 6
#define MSGF_CBTHOSEBAGSUSEDTHIS 7 /* ;Internal */
#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
/* Reserved message ranges */ /* ;Internal */ #define WM_KANJIFIRST 0x0280 /* JAPAN */ /* ;Internal */
#define WM_KANJILAST 0x029F /* JAPAN */ /* ;Internal */
#define WM_HANGEULFIRST 0x0280 /* KOREA */ /* ;Internal */
#define WM_HANGEULLAST 0x029F /* KOREA */ /* ;Internal */
/* ;Internal */ /* ;Internal */ #define WM_INTERNAL_COALESCE_FIRST 0x0390 /* ;Internal */
/* ;Internal */ /* ;Internal */ /* The following message range reserved */ /* ;Internal */ /* for multi-media */ /* ;Internal */ #define WM_MM_RESERVED_FIRST 0x03A0 /* ;Internal */
#define WM_MM_RESERVED_LAST 0x03DF /* ;Internal */
#define WM_INTERNAL_COALESCE_LAST 0x03b0 /* ;Internal */
/* ;Internal */ #define WM_INTERNAL_DDE_FIRST 0x03E0 /* ;Internal */
#define WM_INTERNAL_DDE_LAST 0x03EF /* ;Internal */
/* ;Internal */ /* The following message range reserved */ /* ;Internal */ /* for CBT */ /* ;Internal */ #define WM_CBT_RESERVED_FIRST 0x03F0 /* ;Internal */
#define WM_CBT_RESERVED_LAST 0x03FF /* ;Internal */
#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
#define CS_VALID 0x7fef /* ;Internal */
#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_DRAGOBJECT 0x00000002L /* ;Internal */
#define WS_EX_NOPARENTNOTIFY 0x00000004L
#if (WINVER >= 0x030a)
#define WS_EX_TOPMOST 0x00000008L
#define WS_EX_ACCEPTFILES 0x00000010L
#define WS_EX_TRANSPARENT 0x00000020L
#define WS_EX_VALID 0x0000003fL /* ;Internal */
#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
#define WS_VALID 0xffff0000L /* ;Internal */
#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);
#define WM_SETVISIBLE 0x0009 /* ;Internal */
#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
#define SW_MAX 9 /* ;Internal */
/* 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
#define WPF_VALID 0x0003 /* ;Internal */
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_NOCLIENTSIZE 0x0800 /* Client didn't resize */ /* ;Internal */
#define SWP_NOCLIENTMOVE 0x1000 /* Client didn't move */ /* ;Internal */
#define SWP_NOSENDCHANGING 0x0400
#define SWP_DEFERERASE 0x2000
#define SWP_DEFERDRAWING SWP_DEFERERASE /* Don't do any drawing or erasing */ /* ;Internal */
/* ;Internal */ #define SWP_CHANGEMASK (SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | /* ;Internal */ \
SWP_FRAMECHANGED | /* ;Internal */ \ SWP_SHOWWINDOW | SWP_HIDEWINDOW | /* ;Internal */ \ SWP_NOCLIENTSIZE | SWP_NOCLIENTMOVE) /* ;Internal */ /* ;Internal */ #define SWP_NOCHANGE (SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | /* ;Internal */ \
SWP_NOCLIENTSIZE | SWP_NOCLIENTMOVE) /* ;Internal */ #define SWP_VALID 0x27ff /* ;Internal */
/* SetWindowPos() hwndInsertAfter field values */ #define HWND_TOP ((HWND)0)
#define HWND_BOTTOM ((HWND)1)
#define HWND_TOPMOST ((HWND)-1)
#define HWND_NOTOPMOST ((HWND)-2)
#define HWND_GROUPTOTOP HWND_TOPMOST /* ;Internal */
#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_SIZEWAIT 0x0004 /* ;Internal */
#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
#define WM_ENTERSIZEMOVE 0x0231 /* ;Internal */
#define WM_EXITSIZEMOVE 0x0232 /* ;Internal */
#define WM_ISACTIVEICON 0x0035 /* ;Internal */
#define WM_UNUSED0036 0x0036 /* ;Internal */
#define WM_TESTING 0x0040 /* ;Internal */
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
#define GW_MAX 5 /* ;Internal */
HWND WINAPI GetNextQueueWindow(HWND, int); /* ;Internal */
/****** 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_NORESETATTRS 0x00000004L /* ;Internal */
#define DCX_CLIPCHILDREN 0x00000008L
#define DCX_CLIPSIBLINGS 0x00000010L
#define DCX_PARENTCLIP 0x00000020L
#define DCX_EXCLUDERGN 0x00000040L
#define DCX_INTERSECTRGN 0x00000080L
#define DCX_EXCLUDEUPDATE 0x00000100L /* ;Internal */
#define DCX_INTERSECTUPDATE 0x00000200L /* ;Internal */
#define DCX_LOCKWINDOWUPDATE 0x00000400L
#define DCX_INVALID 0x00000800L /* ;Internal */
#define DCX_INUSE 0x00001000L /* ;Internal */
#define DCX_SAVEDRGNINVALID 0x00002000L /* ;Internal */
#define DCX_USESTYLE 0x00010000L
#define DCX_NEEDFONT 0x00020000L /* ;Internal */
#define DCX_NODELETERGN 0x00040000L /* ;Internal */
#define DCX_NOCLIPCHILDREN 0x00080000L /* ;Internal */
#define DCX_NORECOMPUTE 0x00100000L /* ;Internal */
#define DCX_VALIDATE 0x00200000L /* ;Internal */
#define DCX_MATCHMASK (DCX_WINDOW | DCX_CACHE | /* ;Internal */ \
DCX_CLIPCHILDREN | DCX_CLIPSIBLINGS | /* ;Internal */ \ DCX_LOCKWINDOWUPDATE /* ;Internal */ \ ) /* ;Internal */ #define DCX_VALID 0x000104fbL /* ;Internal */
#endif /* WINVER >= 0x030a */
/****** Window repainting ***************************************************/
#define WM_PAINT 0x000F
#define WM_ERASEBKGND 0x0014
#define WM_PAINTICON 0x0026 /* ;Internal */
#define WM_ICONERASEBKGND 0x0027
#define WM_SYNCPAINT 0x0088 /* ;Internal */
#define WM_SYNCTASK 0x0089 /* ;Internal */
/* 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
/* ;Internal */ #define RDW_REDRAWWINDOW 0x1000 /* Called from RedrawWindow()*/ /* ;Internal */
#define RDW_SUBTRACTSELF 0x2000 /* Subtract self from hrgn */ /* ;Internal */
/* ;Internal */ #define RDW_COPYRGN 0x4000 /* Copy the passed-in region */ /* ;Internal */
#define RDW_VALID 0x0fff /* ;Internal */
#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 hrgnUpdate, RECT FAR* prcUpdate, UINT flags);
#define SW_SCROLLCHILDREN 0x0001
#define SW_INVALIDATE 0x0002
#define SW_ERASE 0x0004
#define SW_SCROLLWINDOW 0x8000 /* ;Internal */
#define SW_VALID 0x8007 /* ;Internal */
#endif /* WINVER >= 0x030a */
/****** Non-client window area management ************************************/
#define WM_NCPAINT 0x0085
#define WM_NCCALCSIZE 0x0083
#if (WINVER >= 0x030a)
/* WM_NCCALCSIZE return flags */ #define WVR_ALIGNTOP 0x0010
#define WVR_ALIGNLEFT 0x0020
#define WVR_ALIGNBOTTOM 0x0040
#define WVR_ALIGNRIGHT 0x0080
#define WVR_HREDRAW 0x0100
#define WVR_VREDRAW 0x0200
#define WVR_REDRAW (WVR_HREDRAW | WVR_VREDRAW)
#define WVR_VALIDRECTS 0x0400
#define WVR_MINVALID WVR_ALIGNTOP /* ;Internal */
#define WVR_MAXVALID WVR_VALIDRECTS /* ;Internal */
/* WM_NCCALCSIZE parameter structure */ typedef struct tagNCCALCSIZE_PARAMS { RECT rgrc[3]; WINDOWPOS FAR* lppos; } NCCALCSIZE_PARAMS; #else /* WINVER >= 0x030a */
typedef struct tagNCCALCSIZE_PARAMS { RECT rgrc[2]; } NCCALCSIZE_PARAMS; #endif /* WINVER >= 0x030a */
typedef NCCALCSIZE_PARAMS FAR* LPNCCALCSIZE_PARAMS;
#define WM_NCHITTEST 0x0084
/* WM_NCHITTEST return codes */ #define HTERROR (-2)
#define HTTRANSPARENT (-1)
#define HTNOWHERE 0
#define HTCLIENT 1
#define HTCAPTION 2
#define HTSYSMENU 3
#define HTSIZE 4
#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 HTGROWBOX HTSIZE
#define HTREDUCE HTMINBUTTON
#define HTZOOM HTMAXBUTTON
#define HTSIZEFIRST HTLEFT /* ;Internal */
#define HTSIZELAST HTBOTTOMRIGHT /* ;Internal */
/****** Drag-and-drop support ***********************************************/
#define WM_DROPOBJECT 0x022A /* ;Internal */
#define WM_QUERYDROPOBJECT 0x022B /* ;Internal */
#define WM_BEGINDRAG 0x022C /* ;Internal */
#define WM_DRAGLOOP 0x022D /* ;Internal */
#define WM_DRAGSELECT 0x022E /* ;Internal */
#define WM_DRAGMOVE 0x022F /* ;Internal */
#define WM_QUERYDRAGICON 0x0037
#define WM_DROPFILES 0x0233
/****** Window activation ***************************************************/
HWND WINAPI SetActiveWindow(HWND); HWND WINAPI GetActiveWindow(void);
HWND WINAPI GetLastActivePopup(HWND);
/* WM_ACTIVATE state values */ #define WA_INACTIVE 0
#define WA_ACTIVE 1
#define WA_CLICKACTIVE 2
#define WM_ACTIVATE 0x0006
#define WM_ACTIVATEAPP 0x001C
#define WM_NCACTIVATE 0x0086
/****** Keyboard input support **********************************************/
HWND WINAPI SetFocus(HWND); HWND WINAPI GetFocus(void);
int WINAPI GetKeyState(int); int WINAPI GetAsyncKeyState(int);
void WINAPI GetKeyboardState(BYTE FAR* ); void WINAPI SetKeyboardState(BYTE FAR* );
#define WM_SETFOCUS 0x0007
#define WM_KILLFOCUS 0x0008
#define WM_KEYDOWN 0x0100
#define WM_KEYUP 0x0101
#define WM_CHAR 0x0102
#define WM_DEADCHAR 0x0103
#define WM_SYSKEYDOWN 0x0104
#define WM_SYSKEYUP 0x0105
#define WM_SYSCHAR 0x0106
#define WM_SYSDEADCHAR 0x0107
#define WM_YOMICHAR 0x0108 /* JAPAN */ /* ;Internal */
#define WM_CONVERTREQUEST 0x010A /* JAPAN */ /* ;Internal */
#define WM_CONVERTRESULT 0x010B /* JAPAN */ /* ;Internal */
#define WM_INTERIM 0x010C /* KOREA */ /* ;Internal */
/* Keyboard message range */ #define WM_KEYFIRST 0x0100
#define WM_KEYLAST 0x0108
/* WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags */ #define KF_EXTENDED 0x0100
#define KF_DLGMODE 0x0800
#define KF_MENUMODE 0x1000
#define KF_ALTDOWN 0x2000
#define KF_REPEAT 0x4000
#define KF_UP 0x8000
/* Virtual key codes */ #ifndef NOVIRTUALKEYCODES
#define VK_LBUTTON 0x01
#define VK_RBUTTON 0x02
#define VK_CANCEL 0x03
#define VK_MBUTTON 0x04
#define VK_BACK 0x08
#define VK_TAB 0x09
#define VK_CLEAR 0x0C
#define VK_RETURN 0x0D
#define VK_SHIFT 0x10
#define VK_CONTROL 0x11
#define VK_MENU 0x12
#define VK_PAUSE 0x13
#define VK_CAPITAL 0x14
#define VK_KANA 0x15 /* JAPAN */ /* ;Internal */
#define VK_KANJI 0x19 /* JAPAN */ /* ;Internal */
#define VK_HANGEUL 0x15 /* KOREA */ /* ;Internal */
#define VK_JUNJA 0x17 /* KOREA */ /* ;Internal */
#define VK_HANJA 0x19 /* KOREA */ /* ;Internal */
#define VK_ESCAPE 0x1B
#define VK_SPACE 0x20
#define VK_PRIOR 0x21
#define VK_NEXT 0x22
#define VK_END 0x23
#define VK_HOME 0x24
#define VK_LEFT 0x25
#define VK_UP 0x26
#define VK_RIGHT 0x27
#define VK_DOWN 0x28
#define VK_SELECT 0x29
#define VK_PRINT 0x2A
#define VK_EXECUTE 0x2B
#define VK_SNAPSHOT 0x2C
#define VK_INSERT 0x2D
#define VK_DELETE 0x2E
#define VK_HELP 0x2F
#define VK_NUMPAD0 0x60
#define VK_NUMPAD1 0x61
#define VK_NUMPAD2 0x62
#define VK_NUMPAD3 0x63
#define VK_NUMPAD4 0x64
#define VK_NUMPAD5 0x65
#define VK_NUMPAD6 0x66
#define VK_NUMPAD7 0x67
#define VK_NUMPAD8 0x68
#define VK_NUMPAD9 0x69
#define VK_MULTIPLY 0x6A
#define VK_ADD 0x6B
#define VK_SEPARATOR 0x6C
#define VK_SUBTRACT 0x6D
#define VK_DECIMAL 0x6E
#define VK_DIVIDE 0x6F
#define VK_F1 0x70
#define VK_F2 0x71
#define VK_F3 0x72
#define VK_F4 0x73
#define VK_F5 0x74
#define VK_F6 0x75
#define VK_F7 0x76
#define VK_F8 0x77
#define VK_F9 0x78
#define VK_F10 0x79
#define VK_F11 0x7A
#define VK_F12 0x7B
#define VK_F13 0x7C
#define VK_F14 0x7D
#define VK_F15 0x7E
#define VK_F16 0x7F
#define VK_F17 0x80
#define VK_F18 0x81
#define VK_F19 0x82
#define VK_F20 0x83
#define VK_F21 0x84
#define VK_F22 0x85
#define VK_F23 0x86
#define VK_F24 0x87
#define VK_NUMLOCK 0x90
#define VK_SCROLL 0x91
/* VK_A thru VK_Z are the same as their ASCII equivalents: 'A' thru 'Z' */ /* VK_0 thru VK_9 are the same as their ASCII equivalents: '0' thru '0' */
#endif /* NOVIRTUALKEYCODES */
BOOL WINAPI IsTwoByteCharPrefix(char); /* ;Internal */
/* SetWindowsHook() keyboard hook */ #define WH_KEYBOARD 2
/****** Mouse input support *************************************************/
HWND WINAPI SetCapture(HWND); void WINAPI ReleaseCapture(void); HWND WINAPI GetCapture(void);
BOOL WINAPI SwapMouseButton(BOOL);
/* Mouse input messages */ #define WM_MOUSEMOVE 0x0200
#define WM_LBUTTONDOWN 0x0201
#define WM_LBUTTONUP 0x0202
#define WM_LBUTTONDBLCLK 0x0203
#define WM_RBUTTONDOWN 0x0204
#define WM_RBUTTONUP 0x0205
#define WM_RBUTTONDBLCLK 0x0206
#define WM_MBUTTONDOWN 0x0207
#define WM_MBUTTONUP 0x0208
#define WM_MBUTTONDBLCLK 0x0209
/* Mouse input message range */ #define WM_MOUSEFIRST 0x0200
#define WM_MOUSELAST 0x0209
/* Mouse message wParam key states */ #ifndef NOKEYSTATES
#define MK_LBUTTON 0x0001
#define MK_RBUTTON 0x0002
#define MK_SHIFT 0x0004
#define MK_CONTROL 0x0008
#define MK_MBUTTON 0x0010
#endif /* NOKEYSTATES */
/* Non-client mouse messages */ #define WM_NCMOUSEMOVE 0x00A0
#define WM_NCLBUTTONDOWN 0x00A1
#define WM_NCLBUTTONUP 0x00A2
#define WM_NCLBUTTONDBLCLK 0x00A3
#define WM_NCRBUTTONDOWN 0x00A4
#define WM_NCRBUTTONUP 0x00A5
#define WM_NCRBUTTONDBLCLK 0x00A6
#define WM_NCMBUTTONDOWN 0x00A7
#define WM_NCMBUTTONUP 0x00A8
#define WM_NCMBUTTONDBLCLK 0x00A9
/* Mouse click activation support */ #define WM_MOUSEACTIVATE 0x0021
/* WM_MOUSEACTIVATE return codes */ #define MA_ACTIVATE 1
#define MA_ACTIVATEANDEAT 2
#define MA_NOACTIVATE 3
#if (WINVER >= 0x030a)
#define MA_NOACTIVATEANDEAT 4
#endif /* WINVER >= 0x030a */
/* SetWindowsHook() mouse hook */ #ifndef NOWH
#define WH_MOUSE 7
typedef struct tagMOUSEHOOKSTRUCT { POINT pt; HWND hwnd; UINT wHitTestCode; DWORD dwExtraInfo; } MOUSEHOOKSTRUCT; typedef MOUSEHOOKSTRUCT FAR* LPMOUSEHOOKSTRUCT; #endif /* NOWH */
/****** Mode control ********************************************************/
#define WM_CANCELMODE 0x001F
/****** System modal window support *****************************************/
HWND WINAPI GetSysModalWindow(void); HWND WINAPI SetSysModalWindow(HWND);
/****** Timer support *******************************************************/
#ifdef STRICT
typedef void (CALLBACK* TIMERPROC)(HWND, UINT, UINT, DWORD); #else
typedef FARPROC TIMERPROC; #endif
UINT WINAPI SetTimer(HWND, UINT, UINT, TIMERPROC);
BOOL WINAPI KillTimer(HWND, UINT);
#define WM_TIMER 0x0113
#define WM_SYSTIMER 0x0118 /* ;Internal */
/****** Accelerator support *************************************************/
DECLARE_HANDLE(HACCEL);
HACCEL WINAPI LoadAccelerators(HINSTANCE, LPCSTR);
#ifndef NOMSG
int WINAPI TranslateAccelerator(HWND, HACCEL, MSG FAR*); #endif
/****** Menu support ********************************************************/
#ifndef NOMENUS
/* Menu template header */ typedef struct { UINT versionNumber; UINT offset; } MENUITEMTEMPLATEHEADER;
/* Menu template item struct */ typedef struct { UINT mtOption; UINT mtID; char mtString[1]; } MENUITEMTEMPLATE;
#if (WINVER >= 0x030a)
BOOL WINAPI IsMenu(HMENU); #endif /* WINVER >= 0x030a */
HMENU WINAPI CreateMenu(void); HMENU WINAPI CreatePopupMenu(void); HMENU WINAPI LoadMenu(HINSTANCE, LPCSTR); HMENU WINAPI LoadMenuIndirect(const void FAR*);
BOOL WINAPI DestroyMenu(HMENU);
HMENU WINAPI GetMenu(HWND); BOOL WINAPI SetMenu(HWND, HMENU);
HMENU WINAPI GetSystemMenu(HWND, BOOL); BOOL WINAPI SetSystemMenu(HWND, HMENU); /* ;Internal */
void WINAPI DrawMenuBar(HWND);
BOOL WINAPI HiliteMenuItem(HWND, HMENU, UINT, UINT);
BOOL WINAPI InsertMenu(HMENU, UINT, UINT, UINT, LPCSTR); BOOL WINAPI AppendMenu(HMENU, UINT, UINT, LPCSTR); BOOL WINAPI ModifyMenu(HMENU, UINT, UINT, UINT, LPCSTR); BOOL WINAPI RemoveMenu(HMENU, UINT, UINT); BOOL WINAPI DeleteMenu(HMENU, UINT, UINT);
BOOL WINAPI ChangeMenu(HMENU, UINT, LPCSTR, UINT, UINT);
#define MF_INSERT 0x0000
#define MF_CHANGE 0x0080
#define MF_APPEND 0x0100
#define MF_DELETE 0x0200
#define MF_REMOVE 0x1000
/* Menu flags for Add/Check/EnableMenuItem() */ #define MF_BYCOMMAND 0x0000
#define MF_BYPOSITION 0x0400
#define MF_SEPARATOR 0x0800
#define MF_ENABLED 0x0000
#define MF_GRAYED 0x0001
#define MF_DISABLED 0x0002
#define MF_UNCHECKED 0x0000
#define MF_CHECKED 0x0008
#define MF_USECHECKBITMAPS 0x0200
#define MF_STRING 0x0000
#define MF_BITMAP 0x0004
#define MF_OWNERDRAW 0x0100
#define MF_POPUP 0x0010
#define MF_MENUBARBREAK 0x0020
#define MF_MENUBREAK 0x0040
#define MF_UNHILITE 0x0000
#define MF_HILITE 0x0080
#define MF_SYSMENU 0x2000
#define MF_HELP 0x4000
#define MF_MOUSESELECT 0x8000
#define MF_VALID 0x4fff /* ;Internal */
#define MF_CHANGE_VALID 0x5fff /* ;Internal */
#define MF_END 0x0080 /* Only valid in menu resource templates */
BOOL WINAPI EnableMenuItem(HMENU, UINT, UINT); BOOL WINAPI CheckMenuItem(HMENU, UINT, UINT);
HMENU WINAPI GetSubMenu(HMENU, int);
int WINAPI GetMenuItemCount(HMENU); UINT WINAPI GetMenuItemID(HMENU, int);
int WINAPI GetMenuString(HMENU, UINT, LPSTR, int, UINT); UINT WINAPI GetMenuState(HMENU, UINT, UINT);
BOOL WINAPI SetMenuItemBitmaps(HMENU, UINT, UINT, HBITMAP, HBITMAP); DWORD WINAPI GetMenuCheckMarkDimensions(void);
BOOL WINAPI TrackPopupMenu(HMENU, UINT, int, int, int, HWND, const RECT FAR*);
/* Flags for TrackPopupMenu */ #define TPM_LEFTBUTTON 0x0000
#if (WINVER >= 0x030a)
#define TPM_RIGHTBUTTON 0x0002
#define TPM_LEFTALIGN 0x0000
#define TPM_CENTERALIGN 0x0004
#define TPM_RIGHTALIGN 0x0008
#define TPM_VALID 0x000f /* ;Internal */
#endif /* WINVER >= 0x030a */
#endif /* NOMENUS */
/* Menu messages */ #define WM_INITMENU 0x0116
#define WM_INITMENUPOPUP 0x0117
#ifndef NOMENUS
#define WM_MENUSELECT 0x011F
#define WM_MENUCHAR 0x0120
#define WM_ENTERMENULOOP 0x0211 /* ;Internal */
#define WM_EXITMENULOOP 0x0212 /* ;Internal */
#define WM_NEXTMENU 0x0213 /* ;Internal */
#endif /* NOMENUS */
/* Menu and control command messages */ #define WM_COMMAND 0x0111
/****** Scroll bar support **************************************************/
#ifndef NOSCROLL
#define WM_HSCROLL 0x0114
#define WM_VSCROLL 0x0115
/* WM_H/VSCROLL commands */ #define SB_LINEUP 0
#define SB_LINELEFT 0
#define SB_LINEDOWN 1
#define SB_LINERIGHT 1
#define SB_PAGEUP 2
#define SB_PAGELEFT 2
#define SB_PAGEDOWN 3
#define SB_PAGERIGHT 3
#define SB_THUMBPOSITION 4
#define SB_THUMBTRACK 5
#define SB_TOP 6
#define SB_LEFT 6
#define SB_BOTTOM 7
#define SB_RIGHT 7
#define SB_ENDSCROLL 8
#define SB_MSGCMD_MAX 8 /* ;Internal */
/* Scroll bar selection constants */ #define SB_HORZ 0
#define SB_VERT 1
#define SB_CTL 2
#define SB_BOTH 3
#define SB_MAX 3 /* ;Internal */
int WINAPI SetScrollPos(HWND, int, int, BOOL); int WINAPI GetScrollPos(HWND, int); void WINAPI SetScrollRange(HWND, int, int, int, BOOL); void WINAPI GetScrollRange(HWND, int, int FAR*, int FAR*); void WINAPI ShowScrollBar(HWND, int, BOOL); BOOL WINAPI EnableScrollBar(HWND, int, UINT);
/* EnableScrollBar() flags */ #define ESB_ENABLE_BOTH 0x0000
#define ESB_DISABLE_BOTH 0x0003
#define ESB_DISABLE_LEFT 0x0001
#define ESB_DISABLE_RIGHT 0x0002
#define ESB_DISABLE_UP 0x0001
#define ESB_DISABLE_DOWN 0x0002
#define ESB_DISABLE_LTUP ESB_DISABLE_LEFT
#define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT
#define ESB_MAX 0x0003 /* ;Internal */
#define SB_DISABLE_MASK ESB_DISABLE_BOTH /* ;Internal */
#endif /* NOSCROLL */
/******* Clipboard manager **************************************************/
#ifndef NOCLIPBOARD
/* Predefined Clipboard Formats */ #define CF_TEXT 1
#define CF_BITMAP 2
#define CF_METAFILEPICT 3
#define CF_SYLK 4
#define CF_DIF 5
#define CF_TIFF 6
#define CF_OEMTEXT 7
#define CF_DIB 8
#define CF_PALETTE 9
#define CF_PENDATA 10
#define CF_RIFF 11
#define CF_WAVE 12
#define CF_OWNERDISPLAY 0x0080
#define CF_DSPTEXT 0x0081
#define CF_DSPBITMAP 0x0082
#define CF_DSPMETAFILEPICT 0x0083
/* "Private" formats don't get GlobalFree()'d */ #define CF_PRIVATEFIRST 0x0200
#define CF_PRIVATELAST 0x02FF
/* "GDIOBJ" formats do get DeleteObject()'d */ #define CF_GDIOBJFIRST 0x0300
#define CF_GDIOBJLAST 0x03FF
/* Clipboard Manager Functions */ BOOL WINAPI OpenClipboard(HWND); BOOL WINAPI CloseClipboard(void); BOOL WINAPI EmptyClipboard(void);
#if (WINVER >= 0x030a)
HWND WINAPI GetOpenClipboardWindow(void); #endif /* WINVER >= 0x030a */
HWND WINAPI GetClipboardOwner(void);
HWND WINAPI SetClipboardViewer(HWND); HWND WINAPI GetClipboardViewer(void);
HANDLE WINAPI SetClipboardData(UINT, HANDLE); HANDLE WINAPI GetClipboardData(UINT);
BOOL WINAPI IsClipboardFormatAvailable(UINT); int WINAPI GetPriorityClipboardFormat(UINT FAR*, int);
UINT WINAPI RegisterClipboardFormat(LPCSTR); int WINAPI CountClipboardFormats(void); UINT WINAPI EnumClipboardFormats(UINT); int WINAPI GetClipboardFormatName(UINT, LPSTR, int);
BOOL WINAPI ChangeClipboardChain(HWND, HWND);
/* Clipboard command messages */ #define WM_CUT 0x0300
#define WM_COPY 0x0301
#define WM_PASTE 0x0302
#define WM_CLEAR 0x0303
#define WM_UNDO 0x0304
/* Clipboard owner messages */ #define WM_RENDERFORMAT 0x0305
#define WM_RENDERALLFORMATS 0x0306
#define WM_DESTROYCLIPBOARD 0x0307
/* Clipboard viewer messages */ #define WM_DRAWCLIPBOARD 0x0308
#define WM_PAINTCLIPBOARD 0x0309
#define WM_SIZECLIPBOARD 0x030B
#define WM_VSCROLLCLIPBOARD 0x030A
#define WM_HSCROLLCLIPBOARD 0x030E
#define WM_ASKCBFORMATNAME 0x030C
#define WM_CHANGECBCHAIN 0x030D
#endif /* NOCLIPBOARD */
/****** Mouse cursor support *************************************************/
HCURSOR WINAPI LoadCursor(HINSTANCE, LPCSTR); HCURSOR WINAPI CreateCursor(HINSTANCE, int, int, int, int, const void FAR*, const void FAR*); BOOL WINAPI DestroyCursor(HCURSOR);
#if (WINVER >= 0x030a)
HCURSOR WINAPI CopyCursor(HINSTANCE, HCURSOR); #endif /* WINVER >= 0x030a */
int WINAPI ShowCursor(BOOL);
void WINAPI SetCursorPos(int, int); void WINAPI GetCursorPos(POINT FAR*);
HCURSOR WINAPI SetCursor(HCURSOR);
#if (WINVER >= 0x030a)
HCURSOR WINAPI GetCursor(void); #endif /* WINVER >= 0x030a */
void WINAPI ClipCursor(const RECT FAR*); #if (WINVER >= 0x030a)
void WINAPI GetClipCursor(RECT FAR*); #endif /* WINVER >= 0x030a */
/* Standard cursor resource IDs */ #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)
#define IDC_ICON MAKEINTRESOURCE(32641)
#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
#define IDC_SIZENESW MAKEINTRESOURCE(32643)
#define IDC_SIZEWE MAKEINTRESOURCE(32644)
#define IDC_SIZENS MAKEINTRESOURCE(32645)
#define WM_SETCURSOR 0x0020
/****** Icon support *********************************************************/
HICON WINAPI LoadIcon(HINSTANCE, LPCSTR); HICON WINAPI CreateIcon(HINSTANCE, int, int, BYTE, BYTE, const void FAR*, const void FAR*); BOOL WINAPI DestroyIcon(HICON);
#if (WINVER >= 0x030a)
HICON WINAPI CopyIcon(HINSTANCE, HICON); #endif /* WINVER >= 0x030a */
BOOL WINAPI DrawIcon(HDC, int, int, HICON);
#ifndef NOICONS
/* Standard icon resource IDs */ #define IDI_APPLICATION MAKEINTRESOURCE(32512)
#define IDI_HAND MAKEINTRESOURCE(32513)
#define IDI_QUESTION MAKEINTRESOURCE(32514)
#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
#define IDI_ASTERISK MAKEINTRESOURCE(32516)
#endif /* NOICONS */
/****** Message Box support *************************************************/
#ifndef NOMB
int WINAPI MessageBox(HWND, LPCSTR, LPCSTR, UINT); void WINAPI MessageBeep(UINT);
#define MB_OK 0x0000
#define MB_OKCANCEL 0x0001
#define MB_ABORTRETRYIGNORE 0x0002
#define MB_YESNOCANCEL 0x0003
#define MB_YESNO 0x0004
#define MB_RETRYCANCEL 0x0005
#define MB_TYPEMASK 0x000F
#define MB_ICONHAND 0x0010
#define MB_ICONQUESTION 0x0020
#define MB_ICONEXCLAMATION 0x0030
#define MB_ICONASTERISK 0x0040
#define MB_ICONMASK 0x00F0
#define MB_ICONINFORMATION MB_ICONASTERISK
#define MB_ICONSTOP MB_ICONHAND
#define MB_DEFBUTTON1 0x0000
#define MB_DEFBUTTON2 0x0100
#define MB_DEFBUTTON3 0x0200
#define MB_DEFMASK 0x0F00
#define MB_APPLMODAL 0x0000
#define MB_SYSTEMMODAL 0x1000
#define MB_TASKMODAL 0x2000
#define MB_NOFOCUS 0x8000
#define MB_TYPEMASK 0x000F /* ;Internal */
#define MB_ICONMASK 0x00F0 /* ;Internal */
#define MB_DEFMASK 0x0F00 /* ;Internal */
#define MB_MODEMASK 0x3000 /* ;Internal */
#define MB_MISCMASK 0xC000 /* ;Internal */
#define MB_VALID 0xb377 /* ;Internal */
#endif /* NOMB */
/****** Caret support ********************************************************/
void WINAPI CreateCaret(HWND, HBITMAP, int, int); void WINAPI DestroyCaret(void);
void WINAPI SetCaretPos(int, int); void WINAPI GetCaretPos(POINT FAR*);
void WINAPI HideCaret(HWND); void WINAPI ShowCaret(HWND);
UINT WINAPI GetCaretBlinkTime(void); void WINAPI SetCaretBlinkTime(UINT);
/****** WM_SYSCOMMAND support ***********************************************/
#define WM_SYSCOMMAND 0x0112
#ifndef NOSYSCOMMANDS
/* System Menu Command Values */ #define SC_SIZE 0xF000
#define SC_MOVE 0xF010
#define SC_MINIMIZE 0xF020
#define SC_MAXIMIZE 0xF030
#define SC_NEXTWINDOW 0xF040
#define SC_PREVWINDOW 0xF050
#define SC_CLOSE 0xF060
#define SC_VSCROLL 0xF070
#define SC_HSCROLL 0xF080
#define SC_MOUSEMENU 0xF090
#define SC_KEYMENU 0xF100
#define SC_ARRANGE 0xF110
#define SC_RESTORE 0xF120
#define SC_TASKLIST 0xF130
#define SC_SCREENSAVE 0xF140
#define SC_HOTKEY 0xF150
/* Obsolete names */ #define SC_ICON SC_MINIMIZE
#define SC_ZOOM SC_MAXIMIZE
/* SC_HOTKEY support messages */ /* ;Internal */ #define WM_SETHOTKEY 0x0032 /* ;Internal */
#define WM_GETHOTKEY 0x0033 /* ;Internal */
#endif /* NOSYSCOMMANDS */
/****** MDI Support *********************************************************/
#ifndef NOMDI
/* CreateWindow lpParams structure for creating MDI client */ typedef struct tagCLIENTCREATESTRUCT { HMENU hWindowMenu; UINT idFirstChild; } CLIENTCREATESTRUCT; typedef CLIENTCREATESTRUCT FAR* LPCLIENTCREATESTRUCT;
/* MDI client style bits */ #if (WINVER >= 0x030a)
#define MDIS_ALLCHILDSTYLES 0x0001
#endif /* WINVER >= 0x030a */
/* MDI messages */ #define WM_MDICREATE 0x0220
#define WM_MDIDESTROY 0x0221
#define WM_MDIACTIVATE 0x0222
#define WM_MDIRESTORE 0x0223
#define WM_MDINEXT 0x0224
#define WM_MDIMAXIMIZE 0x0225
#define WM_MDITILE 0x0226
#define WM_MDICASCADE 0x0227
#define WM_MDIICONARRANGE 0x0228
#define WM_MDIGETACTIVE 0x0229
#define WM_MDISETMENU 0x0230
/* WM_MDICREATE message structure */ typedef struct tagMDICREATESTRUCT { LPCSTR szClass; LPCSTR szTitle; HINSTANCE hOwner; int x; int y; int cx; int cy; DWORD style; LPARAM lParam; } MDICREATESTRUCT; typedef MDICREATESTRUCT FAR* LPMDICREATESTRUCT;
#if (WINVER >= 0x030a)
/* wParam values for WM_MDITILE and WM_MDICASCADE messages. */ #define MDITILE_VERTICAL 0x0000
#define MDITILE_HORIZONTAL 0x0001
#define MDITILE_SKIPDISABLED 0x0002
#endif /* WINVER >= 0x030a */
#define WM_CHILDACTIVATE 0x0022
LRESULT WINAPI DefFrameProc(HWND, HWND, UINT, WPARAM, LPARAM); LRESULT WINAPI DefMDIChildProc(HWND, UINT, WPARAM, LPARAM);
#ifndef NOMSG
BOOL WINAPI TranslateMDISysAccel(HWND, MSG FAR*); #endif
UINT WINAPI ArrangeIconicWindows(HWND);
#endif /* NOMDI */
/****** Dialog and Control Management ***************************************/
#ifndef NOCTLMGR
/* Dialog window class */ #define WC_DIALOG (MAKEINTATOM(0x8002))
/* cbWndExtra bytes needed by dialog manager for dialog classes */ #define DLGWINDOWEXTRA 30
/* Dialog styles */ #define DS_ABSALIGN 0x01L
#define DS_SYSMODAL 0x02L
#define DS_LOCALEDIT 0x20L
#define DS_SETFONT 0x40L
#define DS_MODALFRAME 0x80L
#define DS_NOIDLEMSG 0x100L
/* Dialog messages */ #define DM_GETDEFID (WM_USER+0)
#define DM_SETDEFID (WM_USER+1)
/* Returned in HIWORD() of DM_GETDEFID result if msg is supported */ #define DC_HASDEFID 0x534B
#endif /* NOCTLMGR */
/* Dialog notification messages */ #define WM_INITDIALOG 0x0110
#define WM_NEXTDLGCTL 0x0028
#define WM_ALTTABACTIVE 0x0029 /* ;Internal */
#define WM_PARENTNOTIFY 0x0210
#define WM_ENTERIDLE 0x0121
#ifndef NOCTLMGR
#ifdef STRICT
typedef BOOL (CALLBACK* DLGPROC)(HWND, UINT, WPARAM, LPARAM); #else
typedef FARPROC DLGPROC; #endif
/* Get/SetWindowWord/Long offsets for use with WC_DIALOG windows */ #define DWL_MSGRESULT 0
#define DWL_DLGPROC 4
#define DWL_USER 8
#ifndef NOMSG
BOOL WINAPI IsDialogMessage(HWND, MSG FAR*); #endif
LRESULT WINAPI DefDlgProc(HWND, UINT, WPARAM, LPARAM);
HWND WINAPI CreateDialog(HINSTANCE, LPCSTR, HWND, DLGPROC); HWND WINAPI CreateDialogIndirect(HINSTANCE, const void FAR*, HWND, DLGPROC); HWND WINAPI CreateDialogParam(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); HWND WINAPI CreateDialogIndirectParam(HINSTANCE, const void FAR*, HWND, DLGPROC, LPARAM);
int WINAPI DialogBox(HINSTANCE, LPCSTR, HWND, DLGPROC); int WINAPI DialogBoxIndirect(HINSTANCE, HGLOBAL, HWND, DLGPROC); int WINAPI DialogBoxParam(HINSTANCE, LPCSTR, HWND, DLGPROC, LPARAM); int WINAPI DialogBoxIndirectParam(HINSTANCE, HGLOBAL, HWND, DLGPROC, LPARAM);
void WINAPI EndDialog(HWND, int);
int WINAPI GetDlgCtrlID(HWND); HWND WINAPI GetDlgItem(HWND, int); LRESULT WINAPI SendDlgItemMessage(HWND, int, UINT, WPARAM, LPARAM);
void WINAPI SetDlgItemInt(HWND, int, UINT, BOOL); UINT WINAPI GetDlgItemInt(HWND, int, BOOL FAR* , BOOL);
void WINAPI SetDlgItemText(HWND, int, LPCSTR); int WINAPI GetDlgItemText(HWND, int, LPSTR, int);
void WINAPI CheckDlgButton(HWND, int, UINT); void WINAPI CheckRadioButton(HWND, int, int, int); UINT WINAPI IsDlgButtonChecked(HWND, int);
HWND WINAPI GetNextDlgGroupItem(HWND, HWND, BOOL); HWND WINAPI GetNextDlgTabItem(HWND, HWND, BOOL);
void WINAPI MapDialogRect(HWND, RECT FAR*); DWORD WINAPI GetDialogBaseUnits(void);
#define WM_GETDLGCODE 0x0087
/* dialog codes */ #define DLGC_WANTARROWS 0x0001
#define DLGC_WANTTAB 0x0002
#define DLGC_WANTALLKEYS 0x0004
#define DLGC_WANTMESSAGE 0x0004
#define DLGC_HASSETSEL 0x0008
#define DLGC_DEFPUSHBUTTON 0x0010
#define DLGC_UNDEFPUSHBUTTON 0x0020
#define DLGC_RADIOBUTTON 0x0040
#define DLGC_WANTCHARS 0x0080
#define DLGC_STATIC 0x0100
#define DLGC_BUTTON 0x2000
#define WM_CTLCOLOR 0x0019
/* WM_CTLCOLOR control IDs */ #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 8 /* ;Internal */
#define WM_SETFONT 0x0030
#define WM_GETFONT 0x0031
#endif /* NOCTLMGR */
/* Standard dialog button IDs */ #define IDOK 1
#define IDCANCEL 2
#define IDABORT 3
#define IDRETRY 4
#define IDIGNORE 5
#define IDYES 6
#define IDNO 7
/****** Owner draw control support ******************************************/
/* Owner draw control types */ #define ODT_MENU 1
#define ODT_LISTBOX 2
#define ODT_COMBOBOX 3
#define ODT_BUTTON 4
/* Owner draw actions */ #define ODA_DRAWENTIRE 0x0001
#define ODA_SELECT 0x0002
#define ODA_FOCUS 0x0004
/* Owner draw state */ #define ODS_SELECTED 0x0001
#define ODS_GRAYED 0x0002
#define ODS_DISABLED 0x0004
#define ODS_CHECKED 0x0008
#define ODS_FOCUS 0x0010
#define WM_DRAWITEM 0x002B
typedef struct tagDRAWITEMSTRUCT { UINT CtlType; UINT CtlID; UINT itemID; UINT itemAction; UINT itemState; HWND hwndItem; HDC hDC; RECT rcItem; DWORD itemData; } DRAWITEMSTRUCT; typedef DRAWITEMSTRUCT NEAR* PDRAWITEMSTRUCT; typedef DRAWITEMSTRUCT FAR* LPDRAWITEMSTRUCT;
#define WM_MEASUREITEM 0x002C
typedef struct tagMEASUREITEMSTRUCT { UINT CtlType; UINT CtlID; UINT itemID; UINT itemWidth; UINT itemHeight; DWORD itemData; } MEASUREITEMSTRUCT; typedef MEASUREITEMSTRUCT NEAR* PMEASUREITEMSTRUCT; typedef MEASUREITEMSTRUCT FAR* LPMEASUREITEMSTRUCT;
#define WM_DELETEITEM 0x002D
typedef struct tagDELETEITEMSTRUCT { UINT CtlType; UINT CtlID; UINT itemID; HWND hwndItem; DWORD itemData; } DELETEITEMSTRUCT; typedef DELETEITEMSTRUCT NEAR* PDELETEITEMSTRUCT; typedef DELETEITEMSTRUCT FAR* LPDELETEITEMSTRUCT;
#define WM_COMPAREITEM 0x0039
typedef struct tagCOMPAREITEMSTRUCT { UINT CtlType; UINT CtlID; HWND hwndItem; UINT itemID1; DWORD itemData1; UINT itemID2; DWORD itemData2; } COMPAREITEMSTRUCT; typedef COMPAREITEMSTRUCT NEAR* PCOMPAREITEMSTRUCT; typedef COMPAREITEMSTRUCT FAR* LPCOMPAREITEMSTRUCT;
/****** Static control ******************************************************/
#ifndef NOCTLMGR
/* Static Control Styles */ #define SS_LEFT 0x00000000L
#define SS_CENTER 0x00000001L
#define SS_RIGHT 0x00000002L
#define SS_ICON 0x00000003L
#define SS_BLACKRECT 0x00000004L
#define SS_GRAYRECT 0x00000005L
#define SS_WHITERECT 0x00000006L
#define SS_BLACKFRAME 0x00000007L
#define SS_GRAYFRAME 0x00000008L
#define SS_WHITEFRAME 0x00000009L
#define SS_USERITEM 0x0000000AL /* ;Internal */
#define SS_SIMPLE 0x0000000BL
#define SS_LEFTNOWORDWRAP 0x0000000CL
#define SS_NOPREFIX 0x00000080L
#if (WINVER >= 0x030a)
#ifndef NOWINMESSAGES
/* Static Control Mesages */ #define STM_SETICON (WM_USER+0)
#define STM_GETICON (WM_USER+1)
#define STM_MSGMAX (WM_USER+2) /* ;Internal */
#endif /* NOWINMESSAGES */
#endif /* WINVER >= 0x030a */
#endif /* NOCTLMGR */
/****** Button control *****************************************************/
#ifndef NOCTLMGR
/* 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 /* ;Internal */
#define BS_OWNERDRAW 0x0000000BL
#define BS_LEFTTEXT 0x00000020L
/* Button Control Messages */ #define BM_GETCHECK (WM_USER+0)
#define BM_SETCHECK (WM_USER+1)
#define BM_GETSTATE (WM_USER+2)
#define BM_SETSTATE (WM_USER+3)
#define BM_SETSTYLE (WM_USER+4)
/* User Button Notification Codes */ #define BN_CLICKED 0
#define BN_PAINT 1
#define BN_HILITE 2
#define BN_UNHILITE 3
#define BN_DISABLE 4
#define BN_DOUBLECLICKED 5
#endif /* NOCTLMGR */
/****** Edit control *******************************************************/
#ifndef NOCTLMGR
/* Edit control styles */ #ifndef NOWINSTYLES
#define ES_LEFT 0x00000000L
#define ES_CENTER 0x00000001L
#define ES_RIGHT 0x00000002L
#define ES_MULTILINE 0x00000004L
#define ES_UPPERCASE 0x00000008L
#define ES_LOWERCASE 0x00000010L
#define ES_PASSWORD 0x00000020L
#define ES_AUTOVSCROLL 0x00000040L
#define ES_AUTOHSCROLL 0x00000080L
#define ES_NOHIDESEL 0x00000100L
#define ES_OEMCONVERT 0x00000400L
#if (WINVER >= 0x030a)
#define ES_READONLY 0x00000800L
#define ES_WANTRETURN 0x00001000L
#endif /* WINVER >= 0x030a */
#endif /* NOWINSTYLES */
/* Edit control messages */ #ifndef NOWINMESSAGES
#define EM_GETSEL (WM_USER+0)
#define EM_SETSEL (WM_USER+1)
#define EM_GETRECT (WM_USER+2)
#define EM_SETRECT (WM_USER+3)
#define EM_SETRECTNP (WM_USER+4)
#define EM_SCROLL (WM_USER+5) /* ;Internal */
#define EM_LINESCROLL (WM_USER+6)
#define EM_GETMODIFY (WM_USER+8)
#define EM_SETMODIFY (WM_USER+9)
#define EM_GETLINECOUNT (WM_USER+10)
#define EM_LINEINDEX (WM_USER+11)
#define EM_SETHANDLE (WM_USER+12)
#define EM_GETHANDLE (WM_USER+13)
#define EM_GETTHUMB (WM_USER+14) /* ;Internal */
#define EM_LINELENGTH (WM_USER+17)
#define EM_REPLACESEL (WM_USER+18)
#define EM_SETFONT (WM_USER+19) /* NOT IMPLEMENTED: use WM_SETFONT */
#define EM_GETLINE (WM_USER+20)
#define EM_LIMITTEXT (WM_USER+21)
#define EM_CANUNDO (WM_USER+22)
#define EM_UNDO (WM_USER+23)
#define EM_FMTLINES (WM_USER+24)
#define EM_LINEFROMCHAR (WM_USER+25)
#define EM_SETWORDBREAK (WM_USER+26) /* NOT IMPLEMENTED: use EM_SETWORDBREAK */
#define EM_SETTABSTOPS (WM_USER+27)
#define EM_SETPASSWORDCHAR (WM_USER+28)
#define EM_EMPTYUNDOBUFFER (WM_USER+29)
#if (WINVER >= 0x030a)
#define EM_GETFIRSTVISIBLELINE (WM_USER+30)
#define EM_SETREADONLY (WM_USER+31)
#define EM_SETWORDBREAKPROC (WM_USER+32)
#define EM_GETWORDBREAKPROC (WM_USER+33)
#define EM_GETPASSWORDCHAR (WM_USER+34)
#endif /* WINVER >= 0x030a */
#define EM_MSGMAX (WM_USER+35) /* ;Internal */
#endif /* NOWINMESSAGES */
#if (WINVER >= 0x030a)
typedef int (CALLBACK* EDITWORDBREAKPROC)(LPSTR lpch, int ichCurrent, int cch, int code);
/* EDITWORDBREAKPROC code values */ #define WB_LEFT 0
#define WB_RIGHT 1
#define WB_ISDELIMITER 2
#endif /* WINVER >= 0x030a */
/* Edit control notification codes */ #define EN_SETFOCUS 0x0100
#define EN_KILLFOCUS 0x0200
#define EN_CHANGE 0x0300
#define EN_UPDATE 0x0400
#define EN_ERRSPACE 0x0500
#define EN_MAXTEXT 0x0501
#define EN_HSCROLL 0x0601
#define EN_VSCROLL 0x0602
#endif /* NOCTLMGR */
/****** Scroll bar control *************************************************/ /* Also see scrolling support */
#ifndef NOCTLMGR
#ifndef NOWINSTYLES
/* Scroll bar styles */ #define SBS_HORZ 0x0000L
#define SBS_VERT 0x0001L
#define SBS_TOPALIGN 0x0002L
#define SBS_LEFTALIGN 0x0002L
#define SBS_BOTTOMALIGN 0x0004L
#define SBS_RIGHTALIGN 0x0004L
#define SBS_SIZEBOXTOPLEFTALIGN 0x0002L
#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x0004L
#define SBS_SIZEBOX 0x0008L
#endif /* NOWINSTYLES */
#endif /* NOCTLMGR */
/****** Listbox control ****************************************************/
#ifndef NOCTLMGR
/* Listbox styles */ #ifndef NOWINSTYLES
#define LBS_NOTIFY 0x0001L
#define LBS_SORT 0x0002L
#define LBS_NOREDRAW 0x0004L
#define LBS_MULTIPLESEL 0x0008L
#define LBS_OWNERDRAWFIXED 0x0010L
#define LBS_OWNERDRAWVARIABLE 0x0020L
#define LBS_HASSTRINGS 0x0040L
#define LBS_USETABSTOPS 0x0080L
#define LBS_NOINTEGRALHEIGHT 0x0100L
#define LBS_MULTICOLUMN 0x0200L
#define LBS_WANTKEYBOARDINPUT 0x0400L
#define LBS_EXTENDEDSEL 0x0800L
#if (WINVER >= 0x030a)
#define LBS_DISABLENOSCROLL 0x1000L
#endif /* WINVER >= 0x030a */
#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
#endif /* NOWINSTYLES */
/* Listbox messages */ #ifndef NOWINMESSAGES
#define LB_ADDSTRING (WM_USER+1)
#define LB_INSERTSTRING (WM_USER+2)
#define LB_DELETESTRING (WM_USER+3)
#define LB_RESETCONTENT (WM_USER+5)
#define LB_SETSEL (WM_USER+6)
#define LB_SETCURSEL (WM_USER+7)
#define LB_GETSEL (WM_USER+8)
#define LB_GETCURSEL (WM_USER+9)
#define LB_GETTEXT (WM_USER+10)
#define LB_GETTEXTLEN (WM_USER+11)
#define LB_GETCOUNT (WM_USER+12)
#define LB_SELECTSTRING (WM_USER+13)
#define LB_DIR (WM_USER+14)
#define LB_GETTOPINDEX (WM_USER+15)
#define LB_FINDSTRING (WM_USER+16)
#define LB_GETSELCOUNT (WM_USER+17)
#define LB_GETSELITEMS (WM_USER+18)
#define LB_SETTABSTOPS (WM_USER+19)
#define LB_GETHORIZONTALEXTENT (WM_USER+20)
#define LB_SETHORIZONTALEXTENT (WM_USER+21)
#define LB_SETCOLUMNWIDTH (WM_USER+22)
#define LB_ADDFILE (WM_USER+23) /* ;Internal */
#define LB_SETTOPINDEX (WM_USER+24)
#define LB_GETITEMRECT (WM_USER+25)
#define LB_GETITEMDATA (WM_USER+26)
#define LB_SETITEMDATA (WM_USER+27)
#define LB_SELITEMRANGE (WM_USER+28)
#define LB_SETANCHORINDEX (WM_USER+29) /* ;Internal */
#define LB_GETANCHORINDEX (WM_USER+30) /* ;Internal */
#define LB_SETCARETINDEX (WM_USER+31)
#define LB_GETCARETINDEX (WM_USER+32)
#if (WINVER >= 0x030a)
#define LB_SETITEMHEIGHT (WM_USER+33)
#define LB_GETITEMHEIGHT (WM_USER+34)
#define LB_FINDSTRINGEXACT (WM_USER+35)
#endif /* WINVER >= 0x030a */
#define LBCB_CARETON (WM_USER+36) /* ;Internal */
#define LBCB_CARETOFF (WM_USER+37) /* ;Internal */
#define LB_MSGMAX (WM_USER+38) /* ;Internal */
#endif /* NOWINMESSAGES */
/* Listbox notification codes */ #define LBN_ERRSPACE (-2)
#define LBN_SELCHANGE 1
#define LBN_DBLCLK 2
#define LBN_SELCANCEL 3
#define LBN_SETFOCUS 4
#define LBN_KILLFOCUS 5
/* Listbox notification messages */ #define WM_VKEYTOITEM 0x002E
#define WM_CHARTOITEM 0x002F
#define WM_LBTRACKPOINT 0x0131 /* ;Internal */
/* Listbox message return values */ #define LB_OKAY 0
#define LB_ERR (-1)
#define LB_ERRSPACE (-2)
#define LB_CTLCODE 0L
/****** Dialog directory support ********************************************/
int WINAPI DlgDirList(HWND, LPSTR, int, int, UINT); BOOL WINAPI DlgDirSelect(HWND, LPSTR, int);
int WINAPI DlgDirListComboBox(HWND, LPSTR, int, int, UINT); BOOL WINAPI DlgDirSelectComboBox(HWND, LPSTR, int);
#if (WINVER >= 0x030a)
BOOL WINAPI DlgDirSelectEx(HWND, LPSTR, int, int); BOOL WINAPI DlgDirSelectComboBoxEx(HWND, LPSTR, int, int); #endif /* WINVER >= 0x030a */
#define LBD_UPPERCASE 0x8001 /* ;Internal */
#define LBD_SIZE 0x8002 /* ;Internal */
#define LBD_DATE 0x8004 /* ;Internal */
#define LBD_TIME 0x8008 /* ;Internal */
#define LBD_ATTRIBUTE 0x8010 /* ;Internal */
#define LBD_FULLDETAILS 0x801E /* ;Internal */
#define LBD_SENDDETAILS 0x8020 /* ;Internal */
/* DlgDirList, DlgDirListComboBox flags values */ #define DDL_READWRITE 0x0000
#define DDL_READONLY 0x0001
#define DDL_HIDDEN 0x0002
#define DDL_SYSTEM 0x0004
#define DDL_DIRECTORY 0x0010
#define DDL_ARCHIVE 0x0020
#define DDL_POSTMSGS 0x2000
#define DDL_DRIVES 0x4000
#define DDL_EXCLUSIVE 0x8000
#define DDL_VALID 0xe03f /* ;Internal */
#endif /* NOCTLMGR */
/****** Combo box control **************************************************/
#ifndef NOCTLMGR
/* Combo box styles */ #ifndef NOWINSTYLES
#define CBS_SIMPLE 0x0001L
#define CBS_DROPDOWN 0x0002L
#define CBS_DROPDOWNLIST 0x0003L
#define CBS_OWNERDRAWFIXED 0x0010L
#define CBS_OWNERDRAWVARIABLE 0x0020L
#define CBS_AUTOHSCROLL 0x0040L
#define CBS_OEMCONVERT 0x0080L
#define CBS_SORT 0x0100L
#define CBS_HASSTRINGS 0x0200L
#define CBS_NOINTEGRALHEIGHT 0x0400L
#if (WINVER >= 0x030a)
#define CBS_DISABLENOSCROLL 0x0800L
#endif /* WINVER >= 0x030a */
#endif /* NOWINSTYLES */
/* Combo box messages */ #ifndef NOWINMESSAGES
#define CB_GETEDITSEL (WM_USER+0)
#define CB_LIMITTEXT (WM_USER+1)
#define CB_SETEDITSEL (WM_USER+2)
#define CB_ADDSTRING (WM_USER+3)
#define CB_DELETESTRING (WM_USER+4)
#define CB_DIR (WM_USER+5)
#define CB_GETCOUNT (WM_USER+6)
#define CB_GETCURSEL (WM_USER+7)
#define CB_GETLBTEXT (WM_USER+8)
#define CB_GETLBTEXTLEN (WM_USER+9)
#define CB_INSERTSTRING (WM_USER+10)
#define CB_RESETCONTENT (WM_USER+11)
#define CB_FINDSTRING (WM_USER+12)
#define CB_SELECTSTRING (WM_USER+13)
#define CB_SETCURSEL (WM_USER+14)
#define CB_SHOWDROPDOWN (WM_USER+15)
#define CB_GETITEMDATA (WM_USER+16)
#define CB_SETITEMDATA (WM_USER+17)
#if (WINVER >= 0x030a)
#define CB_GETDROPPEDCONTROLRECT (WM_USER+18)
#define CB_SETITEMHEIGHT (WM_USER+19)
#define CB_GETITEMHEIGHT (WM_USER+20)
#define CB_SETEXTENDEDUI (WM_USER+21)
#define CB_GETEXTENDEDUI (WM_USER+22)
#define CB_GETDROPPEDSTATE (WM_USER+23)
#define CB_FINDSTRINGEXACT (WM_USER+24)
#endif /* WINVER >= 0x030a */
#define CB_MSGMAX (WM_USER+25) /* ;Internal */
#endif /* NOWINMESSAGES */
/* Combo box notification codes */ #define CBN_ERRSPACE (-1)
#define CBN_SELCHANGE 1
#define CBN_DBLCLK 2
#define CBN_SETFOCUS 3
#define CBN_KILLFOCUS 4
#define CBN_EDITCHANGE 5
#define CBN_EDITUPDATE 6
#define CBN_DROPDOWN 7
#if (WINVER >= 0x030a)
#define CBN_CLOSEUP 8
#define CBN_SELENDOK 9
#define CBN_SELENDCANCEL 10
#endif /* WINVER >= 0x030a */
/* Combo box message return values */ #define CB_OKAY 0
#define CB_ERR (-1)
#define CB_ERRSPACE (-2)
#endif /* NOCTLMGR */
/******* Windows hook support **********************************************/
#ifndef NOWH
DECLARE_HANDLE32(HHOOK);
#ifdef STRICT
typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam); #else
typedef FARPROC HOOKPROC; #endif
#ifdef STRICT
HHOOK WINAPI SetWindowsHook(int, HOOKPROC); LRESULT WINAPI DefHookProc(int, WPARAM, LPARAM, HHOOK FAR*); #else
HOOKPROC WINAPI SetWindowsHook(int, HOOKPROC); LRESULT WINAPI DefHookProc(int, WPARAM, LPARAM, HOOKPROC FAR*); #endif
BOOL WINAPI UnhookWindowsHook(int, HOOKPROC);
#if (WINVER >= 0x030a)
HHOOK WINAPI SetWindowsHookEx(int idHook, HOOKPROC lpfn, HINSTANCE hInstance, HTASK hTask); BOOL WINAPI UnhookWindowsHookEx(HHOOK hHook); LRESULT WINAPI CallNextHookEx(HHOOK hHook, int code, WPARAM wParam, LPARAM lParam);
#endif /* WINVER >= 0x030a */
#define WH_MIN (-1) /* ;Internal */
#define WH_MAX 10 /* ;Internal */
#define WH_MINHOOK WH_MIN /* ;Internal */
#define WH_MAXHOOK WH_MAX /* ;Internal */
#define WH_CHOOKS (WH_MAXHOOK - WH_MINHOOK + 1) /* ;Internal */
/* Standard hook code */ #define HC_ACTION 0
/* Obsolete hook codes (NO LONGER SUPPORTED) */ #define HC_GETLPLPFN (-3)
#define HC_LPLPFNNEXT (-2)
#define HC_LPFNNEXT (-1)
#endif /* NOWH */
/****** Computer-based-training (CBT) support *******************************/
#define WM_QUEUESYNC 0x0023
#ifndef NOWH
/* SetWindowsHook() code */ #define WH_CBT 5
#define HCBT_MOVESIZE 0
#define HCBT_MINMAX 1
#define HCBT_QS 2
#define HCBT_CREATEWND 3
#define HCBT_DESTROYWND 4
#define HCBT_ACTIVATE 5
#define HCBT_CLICKSKIPPED 6
#define HCBT_KEYSKIPPED 7
#define HCBT_SYSCOMMAND 8
#define HCBT_SETFOCUS 9
#if (WINVER >= 0x030a)
/* HCBT_CREATEWND parameters pointed to by lParam */ typedef struct tagCBT_CREATEWND { CREATESTRUCT FAR* lpcs; HWND hwndInsertAfter; } CBT_CREATEWND; typedef CBT_CREATEWND FAR* LPCBT_CREATEWND;
/* HCBT_ACTIVATE structure pointed to by lParam */ typedef struct tagCBTACTIVATESTRUCT { BOOL fMouse; HWND hWndActive; } CBTACTIVATESTRUCT;
#endif /* WINVER >= 0x030a */
#endif /* NOWH */
/****** Hardware hook support ***********************************************/
#ifndef NOWH
#if (WINVER >= 0x030a)
#define WH_HARDWARE 8
typedef struct tagHARDWAREHOOKSTRUCT { HWND hWnd; UINT wMessage; WPARAM wParam; LPARAM lParam; } HARDWAREHOOKSTRUCT; #endif /* WINVER >= 0x030a */
#endif /* NOWH */
/****** Shell support *******************************************************/
#ifndef NOWH
#if (WINVER >= 0x030a)
/* SetWindowsHook() Shell hook code */ #define WH_SHELL 10
#define HSHELL_WINDOWCREATED 1
#define HSHELL_WINDOWDESTROYED 2
#define HSHELL_ACTIVATESHELLWINDOW 3
#endif /* WINVER >= 0x030a */
#endif /* NOWH */
/****** Journalling support *************************************************/
#ifndef NOWH
#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
/* Journalling hook codes */ #define HC_GETNEXT 1
#define HC_SKIP 2
#define HC_NOREMOVE 3
#define HC_NOREM HC_NOREMOVE
#define HC_SYSMODALON 4
#define HC_SYSMODALOFF 5
/* Journalling message structure */ typedef struct tagEVENTMSG { UINT message; UINT paramL; UINT paramH; DWORD time; } EVENTMSG; typedef EVENTMSG *PEVENTMSG; typedef EVENTMSG *PEVENTMSGMSG; /* ;Internal */ typedef EVENTMSG NEAR* NPEVENTMSG; typedef EVENTMSG FAR* LPEVENTMSG; typedef EVENTMSG FAR* LPEVENTMSGMSG; /* ;Internal */
BOOL WINAPI EnableHardwareInput(BOOL);
#endif /* NOWH */
/****** Debugger support ****************************************************/
#if (WINVER >= 0x030a)
/* SetWindowsHook debug hook support */ #define WH_DEBUG 9
typedef struct tagDEBUGHOOKINFO { HMODULE hModuleHook; LPARAM reserved; LPARAM lParam; WPARAM wParam; int code; } DEBUGHOOKINFO; typedef DEBUGHOOKINFO FAR* LPDEBUGHOOKINFO;
#ifndef NOMSG
BOOL WINAPI QuerySendMessage(HANDLE h1, HANDLE h2, HANDLE h3, LPMSG lpmsg); #endif /* NOMSG */
BOOL WINAPI LockInput(HANDLE h1, HWND hwndInput, BOOL fLock);
LONG WINAPI GetSystemDebugState(void); /* Flags returned by GetSystemDebugState.
*/ #define SDS_MENU 0x0001
#define SDS_SYSMODAL 0x0002
#define SDS_NOTASKQUEUE 0x0004
#define SDS_DIALOG 0x0008
#define SDS_TASKLOCKED 0x0010
#endif /* WINVER >= 0x030a */
/****** Help support ********************************************************/
#ifndef NOHELP
BOOL WINAPI WinHelp(HWND hwndMain, LPCSTR lpszHelp, UINT usCommand, DWORD ulData);
/* WinHelp() commands */ #define HELP_CONTEXT 0x0001
#define HELP_QUIT 0x0002
#define HELP_INDEX 0x0003
#define HELP_CONTENTS 0x0003
#define HELP_HELPONHELP 0x0004
#define HELP_SETINDEX 0x0005
#define HELP_SETCONTENTS 0x0005
#define HELP_CONTEXTPOPUP 0x0008
#define HELP_FORCEFILE 0x0009
#define HELP_KEY 0x0101
#define HELP_COMMAND 0x0102
#define HELP_PARTIALKEY 0x0105
#define HELP_MULTIKEY 0x0201
#define HELP_SETWINPOS 0x0203
typedef struct tagMULTIKEYHELP { UINT mkSize; BYTE mkKeylist; BYTE szKeyphrase[1]; } MULTIKEYHELP;
typedef struct { int wStructSize; int x; int y; int dx; int dy; int wMax; char rgchMember[2]; } HELPWININFO; typedef HELPWININFO NEAR* PHELPWININFO; typedef HELPWININFO FAR* LPHELPWININFO;
#endif /* NOHELP */
/****** Sound support ******************************************************/
#ifndef NOSOUND
int WINAPI OpenSound(void); void WINAPI CloseSound(void);
int WINAPI StartSound(void); int WINAPI StopSound(void);
int WINAPI SetVoiceQueueSize(int, int); int WINAPI SetVoiceNote(int, int, int, int); int WINAPI SetVoiceAccent(int, int, int, int, int); int WINAPI SetVoiceEnvelope(int, int, int); int WINAPI SetVoiceSound(int, DWORD, int);
int WINAPI SetVoiceThreshold(int, int); int FAR* WINAPI GetThresholdEvent(void); int WINAPI GetThresholdStatus(void);
int WINAPI SetSoundNoise(int, int);
/* SetSoundNoise() Sources */ #define S_PERIOD512 0
#define S_PERIOD1024 1
#define S_PERIOD2048 2
#define S_PERIODVOICE 3
#define S_WHITE512 4
#define S_WHITE1024 5
#define S_WHITE2048 6
#define S_WHITEVOICE 7
int WINAPI WaitSoundState(int);
/* WaitSoundState() constants */ #define S_QUEUEEMPTY 0
#define S_THRESHOLD 1
#define S_ALLTHRESHOLD 2
int WINAPI SyncAllVoices(void); int WINAPI CountVoiceNotes(int);
/* Accent Modes */ #define S_NORMAL 0
#define S_LEGATO 1
#define S_STACCATO 2
/* Error return values */ #define S_SERDVNA (-1)
#define S_SEROFM (-2)
#define S_SERMACT (-3)
#define S_SERQFUL (-4)
#define S_SERBDNT (-5)
#define S_SERDLN (-6)
#define S_SERDCC (-7)
#define S_SERDTP (-8)
#define S_SERDVL (-9)
#define S_SERDMD (-10)
#define S_SERDSH (-11)
#define S_SERDPT (-12)
#define S_SERDFQ (-13)
#define S_SERDDR (-14)
#define S_SERDSR (-15)
#define S_SERDST (-16)
#endif /* NOSOUND */
/****** Comm support ******************************************************/
#ifndef NOCOMM
#define NOPARITY 0
#define ODDPARITY 1
#define EVENPARITY 2
#define MARKPARITY 3
#define SPACEPARITY 4
#define ONESTOPBIT 0
#define ONE5STOPBITS 1
#define TWOSTOPBITS 2
#define IGNORE 0
#define INFINITE 0xFFFF
/* Error Flags */ #define CE_RXOVER 0x0001
#define CE_OVERRUN 0x0002
#define CE_RXPARITY 0x0004
#define CE_FRAME 0x0008
#define CE_BREAK 0x0010
#define CE_CTSTO 0x0020
#define CE_DSRTO 0x0040
#define CE_RLSDTO 0x0080
#define CE_TXFULL 0x0100
#define CE_PTO 0x0200
#define CE_IOE 0x0400
#define CE_DNS 0x0800
#define CE_OOP 0x1000
#define CE_MODE 0x8000
#define IE_BADID (-1)
#define IE_OPEN (-2)
#define IE_NOPEN (-3)
#define IE_MEMORY (-4)
#define IE_DEFAULT (-5)
#define IE_HARDWARE (-10)
#define IE_BYTESIZE (-11)
#define IE_BAUDRATE (-12)
/* Events */ #define EV_RXCHAR 0x0001
#define EV_RXFLAG 0x0002
#define EV_TXEMPTY 0x0004
#define EV_CTS 0x0008
#define EV_DSR 0x0010
#define EV_RLSD 0x0020
#define EV_BREAK 0x0040
#define EV_ERR 0x0080
#define EV_RING 0x0100
#define EV_PERR 0x0200
#define EV_CTSS 0x0400
#define EV_DSRS 0x0800
#define EV_RLSDS 0x1000
#define EV_RingTe 0x2000
#define EV_RINGTE EV_RingTe
#define EV_VALID 0x3fff /* ;Internal */
/* Escape Functions */ #define SETXOFF 1
#define SETXON 2
#define SETRTS 3
#define CLRRTS 4
#define SETDTR 5
#define CLRDTR 6
#define RESETDEV 7
#define LPTx 0x80
#if (WINVER >= 0x030a)
/* new escape functions */ #define GETMAXLPT 8
#define GETMAXCOM 9
#define GETBASEIRQ 10
/* Comm Baud Rate indices */ #define CBR_110 0xFF10
#define CBR_300 0xFF11
#define CBR_600 0xFF12
#define CBR_1200 0xFF13
#define CBR_2400 0xFF14
#define CBR_4800 0xFF15
#define CBR_9600 0xFF16
#define CBR_14400 0xFF17
#define CBR_19200 0xFF18
#define CBR_38400 0xFF1B
#define CBR_56000 0xFF1F
#define CBR_128000 0xFF23
#define CBR_256000 0xFF27
/* notifications passed in low word of lParam on WM_COMMNOTIFY messages */ #define CN_RECEIVE 0x0001
#define CN_TRANSMIT 0x0002
#define CN_EVENT 0x0004
#endif /* WINVER >= 0x030a */
typedef struct tagDCB { BYTE Id; UINT BaudRate; BYTE ByteSize; BYTE Parity; BYTE StopBits; UINT RlsTimeout; UINT CtsTimeout; UINT DsrTimeout;
UINT fBinary :1; UINT fRtsDisable :1; UINT fParity :1; UINT fOutxCtsFlow :1; UINT fOutxDsrFlow :1; UINT fDummy :2; UINT fDtrDisable :1;
UINT fOutX :1; UINT fInX :1; UINT fPeChar :1; UINT fNull :1; UINT fChEvt :1; UINT fDtrflow :1; UINT fRtsflow :1; UINT fDummy2 :1;
char XonChar; char XoffChar; UINT XonLim; UINT XoffLim; char PeChar; char EofChar; char EvtChar; UINT TxDelay; } DCB; typedef DCB FAR* LPDCB;
#if (defined(STRICT) | (WINVER >= 0x030a))
typedef struct tagCOMSTAT { BYTE status; UINT cbInQue; UINT cbOutQue; } COMSTAT;
#define CSTF_CTSHOLD 0x01
#define CSTF_DSRHOLD 0x02
#define CSTF_RLSDHOLD 0x04
#define CSTF_XOFFHOLD 0x08
#define CSTF_XOFFSENT 0x10
#define CSTF_EOF 0x20
#define CSTF_TXIM 0x40
#else /* (STRICT | WINVER >= 0x030a) */
/* NOTE: This structure declaration is not ANSI compatible! */ typedef struct tagCOMSTAT { BYTE fCtsHold :1; BYTE fDsrHold :1; BYTE fRlsdHold :1; BYTE fXoffHold :1; BYTE fXoffSent :1; BYTE fEof :1; BYTE fTxim :1; UINT cbInQue; UINT cbOutQue; } COMSTAT;
#endif /* !(STRICT | WINVER >= 0x030a */
int WINAPI BuildCommDCB(LPCSTR, DCB FAR*);
int WINAPI OpenComm(LPCSTR, UINT, UINT); int WINAPI CloseComm(int);
int WINAPI ReadComm(int, void FAR*, int); int WINAPI WriteComm(int, const void FAR*, int); int WINAPI UngetCommChar(int, char); int WINAPI FlushComm(int, int); int WINAPI TransmitCommChar(int, char);
int WINAPI SetCommState(const DCB FAR*); int WINAPI GetCommState(int, DCB FAR*); int WINAPI GetCommError(int, COMSTAT FAR* );
int WINAPI SetCommBreak(int); int WINAPI ClearCommBreak(int);
UINT FAR* WINAPI SetCommEventMask(int, UINT); UINT WINAPI GetCommEventMask(int, int);
LONG WINAPI EscapeCommFunction(int, int);
#if (WINVER >= 0x030a)
BOOL WINAPI EnableCommNotification(int, HWND, int, int);
#define WM_COMMNOTIFY 0x0044
#endif /* WINVER >= 0x030a */
#endif /* NOCOMM */
/****** String formatting support *******************************************/
int WINAPI wvsprintf(LPSTR lpszOut, LPCSTR lpszFmt, const void FAR* lpParams);
int FAR CDECL wsprintf(LPSTR lpszOut, LPCSTR lpszFmt, ...);
/****** Driver support ******************************************************/
#if (WINVER >= 0x030a)
#ifndef NODRIVERS
DECLARE_HANDLE(HDRVR);
typedef LRESULT (CALLBACK* DRIVERPROC)(DWORD, HDRVR, UINT, LPARAM, LPARAM);
/* Driver messages */ #define DRV_LOAD 0x0001
#define DRV_ENABLE 0x0002
#define DRV_OPEN 0x0003
#define DRV_CLOSE 0x0004
#define DRV_DISABLE 0x0005
#define DRV_FREE 0x0006
#define DRV_CONFIGURE 0x0007
#define DRV_QUERYCONFIGURE 0x0008
#define DRV_INSTALL 0x0009
#define DRV_REMOVE 0x000A
#define DRV_EXITSESSION 0x000B
#define DRV_EXITAPPLICATION 0x000C
#define DRV_POWER 0x000F
#define DRV_RESERVED 0x0800
#define DRV_USER 0x4000
/* LPARAM of DRV_CONFIGURE message */ typedef struct tagDRVCONFIGINFO { DWORD dwDCISize; LPCSTR lpszDCISectionName; LPCSTR lpszDCIAliasName; } DRVCONFIGINFO; typedef DRVCONFIGINFO NEAR* PDRVCONFIGINFO; typedef DRVCONFIGINFO FAR* LPDRVCONFIGINFO;
/* Supported return values for DRV_CONFIGURE message */ #define DRVCNF_CANCEL 0x0000
#define DRVCNF_OK 0x0001
#define DRVCNF_RESTART 0x0002
/* Supported lParam1 of DRV_EXITAPPLICATION notification */ #define DRVEA_NORMALEXIT 0x0001
#define DRVEA_ABNORMALEXIT 0x0002
LRESULT WINAPI DefDriverProc(DWORD dwDriverIdentifier, HDRVR driverID, UINT message, LPARAM lParam1, LPARAM lParam2);
HDRVR WINAPI OpenDriver(LPCSTR szDriverName, LPCSTR szSectionName, LPARAM lParam2); LRESULT WINAPI CloseDriver(HDRVR hDriver, LPARAM lParam1, LPARAM lParam2);
LRESULT WINAPI SendDriverMessage(HDRVR hDriver, UINT message, LPARAM lParam1, LPARAM lParam2);
HINSTANCE WINAPI GetDriverModuleHandle(HDRVR hDriver);
HDRVR WINAPI GetNextDriver(HDRVR, DWORD);
/* GetNextDriver flags */ #define GND_FIRSTINSTANCEONLY 0x00000001
#define GND_FORWARD 0x00000000
#define GND_REVERSE 0x00000002
#define GND_VALID 0x00000003 /* ;Internal */
typedef struct tagDRIVERINFOSTRUCT { UINT length; HDRVR hDriver; HINSTANCE hModule; char szAliasName[128]; } DRIVERINFOSTRUCT; typedef DRIVERINFOSTRUCT FAR* LPDRIVERINFOSTRUCT;
BOOL WINAPI GetDriverInfo(HDRVR, DRIVERINFOSTRUCT FAR*);
#endif /* !NODRIVERS */
#endif /* WINVER >= 0x030a */
#endif /* NOUSER */
#ifndef NOWINDOWSX /* ;Internal */
#ifndef RC_INVOKED /* ;Internal */
#include "windowsx.h" /* ;Internal */
#ifndef STRICT /* ;Internal */
#undef SelectFont /* ;Internal */
#endif /* STRICT */ /* ;Internal */
#endif /* RC_INVOKED */ /* ;Internal */
#endif /* NOWINDOWSX */ /* ;Internal */
#ifndef RC_INVOKED
#pragma pack() /* Revert to default packing */
#endif /* RC_INVOKED */
#ifndef NODBCS
#ifdef DBCS
#if defined (JAPAN)
#define NATIVE_CHARSET SHIFTJIS_CHARSET
#elif defined (KOREA)
#define NATIVE_CHARSET HANGEUL_CHARSET
#elif defined (TAIWAN)
#define NATIVE_CHARSET CHINESEBIG5_CHARSET
#elif defined (PRC)
#define NATIVE_CHARSET GB2312_CHARSET
#else
#define NATIVE_CHARSET ANSI_CHARSET
#endif
#endif
#endif
#ifdef __cplusplus
} /* End of extern "C" { */ #endif /* __cplusplus */
#endif /* _INC_WINDOWS */
// WOW Section //
int FAR PASCAL WowGetNextVdmCommand(LPVOID); int FAR PASCAL WOWRegisterShellWindowHandle(HWND,LPVOID, HWND); int FAR PASCAL WowFailedExec(void); void FAR PASCAL ExitKernelThunk(WORD wExitCode); WORD FAR PASCAL WowSetExitOnLastApp(WORD fExitOnLastApp);
// Pickup WOW Generic Thunk Interfaces from wownt16,h //
#include "wownt16.h"
// this is a prototype. CallProc32W is a messed up vararg function
// however rasapi16.c uses it.
#ifndef NO_CALLPROC32_DECL
DWORD FAR PASCAL CallProc32W(LPVOID, DWORD, DWORD); #endif
|