win31.pp 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. unit win31;
  2. {$MODE objfpc}
  3. {$if defined(FPC_MM_COMPACT) or defined(FPC_MM_LARGE) or defined(FPC_MM_HUGE)}
  4. {$define VAR_PARAMS_ARE_FAR}
  5. {$endif}
  6. interface
  7. uses
  8. wintypes;
  9. const
  10. GFSR_SYSTEMRESOURCES = $0000;
  11. GFSR_GDIRESOURCES = $0001;
  12. GFSR_USERRESOURCES = $0002;
  13. {****** LogParamError/LogError values *}
  14. { Error modifier bits }
  15. ERR_WARNING = $8000;
  16. ERR_PARAM = $4000;
  17. ERR_SIZE_MASK = $3000;
  18. ERR_BYTE = $1000;
  19. ERR_WORD = $2000;
  20. ERR_DWORD = $3000;
  21. {****** LogParamError() values *}
  22. { Generic parameter values }
  23. ERR_BAD_VALUE = $6001;
  24. ERR_BAD_FLAGS = $6002;
  25. ERR_BAD_INDEX = $6003;
  26. ERR_BAD_DVALUE = $7004;
  27. ERR_BAD_DFLAGS = $7005;
  28. ERR_BAD_DINDEX = $7006;
  29. ERR_BAD_PTR = $7007;
  30. ERR_BAD_FUNC_PTR = $7008;
  31. ERR_BAD_SELECTOR = $6009;
  32. ERR_BAD_STRING_PTR = $700a;
  33. ERR_BAD_HANDLE = $600b;
  34. { KERNEL parameter errors }
  35. ERR_BAD_HINSTANCE = $6020;
  36. ERR_BAD_HMODULE = $6021;
  37. ERR_BAD_GLOBAL_HANDLE = $6022;
  38. ERR_BAD_LOCAL_HANDLE = $6023;
  39. ERR_BAD_ATOM = $6024;
  40. ERR_BAD_HFILE = $6025;
  41. { USER parameter errors }
  42. ERR_BAD_HWND = $6040;
  43. ERR_BAD_HMENU = $6041;
  44. ERR_BAD_HCURSOR = $6042;
  45. ERR_BAD_HICON = $6043;
  46. ERR_BAD_HDWP = $6044;
  47. ERR_BAD_CID = $6045;
  48. ERR_BAD_HDRVR = $6046;
  49. { GDI parameter errors }
  50. ERR_BAD_COORDS = $7060;
  51. ERR_BAD_GDI_OBJECT = $6061;
  52. ERR_BAD_HDC = $6062;
  53. ERR_BAD_HPEN = $6063;
  54. ERR_BAD_HFONT = $6064;
  55. ERR_BAD_HBRUSH = $6065;
  56. ERR_BAD_HBITMAP = $6066;
  57. ERR_BAD_HRGN = $6067;
  58. ERR_BAD_HPALETTE = $6068;
  59. ERR_BAD_HMETAFILE = $6069;
  60. {**** LogError() values *}
  61. { KERNEL errors }
  62. ERR_GALLOC = $0001;
  63. ERR_GREALLOC = $0002;
  64. ERR_GLOCK = $0003;
  65. ERR_LALLOC = $0004;
  66. ERR_LREALLOC = $0005;
  67. ERR_LLOCK = $0006;
  68. ERR_ALLOCRES = $0007;
  69. ERR_LOCKRES = $0008;
  70. ERR_LOADMODULE = $0009;
  71. { USER errors }
  72. ERR_CREATEDLG2 = $0041;
  73. ERR_CREATEDLG = $0040;
  74. ERR_REGISTERCLASS = $0042;
  75. ERR_DCBUSY = $0043;
  76. ERR_CREATEWND = $0044;
  77. ERR_STRUCEXTRA = $0045;
  78. ERR_LOADSTR = $0046;
  79. ERR_LOADMENU = $0047;
  80. ERR_NESTEDBEGINPAINT = $0048;
  81. ERR_BADINDEX = $0049;
  82. ERR_CREATEMENU = $004a;
  83. { GDI errors }
  84. ERR_CREATEDC = $0080;
  85. ERR_CREATEMETA = $0081;
  86. ERR_DELOBJSELECTED = $0082;
  87. ERR_SELBITMAP = $0083;
  88. type
  89. { Debugging support (DEBUG SYSTEM ONLY) }
  90. LPWINDEBUGINFO = ^WINDEBUGINFO; far;
  91. WINDEBUGINFO = record
  92. flags: UINT;
  93. dwOptions: DWORD;
  94. dwFilter: DWORD;
  95. achAllocModule: array [0..7] of char;
  96. dwAllocBreak: DWORD;
  97. dwAllocCount: DWORD;
  98. end;
  99. PWinDebugInfo = ^TWinDebugInfo;
  100. TWinDebugInfo = WINDEBUGINFO;
  101. const
  102. { WINDEBUGINFO flags values }
  103. WDI_OPTIONS = $0001;
  104. WDI_FILTER = $0002;
  105. WDI_ALLOCBREAK = $0004;
  106. { dwOptions values }
  107. DBO_CHECKHEAP = $0001;
  108. DBO_BUFFERFILL = $0004;
  109. DBO_DISABLEGPTRAPPING = $0010;
  110. DBO_CHECKFREE = $0020;
  111. DBO_SILENT = $8000;
  112. DBO_TRACEBREAK = $2000;
  113. DBO_WARNINGBREAK = $1000;
  114. DBO_NOERRORBREAK = $0800;
  115. DBO_NOFATALBREAK = $0400;
  116. DBO_INT3BREAK = $0100;
  117. { DebugOutput flags values }
  118. DBF_TRACE = $0000;
  119. DBF_WARNING = $4000;
  120. DBF_ERROR = $8000;
  121. DBF_FATAL = $c000;
  122. { dwFilter values }
  123. DBF_KERNEL = $1000;
  124. DBF_KRN_MEMMAN = $0001;
  125. DBF_KRN_LOADMODULE = $0002;
  126. DBF_KRN_SEGMENTLOAD = $0004;
  127. DBF_USER = $0800;
  128. DBF_GDI = $0400;
  129. DBF_MMSYSTEM = $0040;
  130. DBF_PENWIN = $0020;
  131. DBF_APPLICATION = $0008;
  132. DBF_DRIVER = $0010;
  133. { ExitWindows values }
  134. EW_REBOOTSYSTEM = $43;
  135. { Predefined Resource Types }
  136. OBM_UPARROWI = 32737;
  137. OBM_DNARROWI = 32736;
  138. OBM_RGARROWI = 32735;
  139. OBM_LFARROWI = 32734;
  140. type
  141. { GDI typedefs, structures, and functions }
  142. PSIZE = ^SIZE;
  143. NPSIZE = ^SIZE; near;
  144. LPSIZE = ^SIZE; far;
  145. SIZE = record
  146. cx: SmallInt;
  147. cy: SmallInt;
  148. end;
  149. TSize = SIZE;
  150. const
  151. { Drawing bounds accumulation APIs }
  152. DCB_RESET = $0001;
  153. DCB_ACCUMULATE = $0002;
  154. DCB_DIRTY = DCB_ACCUMULATE;
  155. DCB_SET = DCB_RESET or DCB_ACCUMULATE;
  156. DCB_ENABLE = $0004;
  157. DCB_DISABLE = $0008;
  158. { Color support }
  159. COLOR_INACTIVECAPTIONTEXT = 19;
  160. COLOR_BTNHIGHLIGHT = 20;
  161. function GetFreeSystemResources(SysResource: UINT): UINT; external 'USER';
  162. procedure LogError(err: UINT; lpInfo: FarPointer); external 'KERNEL';
  163. procedure LogParamError(err: UINT; lpfn: FARPROC; param: FarPointer); external 'KERNEL';
  164. function GetWinDebugInfo(lpwdi: LPWINDEBUGINFO; flags: UINT): BOOL; external 'KERNEL';
  165. function SetWinDebugInfo(lpwdi: LPWINDEBUGINFO): BOOL; external 'KERNEL';
  166. procedure DebugOutput(flags: UINT; lpsz: LPCSTR; etc: array of const); cdecl; external 'KERNEL' name '_DebugOutput';
  167. function ExitWindowsExec(Exe, Params: LPCSTR): BOOL; external 'USER';
  168. { Pointer validation }
  169. function IsBadReadPtr(lp: FarPointer; cb: UINT): BOOL; external 'KERNEL';
  170. function IsBadWritePtr(lp: FarPointer; cb: UINT): BOOL; external 'KERNEL';
  171. function IsBadHugeReadPtr(lp: HugePointer; cb: DWORD): BOOL; external 'KERNEL';
  172. function IsBadHugeReadPtr(lp: FarPointer; cb: DWORD): BOOL; external 'KERNEL';
  173. function IsBadHugeWritePtr(lp: HugePointer; cb: DWORD): BOOL; external 'KERNEL';
  174. function IsBadHugeWritePtr(lp: FarPointer; cb: DWORD): BOOL; external 'KERNEL';
  175. function IsBadCodePtr(lpfn: FARPROC): BOOL; external 'KERNEL';
  176. function IsBadStringPtr(lpsz: LPSTR; cchMax: UINT): BOOL; external 'KERNEL';
  177. { Task Management }
  178. function IsTask(Task: HTASK): BOOL; external 'KERNEL';
  179. { File I/O }
  180. function _hread(FileHandle: HFILE; Buffer: HugePointer; Bytes: LongInt): LongInt; external 'KERNEL';
  181. function _hwrite(FileHandle: HFILE; Buffer: HugePointer; Bytes: LongInt): LongInt; external 'KERNEL';
  182. { International & Char Translation Support }
  183. function lstrcpyn(lpszString1: LPSTR; lpszString2: LPCSTR; cChars: SmallInt): LPSTR; external 'KERNEL';
  184. procedure hmemcpy(hpvDest, hpvSource: HugePointer; cbCopy: LongInt); external 'KERNEL';
  185. procedure hmemcpy(hpvDest, hpvSource: FarPointer; cbCopy: LongInt); external 'KERNEL';
  186. function IsDBCSLeadByte(bTestChar: BYTE): BOOL; external 'KERNEL';
  187. { Drawing bounds accumulation APIs }
  188. function SetBoundsRect(hDC: HDC; lprcBounds: LPRECT; flags: UINT): UINT; external 'GDI';
  189. function GetBoundsRect(hDC: HDC; lprcBounds: LPRECT; flags: UINT): UINT; external 'GDI';
  190. {$ifdef VAR_PARAMS_ARE_FAR}
  191. function SetBoundsRect(hDC: HDC; const lprcBounds: RECT; flags: UINT): UINT; external 'GDI';
  192. function GetBoundsRect(hDC: HDC; var lprcBounds: RECT; flags: UINT): UINT; external 'GDI';
  193. {$endif}
  194. { Coordinate transformation support }
  195. function SetWindowOrgEx(hdc: HDC; nX, nY: SmallInt; lpPoint: LPPOINT): BOOL; external 'GDI';
  196. function GetWindowOrgEx(hdc: HDC; lpPoint: LPPOINT): BOOL; external 'GDI';
  197. function SetWindowExtEx(hdc: HDC; nX, nY: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI';
  198. function GetWindowExtEx(hdc: HDC; lpSize: LPSIZE): BOOL; external 'GDI';
  199. function OffsetWindowOrgEx(hdc: HDC; nX, nY: SmallInt; lpPoint: LPPOINT): BOOL; external 'GDI';
  200. function ScaleWindowExtEx(hdc: HDC; nXnum, nXdenom, nYnum, nYdenom: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI';
  201. function SetViewportExtEx(hdc: HDC; nX, nY: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI';
  202. function GetViewportExtEx(hdc: HDC; lpSize: LPSIZE): BOOL; external 'GDI';
  203. function SetViewportOrgEx(hdc: HDC; nX, nY: SmallInt; lpPoint: LPPOINT): BOOL; external 'GDI';
  204. function GetViewportOrgEx(hdc: HDC; lpPoint: LPPOINT): BOOL; external 'GDI';
  205. function OffsetViewportOrgEx(hdc: HDC; nX, nY: SmallInt; lpPoint: LPPOINT): BOOL; external 'GDI';
  206. function ScaleViewportExtEx(hdc: HDC; nXnum, nXdenom, nYnum, nYdenom: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI';
  207. { Brush support }
  208. function GetBrushOrgEx(hDC: HDC; lpPoint: LPPOINT): BOOL; external 'GDI';
  209. { General drawing support }
  210. function MoveToEx(hdc: HDC; x, y: SmallInt; lpPoint: LPPOINT): BOOL; external 'GDI';
  211. function GetCurrentPositionEx(hdc: HDC; lpPoint: LPPOINT): BOOL; external 'GDI';
  212. implementation
  213. end.