win16.mh
来自「开放源码的编译器open watcom 1.6.0版的源代码」· MH 代码 · 共 2,221 行 · 第 1/5 页
MH
2,221 行
/*
* win16.h Include file for Windows 3.x development.
*
:include crwatcnt.sp
*/
#ifndef _INC_WINDOWS
#define _INC_WINDOWS
:include readonly.sp
#ifndef RC_INVOKED
#pragma pack(push,1)
#endif
:include cpluspro.sp
#ifndef WINVER
#define WINVER 0x030a
#endif
#ifdef RC_INVOKED
#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
#if (WINVER < 0x030a)
#define NOOEMRESOURCE
#ifdef OEMRESOURCE
#undef NOOEMRESOURCE
#endif
#endif
#define FAR __far
#define NEAR __near
#define VOID void
#define PASCAL __pascal
#define CDECL __cdecl
#define WINAPI __far __pascal
#define CALLBACK __far __pascal
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
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))
#ifndef NULL
#if defined(__SMALL__) || defined(__MEDIUM__) || defined(__386__)
#define NULL 0
#else
#define NULL 0L
#endif
#endif
typedef char NEAR *PSTR;
typedef char NEAR *NPSTR;
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;
typedef char FAR *LPSTR;
typedef const char FAR *LPCSTR;
#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)
/* For __WINDOWS_386__, sizeof(void*) is not same as sizeof(UINT)! */
#if defined(STRICT) && !defined(__WINDOWS_386__)
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
typedef UINT HANDLE;
#define DECLARE_HANDLE(name) typedef UINT name
#define DECLARE_HANDLE32(name) typedef DWORD name
#endif
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);
DECLARE_HANDLE(HINSTANCE);
typedef HINSTANCE HMODULE;
#ifndef NOKERNEL
#if defined(STRICT) && !defined(__WINDOWS_386__)
int PASCAL WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
#endif
DWORD WINAPI GetVersion(void);
DWORD WINAPI GetFreeSpace(UINT);
UINT WINAPI GetCurrentPDB(void);
UINT WINAPI GetWindowsDirectory(LPSTR,UINT);
UINT WINAPI GetSystemDirectory(LPSTR,UINT);
#if (WINVER >= 0x030a)
UINT WINAPI GetFreeSystemResources(UINT);
#define GFSR_SYSTEMRESOURCES 0x0000
#define GFSR_GDIRESOURCES 0x0001
#define GFSR_USERRESOURCES 0x0002
#endif
DWORD WINAPI GetWinFlags(void);
#define WF_PMODE 0x0001
#define WF_CPU286 0x0002
#define WF_CPU386 0x0004
#define WF_CPU486 0x0008
#define WF_STANDARD 0x0010
#define WF_WIN286 0x0010
#define WF_ENHANCED 0x0020
#define WF_WIN386 0x0020
#define WF_CPU086 0x0040
#define WF_CPU186 0x0080
#define WF_LARGEFRAME 0x0100
#define WF_SMALLFRAME 0x0200
#define WF_80x87 0x0400
#define WF_PAGING 0x0800
#define WF_WLO 0x8000
LPSTR WINAPI GetDOSEnvironment(void);
DWORD WINAPI GetCurrentTime(void);
DWORD WINAPI GetTickCount(void);
DWORD WINAPI GetTimerResolution(void);
#if (WINVER >= 0x030a)
#ifndef NOLOGERROR
void WINAPI LogError(UINT,void FAR*);
void WINAPI LogParamError(UINT,FARPROC,void FAR*);
#define ERR_WARNING 0x8000
#define ERR_PARAM 0x4000
#define ERR_SIZE_MASK 0x3000
#define ERR_BYTE 0x1000
#define ERR_WORD 0x2000
#define ERR_DWORD 0x3000
#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
#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
#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
#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
#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
#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
#define ERR_CREATEDC 0x0080
#define ERR_CREATEMETA 0x0081
#define ERR_DELOBJSELECTED 0x0082
#define ERR_SELBITMAP 0x0083
typedef struct tagWINDEBUGINFO {
UINT flags;
DWORD dwOptions;
DWORD dwFilter;
char achAllocModule[8];
DWORD dwAllocBreak;
DWORD dwAllocCount;
} WINDEBUGINFO;
BOOL WINAPI GetWinDebugInfo(WINDEBUGINFO FAR*,UINT);
BOOL WINAPI SetWinDebugInfo(const WINDEBUGINFO FAR*);
void FAR __cdecl DebugOutput(UINT,LPCSTR,...);
#define WDI_OPTIONS 0x0001
#define WDI_FILTER 0x0002
#define WDI_ALLOCBREAK 0x0004
#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
#define DBF_TRACE 0x0000
#define DBF_WARNING 0x4000
#define DBF_ERROR 0x8000
#define DBF_FATAL 0xc000
#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
#endif
void WINAPI FatalExit(int);
void WINAPI FatalAppExit(UINT,LPCSTR);
BOOL WINAPI ExitWindows(DWORD,UINT);
#define EW_RESTARTWINDOWS 0x42
#if (WINVER >= 0x030a)
#define EW_REBOOTSYSTEM 0x43
BOOL WINAPI ExitWindowsExec(LPCSTR, LPCSTR);
#endif
void WINAPI DebugBreak(void);
void WINAPI OutputDebugString(LPCSTR);
UINT WINAPI SetErrorMode(UINT);
#define SEM_FAILCRITICALERRORS 0x0001
#define SEM_NOGPFAULTERRORBOX 0x0002
#define SEM_NOOPENFILEERRORBOX 0x8000
#if (WINVER >= 0x030a)
BOOL WINAPI IsBadReadPtr(const void FAR*,UINT);
BOOL WINAPI IsBadWritePtr(void FAR*,UINT);
BOOL WINAPI IsBadHugeReadPtr(const void __huge*,DWORD);
BOOL WINAPI IsBadHugeWritePtr(void __huge*,DWORD);
BOOL WINAPI IsBadCodePtr(FARPROC);
BOOL WINAPI IsBadStringPtr(const void FAR*,UINT);
#endif
#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
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);
#define HINSTANCE_ERROR ((HINSTANCE)32)
HINSTANCE WINAPI LoadModule(LPCSTR,LPVOID);
BOOL WINAPI FreeModule(HINSTANCE);
HINSTANCE WINAPI LoadLibrary(LPCSTR);
void WINAPI FreeLibrary(HINSTANCE);
UINT WINAPI WinExec(LPCSTR, UINT);
HMODULE WINAPI GetModuleHandle(LPCSTR);
int WINAPI GetModuleUsage(HINSTANCE);
int WINAPI GetModuleFileName(HINSTANCE,LPSTR,int);
FARPROC WINAPI GetProcAddress(HINSTANCE, LPCSTR);
int WINAPI GetInstanceData(HINSTANCE,BYTE NEAR *,int);
HGLOBAL WINAPI GetCodeHandle(FARPROC);
typedef struct tagSEGINFO {
UINT offSegment;
UINT cbSegment;
UINT flags;
UINT cbAlloc;
HGLOBAL h;
UINT alignShift;
UINT reserved[2];
} SEGINFO, FAR *LPSEGINFO;
void WINAPI GetCodeInfo(FARPROC,SEGINFO FAR*);
FARPROC WINAPI MakeProcInstance(FARPROC,HINSTANCE);
void WINAPI FreeProcInstance(FARPROC);
LONG WINAPI SetSwapAreaSize(UINT);
void WINAPI SwapRecording(UINT);
void WINAPI ValidateCodeSegments(void);
#define WEP_SYSTEM_EXIT 1
#define WEP_FREE_DLL 0
#endif
DECLARE_HANDLE(HTASK);
#ifndef NOKERNEL
UINT WINAPI GetNumTasks(void);
#if (WINVER >= 0x030a)
BOOL WINAPI IsTask(HTASK);
#endif
HTASK WINAPI GetCurrentTask(void);
void WINAPI Yield(void);
void WINAPI DirectedYield(HTASK);
#ifndef NOMEMMGR
#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
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?