win31.pp 31 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066
  1. {$IFNDEF FPC_DOTTEDUNITS}
  2. unit win31;
  3. {$ENDIF FPC_DOTTEDUNITS}
  4. {$MODE objfpc}
  5. {$if defined(FPC_MM_COMPACT) or defined(FPC_MM_LARGE) or defined(FPC_MM_HUGE)}
  6. {$define VAR_PARAMS_ARE_FAR}
  7. {$endif}
  8. interface
  9. {$IFDEF FPC_DOTTEDUNITS}
  10. uses
  11. WinApi.WinTypes;
  12. {$ELSE FPC_DOTTEDUNITS}
  13. uses
  14. wintypes;
  15. {$ENDIF FPC_DOTTEDUNITS}
  16. const
  17. GFSR_SYSTEMRESOURCES = $0000;
  18. GFSR_GDIRESOURCES = $0001;
  19. GFSR_USERRESOURCES = $0002;
  20. {****** LogParamError/LogError values *}
  21. { Error modifier bits }
  22. ERR_WARNING = $8000;
  23. ERR_PARAM = $4000;
  24. ERR_SIZE_MASK = $3000;
  25. ERR_BYTE = $1000;
  26. ERR_WORD = $2000;
  27. ERR_DWORD = $3000;
  28. {****** LogParamError() values *}
  29. { Generic parameter values }
  30. ERR_BAD_VALUE = $6001;
  31. ERR_BAD_FLAGS = $6002;
  32. ERR_BAD_INDEX = $6003;
  33. ERR_BAD_DVALUE = $7004;
  34. ERR_BAD_DFLAGS = $7005;
  35. ERR_BAD_DINDEX = $7006;
  36. ERR_BAD_PTR = $7007;
  37. ERR_BAD_FUNC_PTR = $7008;
  38. ERR_BAD_SELECTOR = $6009;
  39. ERR_BAD_STRING_PTR = $700a;
  40. ERR_BAD_HANDLE = $600b;
  41. { KERNEL parameter errors }
  42. ERR_BAD_HINSTANCE = $6020;
  43. ERR_BAD_HMODULE = $6021;
  44. ERR_BAD_GLOBAL_HANDLE = $6022;
  45. ERR_BAD_LOCAL_HANDLE = $6023;
  46. ERR_BAD_ATOM = $6024;
  47. ERR_BAD_HFILE = $6025;
  48. { USER parameter errors }
  49. ERR_BAD_HWND = $6040;
  50. ERR_BAD_HMENU = $6041;
  51. ERR_BAD_HCURSOR = $6042;
  52. ERR_BAD_HICON = $6043;
  53. ERR_BAD_HDWP = $6044;
  54. ERR_BAD_CID = $6045;
  55. ERR_BAD_HDRVR = $6046;
  56. { GDI parameter errors }
  57. ERR_BAD_COORDS = $7060;
  58. ERR_BAD_GDI_OBJECT = $6061;
  59. ERR_BAD_HDC = $6062;
  60. ERR_BAD_HPEN = $6063;
  61. ERR_BAD_HFONT = $6064;
  62. ERR_BAD_HBRUSH = $6065;
  63. ERR_BAD_HBITMAP = $6066;
  64. ERR_BAD_HRGN = $6067;
  65. ERR_BAD_HPALETTE = $6068;
  66. ERR_BAD_HMETAFILE = $6069;
  67. {**** LogError() values *}
  68. { KERNEL errors }
  69. ERR_GALLOC = $0001;
  70. ERR_GREALLOC = $0002;
  71. ERR_GLOCK = $0003;
  72. ERR_LALLOC = $0004;
  73. ERR_LREALLOC = $0005;
  74. ERR_LLOCK = $0006;
  75. ERR_ALLOCRES = $0007;
  76. ERR_LOCKRES = $0008;
  77. ERR_LOADMODULE = $0009;
  78. { USER errors }
  79. ERR_CREATEDLG2 = $0041;
  80. ERR_CREATEDLG = $0040;
  81. ERR_REGISTERCLASS = $0042;
  82. ERR_DCBUSY = $0043;
  83. ERR_CREATEWND = $0044;
  84. ERR_STRUCEXTRA = $0045;
  85. ERR_LOADSTR = $0046;
  86. ERR_LOADMENU = $0047;
  87. ERR_NESTEDBEGINPAINT = $0048;
  88. ERR_BADINDEX = $0049;
  89. ERR_CREATEMENU = $004a;
  90. { GDI errors }
  91. ERR_CREATEDC = $0080;
  92. ERR_CREATEMETA = $0081;
  93. ERR_DELOBJSELECTED = $0082;
  94. ERR_SELBITMAP = $0083;
  95. type
  96. { Debugging support (DEBUG SYSTEM ONLY) }
  97. LPWINDEBUGINFO = ^WINDEBUGINFO; far;
  98. WINDEBUGINFO = record
  99. flags: UINT;
  100. dwOptions: DWORD;
  101. dwFilter: DWORD;
  102. achAllocModule: array [0..7] of AnsiChar;
  103. dwAllocBreak: DWORD;
  104. dwAllocCount: DWORD;
  105. end;
  106. PWinDebugInfo = ^TWinDebugInfo;
  107. TWinDebugInfo = WINDEBUGINFO;
  108. const
  109. { WINDEBUGINFO flags values }
  110. WDI_OPTIONS = $0001;
  111. WDI_FILTER = $0002;
  112. WDI_ALLOCBREAK = $0004;
  113. { dwOptions values }
  114. DBO_CHECKHEAP = $0001;
  115. DBO_BUFFERFILL = $0004;
  116. DBO_DISABLEGPTRAPPING = $0010;
  117. DBO_CHECKFREE = $0020;
  118. DBO_SILENT = $8000;
  119. DBO_TRACEBREAK = $2000;
  120. DBO_WARNINGBREAK = $1000;
  121. DBO_NOERRORBREAK = $0800;
  122. DBO_NOFATALBREAK = $0400;
  123. DBO_INT3BREAK = $0100;
  124. { DebugOutput flags values }
  125. DBF_TRACE = $0000;
  126. DBF_WARNING = $4000;
  127. DBF_ERROR = $8000;
  128. DBF_FATAL = $c000;
  129. { dwFilter values }
  130. DBF_KERNEL = $1000;
  131. DBF_KRN_MEMMAN = $0001;
  132. DBF_KRN_LOADMODULE = $0002;
  133. DBF_KRN_SEGMENTLOAD = $0004;
  134. DBF_USER = $0800;
  135. DBF_GDI = $0400;
  136. DBF_MMSYSTEM = $0040;
  137. DBF_PENWIN = $0020;
  138. DBF_APPLICATION = $0008;
  139. DBF_DRIVER = $0010;
  140. { ExitWindows values }
  141. EW_REBOOTSYSTEM = $43;
  142. { Predefined Resource Types }
  143. OBM_UPARROWI = 32737;
  144. OBM_DNARROWI = 32736;
  145. OBM_RGARROWI = 32735;
  146. OBM_LFARROWI = 32734;
  147. type
  148. { GDI typedefs, structures, and functions }
  149. PSIZE = ^SIZE;
  150. NPSIZE = ^SIZE; near;
  151. LPSIZE = ^SIZE; far;
  152. SIZE = record
  153. cx: SmallInt;
  154. cy: SmallInt;
  155. end;
  156. TSize = SIZE;
  157. const
  158. { Drawing bounds accumulation APIs }
  159. DCB_RESET = $0001;
  160. DCB_ACCUMULATE = $0002;
  161. DCB_DIRTY = DCB_ACCUMULATE;
  162. DCB_SET = DCB_RESET or DCB_ACCUMULATE;
  163. DCB_ENABLE = $0004;
  164. DCB_DISABLE = $0008;
  165. { Color support }
  166. COLOR_INACTIVECAPTIONTEXT = 19;
  167. COLOR_BTNHIGHLIGHT = 20;
  168. { Font support }
  169. { OutPrecision values }
  170. OUT_TT_PRECIS = 4;
  171. OUT_DEVICE_PRECIS = 5;
  172. OUT_RASTER_PRECIS = 6;
  173. OUT_TT_ONLY_PRECIS = 7;
  174. { ClipPrecision values }
  175. CLIP_LH_ANGLES = $10;
  176. CLIP_TT_ALWAYS = $20;
  177. CLIP_EMBEDDED = $80;
  178. { tmPitchAndFamily values }
  179. TMPF_TRUETYPE = $04;
  180. type
  181. PPANOSE = ^PANOSE;
  182. LPPANOSE = ^PANOSE; far;
  183. PANOSE = record
  184. bFamilyType: BYTE;
  185. bSerifStyle: BYTE;
  186. bWeight: BYTE;
  187. bProportion: BYTE;
  188. bContrast: BYTE;
  189. bStrokeVariation: BYTE;
  190. bArmStyle: BYTE;
  191. bLetterform: BYTE;
  192. bMidline: BYTE;
  193. bXHeight: BYTE;
  194. end;
  195. TPanose = PANOSE;
  196. POUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC;
  197. LPOUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC; far;
  198. OUTLINETEXTMETRIC = record
  199. otmSize: UINT;
  200. otmTextMetrics: TEXTMETRIC;
  201. otmFiller: BYTE;
  202. otmPanoseNumber: PANOSE;
  203. otmfsSelection: UINT;
  204. otmfsType: UINT;
  205. otmsCharSlopeRise: SmallInt;
  206. otmsCharSlopeRun: SmallInt;
  207. otmItalicAngle: SmallInt;
  208. otmEMSquare: UINT;
  209. otmAscent: SmallInt;
  210. otmDescent: SmallInt;
  211. otmLineGap: UINT;
  212. otmsCapEmHeight: UINT;
  213. otmsXHeight: UINT;
  214. otmrcFontBox: RECT;
  215. otmMacAscent: SmallInt;
  216. otmMacDescent: SmallInt;
  217. otmMacLineGap: UINT;
  218. otmusMinimumPPEM: UINT;
  219. otmptSubscriptSize: POINT;
  220. otmptSubscriptOffset: POINT;
  221. otmptSuperscriptSize: POINT;
  222. otmptSuperscriptOffset: POINT;
  223. otmsStrikeoutSize: UINT;
  224. otmsStrikeoutPosition: SmallInt;
  225. otmsUnderscorePosition: SmallInt;
  226. otmsUnderscoreSize: SmallInt;
  227. otmpFamilyName: PSTR;
  228. otmpFaceName: PSTR;
  229. otmpStyleName: PSTR;
  230. otmpFullName: PSTR;
  231. end;
  232. TOutlineTextMetric = OUTLINETEXTMETRIC;
  233. { Structure passed to FONTENUMPROC }
  234. { NOTE: NEWTEXTMETRIC is the same as TEXTMETRIC plus 4 new fields }
  235. PNEWTEXTMETRIC = ^NEWTEXTMETRIC;
  236. NPNEWTEXTMETRIC = ^NEWTEXTMETRIC; near;
  237. LPNEWTEXTMETRIC = ^NEWTEXTMETRIC; far;
  238. NEWTEXTMETRIC = record
  239. tmHeight: SmallInt;
  240. tmAscent: SmallInt;
  241. tmDescent: SmallInt;
  242. tmInternalLeading: SmallInt;
  243. tmExternalLeading: SmallInt;
  244. tmAveCharWidth: SmallInt;
  245. tmMaxCharWidth: SmallInt;
  246. tmWeight: SmallInt;
  247. tmItalic: BYTE;
  248. tmUnderlined: BYTE;
  249. tmStruckOut: BYTE;
  250. tmFirstChar: BYTE;
  251. tmLastChar: BYTE;
  252. tmDefaultChar: BYTE;
  253. tmBreakChar: BYTE;
  254. tmPitchAndFamily: BYTE;
  255. tmCharSet: BYTE;
  256. tmOverhang: SmallInt;
  257. tmDigitizedAspectX: SmallInt;
  258. tmDigitizedAspectY: SmallInt;
  259. ntmFlags: DWORD;
  260. ntmSizeEM: UINT;
  261. ntmCellHeight: UINT;
  262. ntmAvgWidth: UINT;
  263. end;
  264. TNewTextMetric = NEWTEXTMETRIC;
  265. const
  266. { ntmFlags field flags }
  267. NTM_REGULAR = $00000040;
  268. NTM_BOLD = $00000020;
  269. NTM_ITALIC = $00000001;
  270. LF_FULLFACESIZE = 64;
  271. type
  272. { Structure passed to FONTENUMPROC }
  273. PENUMLOGFONT = ^ENUMLOGFONT;
  274. LPENUMLOGFONT = ^ENUMLOGFONT; far;
  275. ENUMLOGFONT = record
  276. elfLogFont: LOGFONT;
  277. elfFullName: array [0..LF_FULLFACESIZE-1] of AnsiChar;
  278. elfStyle: array [0..LF_FACESIZE-1] of AnsiChar;
  279. end;
  280. TEnumLogFont = ENUMLOGFONT;
  281. FONTENUMPROC = function(lpelf: LPENUMLOGFONT; lpntm: LPNEWTEXTMETRIC; FontType: SmallInt; lpData: LPARAM): SmallInt; far;
  282. const
  283. { EnumFonts font type values }
  284. TRUETYPE_FONTTYPE = $0004;
  285. type
  286. PGLYPHMETRICS = ^GLYPHMETRICS;
  287. LPGLYPHMETRICS = ^GLYPHMETRICS; far;
  288. GLYPHMETRICS = record
  289. gmBlackBoxX: UINT;
  290. gmBlackBoxY: UINT;
  291. gmptGlyphOrigin: POINT;
  292. gmCellIncX: SmallInt;
  293. gmCellIncY: SmallInt;
  294. end;
  295. TGlyphMetrics = GLYPHMETRICS;
  296. PFIXED = ^FIXED;
  297. LPFIXED = ^FIXED; far;
  298. FIXED = record
  299. fract: UINT;
  300. value: SmallInt;
  301. end;
  302. TFixed = FIXED;
  303. PMAT2 = ^MAT2;
  304. LPMAT2 = ^MAT2; far;
  305. MAT2 = record
  306. eM11: FIXED;
  307. eM12: FIXED;
  308. eM21: FIXED;
  309. eM22: FIXED;
  310. end;
  311. TMat2 = MAT2;
  312. const
  313. { GetGlyphOutline constants }
  314. GGO_METRICS = 0;
  315. GGO_BITMAP = 1;
  316. GGO_NATIVE = 2;
  317. TT_POLYGON_TYPE = 24;
  318. TT_PRIM_LINE = 1;
  319. TT_PRIM_QSPLINE = 2;
  320. type
  321. PPOINTFX = ^POINTFX;
  322. LPPOINTFX = ^POINTFX; far;
  323. POINTFX = record
  324. x: FIXED;
  325. y: FIXED;
  326. end;
  327. TPointFX = POINTFX;
  328. PTTPOLYCURVE = ^TTPOLYCURVE;
  329. LPTTPOLYCURVE = ^TTPOLYCURVE; far;
  330. TTPOLYCURVE = record
  331. wType: UINT;
  332. cpfx: UINT;
  333. apfx: array [0..0] of POINTFX;
  334. end;
  335. TTTPOLYCURVE = TTPolyCurve;
  336. PTTPOLYGONHEADER = ^TTPOLYGONHEADER;
  337. LPTTPOLYGONHEADER = ^TTPOLYGONHEADER; far;
  338. TTPOLYGONHEADER = record
  339. cb: DWORD;
  340. dwType: DWORD;
  341. pfxStart: POINTFX;
  342. end;
  343. TTTPolygonHeader = TTPOLYGONHEADER;
  344. PABC = ^ABC;
  345. LPABC = ^ABC; far;
  346. ABC = record
  347. abcA: SmallInt;
  348. abcB: UINT;
  349. abcC: SmallInt;
  350. end;
  351. TABC = ABC;
  352. PKERNINGPAIR = ^KERNINGPAIR;
  353. LPKERNINGPAIR = ^KERNINGPAIR; far;
  354. KERNINGPAIR = record
  355. wFirst: WORD;
  356. wSecond: WORD;
  357. iKernAmount: SmallInt;
  358. end;
  359. TKerningPair = KERNINGPAIR;
  360. PRASTERIZER_STATUS = ^RASTERIZER_STATUS;
  361. LPRASTERIZER_STATUS = ^RASTERIZER_STATUS; far;
  362. RASTERIZER_STATUS = record
  363. nSize: SmallInt;
  364. wFlags: SmallInt;
  365. nLanguageID: SmallInt;
  366. end;
  367. TRasterizer_Status = RASTERIZER_STATUS;
  368. const
  369. { bits defined in wFlags of RASTERIZER_STATUS }
  370. TT_AVAILABLE = $0001;
  371. TT_ENABLED = $0002;
  372. type
  373. { Printing support }
  374. PDOCINFO = ^DOCINFO;
  375. LPDOCINFO = ^DOCINFO; far;
  376. DOCINFO = record
  377. cbSize: SmallInt;
  378. lpszDocName: LPCSTR;
  379. lpszOutput: LPCSTR;
  380. end;
  381. TDocInfo = DOCINFO;
  382. { System Metrics }
  383. const
  384. { GetSystemMetrics() codes }
  385. SM_CXDOUBLECLK = 36;
  386. SM_CYDOUBLECLK = 37;
  387. SM_CXICONSPACING = 38;
  388. SM_CYICONSPACING = 39;
  389. SM_MENUDROPALIGNMENT = 40;
  390. SM_PENWINDOWS = 41;
  391. SM_DBCSENABLED = 42;
  392. SM_CMETRICS = 43;
  393. { System Parameters support }
  394. SPI_GETBEEP = 1;
  395. SPI_SETBEEP = 2;
  396. SPI_GETMOUSE = 3;
  397. SPI_SETMOUSE = 4;
  398. SPI_GETBORDER = 5;
  399. SPI_SETBORDER = 6;
  400. SPI_GETKEYBOARDSPEED = 10;
  401. SPI_SETKEYBOARDSPEED = 11;
  402. SPI_LANGDRIVER = 12;
  403. SPI_ICONHORIZONTALSPACING = 13;
  404. SPI_GETSCREENSAVETIMEOUT = 14;
  405. SPI_SETSCREENSAVETIMEOUT = 15;
  406. SPI_GETSCREENSAVEACTIVE = 16;
  407. SPI_SETSCREENSAVEACTIVE = 17;
  408. SPI_GETGRIDGRANULARITY = 18;
  409. SPI_SETGRIDGRANULARITY = 19;
  410. SPI_SETDESKWALLPAPER = 20;
  411. SPI_SETDESKPATTERN = 21;
  412. SPI_GETKEYBOARDDELAY = 22;
  413. SPI_SETKEYBOARDDELAY = 23;
  414. SPI_ICONVERTICALSPACING = 24;
  415. SPI_GETICONTITLEWRAP = 25;
  416. SPI_SETICONTITLEWRAP = 26;
  417. SPI_GETMENUDROPALIGNMENT = 27;
  418. SPI_SETMENUDROPALIGNMENT = 28;
  419. SPI_SETDOUBLECLKWIDTH = 29;
  420. SPI_SETDOUBLECLKHEIGHT = 30;
  421. SPI_GETICONTITLELOGFONT = 31;
  422. SPI_SETDOUBLECLICKTIME = 32;
  423. SPI_SETMOUSEBUTTONSWAP = 33;
  424. SPI_SETICONTITLELOGFONT = 34;
  425. SPI_GETFASTTASKSWITCH = 35;
  426. SPI_SETFASTTASKSWITCH = 36;
  427. { SystemParametersInfo flags }
  428. SPIF_UPDATEINIFILE = $0001;
  429. SPIF_SENDWININICHANGE = $0002;
  430. { Window message support }
  431. { GetQueueStatus flags }
  432. QS_KEY = $0001;
  433. QS_MOUSEMOVE = $0002;
  434. QS_MOUSEBUTTON = $0004;
  435. QS_MOUSE = QS_MOUSEMOVE or QS_MOUSEBUTTON;
  436. QS_POSTMESSAGE = $0008;
  437. QS_TIMER = $0010;
  438. QS_PAINT = $0020;
  439. QS_SENDMESSAGE = $0040;
  440. QS_ALLINPUT = $007f;
  441. { Power management }
  442. WM_POWER = $0048;
  443. { wParam for WM_POWER window message and DRV_POWER driver notification }
  444. PWR_OK = 1;
  445. PWR_FAIL = (-1);
  446. PWR_SUSPENDREQUEST = 1;
  447. PWR_SUSPENDRESUME = 2;
  448. PWR_CRITICALRESUME = 3;
  449. { Window class management }
  450. { Class field offsets for GetClassLong() and GetClassWord() }
  451. GCW_ATOM = (-32);
  452. { Window creation/destroy }
  453. { Window Styles }
  454. WS_EX_TOPMOST = $00000008;
  455. WS_EX_ACCEPTFILES = $00000010;
  456. WS_EX_TRANSPARENT = $00000020;
  457. type
  458. { Window size, position, Z-order, and visibility }
  459. PWINDOWPLACEMENT = ^WINDOWPLACEMENT;
  460. LPWINDOWPLACEMENT = ^WINDOWPLACEMENT; far;
  461. WINDOWPLACEMENT = record
  462. length: UINT;
  463. flags: UINT;
  464. showCmd: UINT;
  465. ptMinPosition: POINT;
  466. ptMaxPosition: POINT;
  467. rcNormalPosition: RECT;
  468. end;
  469. TWindowPlacement = WINDOWPLACEMENT;
  470. const
  471. WPF_SETMINPOSITION = $0001;
  472. WPF_RESTORETOMAXIMIZED = $0002;
  473. WM_WINDOWPOSCHANGING = $0046;
  474. WM_WINDOWPOSCHANGED = $0047;
  475. type
  476. { WM_WINDOWPOSCHANGING/CHANGED struct pointed to by lParam }
  477. PWINDOWPOS = ^WINDOWPOS;
  478. LPWINDOWPOS = ^WINDOWPOS; far;
  479. WINDOWPOS = record
  480. hwnd: HWND;
  481. hwndInsertAfter: HWND;
  482. x: SmallInt;
  483. y: SmallInt;
  484. cx: SmallInt;
  485. cy: SmallInt;
  486. flags: UINT;
  487. end;
  488. TWindowPos = WINDOWPOS;
  489. const
  490. { Window drawing support }
  491. DCX_WINDOW = $00000001;
  492. DCX_CACHE = $00000002;
  493. DCX_CLIPCHILDREN = $00000008;
  494. DCX_CLIPSIBLINGS = $00000010;
  495. DCX_PARENTCLIP = $00000020;
  496. DCX_EXCLUDERGN = $00000040;
  497. DCX_INTERSECTRGN = $00000080;
  498. DCX_LOCKWINDOWUPDATE = $00000400;
  499. DCX_USESTYLE = $00010000;
  500. { Window scrolling }
  501. SW_SCROLLCHILDREN = $0001;
  502. SW_INVALIDATE = $0002;
  503. SW_ERASE = $0004;
  504. { Non-client window area management }
  505. { WM_NCCALCSIZE return flags }
  506. WVR_ALIGNTOP = $0010;
  507. WVR_ALIGNLEFT = $0020;
  508. WVR_ALIGNBOTTOM = $0040;
  509. WVR_ALIGNRIGHT = $0080;
  510. WVR_HREDRAW = $0100;
  511. WVR_VREDRAW = $0200;
  512. WVR_REDRAW = WVR_HREDRAW or WVR_VREDRAW;
  513. WVR_VALIDRECTS = $0400;
  514. type
  515. { WM_NCCALCSIZE parameter structure }
  516. PNCCALCSIZE_PARAMS = ^NCCALCSIZE_PARAMS;
  517. LPNCCALCSIZE_PARAMS = ^NCCALCSIZE_PARAMS; far;
  518. NCCALCSIZE_PARAMS = record
  519. rgrc: array [0..2] of RECT;
  520. lppos: LPWINDOWPOS;
  521. end;
  522. TNCCalcSize_Params = NCCALCSIZE_PARAMS;
  523. { Mouse input support }
  524. const
  525. { WM_MOUSEACTIVATE return codes }
  526. MA_NOACTIVATEANDEAT = 4;
  527. { Menu support }
  528. { Flags for TrackPopupMenu }
  529. TPM_RIGHTBUTTON = $0002;
  530. TPM_LEFTALIGN = $0000;
  531. TPM_CENTERALIGN = $0004;
  532. TPM_RIGHTALIGN = $0008;
  533. { MDI Support }
  534. { MDI client style bits }
  535. MDIS_ALLCHILDSTYLES = $0001;
  536. { wParam values for WM_MDITILE and WM_MDICASCADE messages. }
  537. MDITILE_VERTICAL = $0000;
  538. MDITILE_HORIZONTAL = $0001;
  539. MDITILE_SKIPDISABLED = $0002;
  540. { Static control }
  541. { Static Control Mesages }
  542. STM_SETICON = (WM_USER+0);
  543. STM_GETICON = (WM_USER+1);
  544. { Edit control }
  545. { Edit control styles }
  546. ES_READONLY = $00000800;
  547. ES_WANTRETURN = $00001000;
  548. { Edit control messages }
  549. EM_GETFIRSTVISIBLELINE = (WM_USER+30);
  550. EM_SETREADONLY = (WM_USER+31);
  551. EM_SETWORDBREAKPROC = (WM_USER+32);
  552. EM_GETWORDBREAKPROC = (WM_USER+33);
  553. EM_GETPASSWORDCHAR = (WM_USER+34);
  554. type
  555. EDITWORDBREAKPROC = function(lpch: LPSTR; ichCurrent, cch, code: SmallInt): SmallInt; far;
  556. const
  557. { EDITWORDBREAKPROC code values }
  558. WB_LEFT = 0;
  559. WB_RIGHT = 1;
  560. WB_ISDELIMITER = 2;
  561. { Listbox control }
  562. { Listbox styles }
  563. LBS_DISABLENOSCROLL = $1000;
  564. { Listbox messages }
  565. LB_SETITEMHEIGHT = (WM_USER+33);
  566. LB_GETITEMHEIGHT = (WM_USER+34);
  567. LB_FINDSTRINGEXACT = (WM_USER+35);
  568. { Combo box control }
  569. { Combo box styles }
  570. CBS_DISABLENOSCROLL = $0800;
  571. { Combo box messages }
  572. CB_GETDROPPEDCONTROLRECT = (WM_USER+18);
  573. CB_SETITEMHEIGHT = (WM_USER+19);
  574. CB_GETITEMHEIGHT = (WM_USER+20);
  575. CB_SETEXTENDEDUI = (WM_USER+21);
  576. CB_GETEXTENDEDUI = (WM_USER+22);
  577. CB_GETDROPPEDSTATE = (WM_USER+23);
  578. CB_FINDSTRINGEXACT = (WM_USER+24);
  579. { Combo box notification codes }
  580. CBN_CLOSEUP = 8;
  581. CBN_SELENDOK = 9;
  582. CBN_SELENDCANCEL = 10;
  583. { Computer-based-training (CBT) support }
  584. type
  585. { HCBT_CREATEWND parameters pointed to by lParam }
  586. PCBT_CREATEWND = ^CBT_CREATEWND;
  587. LPCBT_CREATEWND = ^CBT_CREATEWND; far;
  588. CBT_CREATEWND = record
  589. lpcs: LPCREATESTRUCT;
  590. hwndInsertAfter: HWND;
  591. end;
  592. TCBT_CreateWnd = CBT_CREATEWND;
  593. { HCBT_ACTIVATE structure pointed to by lParam }
  594. PCBTACTIVATESTRUCT = ^CBTACTIVATESTRUCT;
  595. LPCBTACTIVATESTRUCT = ^CBTACTIVATESTRUCT; far;
  596. CBTACTIVATESTRUCT = record
  597. fMouse: BOOL;
  598. hWndActive: HWND;
  599. end;
  600. TCBTActivateStruct = CBTACTIVATESTRUCT;
  601. const
  602. { Hardware hook support }
  603. WH_HARDWARE = 8;
  604. type
  605. PHARDWAREHOOKSTRUCT = ^HARDWAREHOOKSTRUCT;
  606. LPHARDWAREHOOKSTRUCT = ^HARDWAREHOOKSTRUCT; far;
  607. HARDWAREHOOKSTRUCT = record
  608. hWnd: HWND;
  609. wMessage: UINT;
  610. wParam: WPARAM;
  611. lParam: LPARAM;
  612. end;
  613. THardwareHookStruct = HARDWAREHOOKSTRUCT;
  614. { Shell support }
  615. const
  616. { SetWindowsHook() Shell hook code }
  617. WH_SHELL = 10;
  618. HSHELL_WINDOWCREATED = 1;
  619. HSHELL_WINDOWDESTROYED = 2;
  620. HSHELL_ACTIVATESHELLWINDOW = 3;
  621. { Debugger support }
  622. { SetWindowsHook debug hook support }
  623. WH_DEBUG = 9;
  624. type
  625. PDEBUGHOOKINFO = ^DEBUGHOOKINFO;
  626. LPDEBUGHOOKINFO = ^DEBUGHOOKINFO; far;
  627. DEBUGHOOKINFO = record
  628. hModuleHook: HMODULE;
  629. reserved: LPARAM;
  630. lParam: LPARAM;
  631. wParam: WPARAM;
  632. code: SmallInt;
  633. end;
  634. TDebugHookInfo = DEBUGHOOKINFO;
  635. const
  636. { Flags returned by GetSystemDebugState. }
  637. SDS_MENU = $0001;
  638. SDS_SYSMODAL = $0002;
  639. SDS_NOTASKQUEUE = $0004;
  640. SDS_DIALOG = $0008;
  641. SDS_TASKLOCKED = $0010;
  642. { Comm support }
  643. { new escape functions }
  644. GETMAXLPT = 8;
  645. GETMAXCOM = 9;
  646. GETBASEIRQ = 10;
  647. { Comm Baud Rate indices }
  648. CBR_110 = $FF10;
  649. CBR_300 = $FF11;
  650. CBR_600 = $FF12;
  651. CBR_1200 = $FF13;
  652. CBR_2400 = $FF14;
  653. CBR_4800 = $FF15;
  654. CBR_9600 = $FF16;
  655. CBR_14400 = $FF17;
  656. CBR_19200 = $FF18;
  657. CBR_38400 = $FF1B;
  658. CBR_56000 = $FF1F;
  659. CBR_128000 = $FF23;
  660. CBR_256000 = $FF27;
  661. { notifications passed in low word of lParam on WM_COMMNOTIFY messages }
  662. CN_RECEIVE = $0001;
  663. CN_TRANSMIT = $0002;
  664. CN_EVENT = $0004;
  665. WM_COMMNOTIFY = $0044;
  666. type
  667. { Driver support }
  668. HDRVR = THandle;
  669. DRIVERPROC = function(dwDriverIdentifier: DWORD; hDriver: HDRVR; msg: UINT; lParam1, lParam2: LPARAM): LRESULT; far;
  670. const
  671. { Driver messages }
  672. DRV_LOAD = $0001;
  673. DRV_ENABLE = $0002;
  674. DRV_OPEN = $0003;
  675. DRV_CLOSE = $0004;
  676. DRV_DISABLE = $0005;
  677. DRV_FREE = $0006;
  678. DRV_CONFIGURE = $0007;
  679. DRV_QUERYCONFIGURE = $0008;
  680. DRV_INSTALL = $0009;
  681. DRV_REMOVE = $000A;
  682. DRV_EXITSESSION = $000B;
  683. DRV_EXITAPPLICATION = $000C;
  684. DRV_POWER = $000F;
  685. DRV_RESERVED = $0800;
  686. DRV_USER = $4000;
  687. type
  688. { LPARAM of DRV_CONFIGURE message }
  689. PDRVCONFIGINFO = ^DRVCONFIGINFO;
  690. LPDRVCONFIGINFO = ^DRVCONFIGINFO; far;
  691. DRVCONFIGINFO = record
  692. dwDCISize: DWORD;
  693. lpszDCISectionName: LPCSTR;
  694. lpszDCIAliasName: LPCSTR;
  695. end;
  696. TDrvConfigInfo = DRVCONFIGINFO;
  697. const
  698. { Supported return values for DRV_CONFIGURE message }
  699. DRVCNF_CANCEL = $0000;
  700. DRVCNF_OK = $0001;
  701. DRVCNF_RESTART = $0002;
  702. { Supported lParam1 of DRV_EXITAPPLICATION notification }
  703. DRVEA_NORMALEXIT = $0001;
  704. DRVEA_ABNORMALEXIT = $0002;
  705. { GetNextDriver flags }
  706. GND_FIRSTINSTANCEONLY = $00000001;
  707. GND_FORWARD = $00000000;
  708. GND_REVERSE = $00000002;
  709. type
  710. PDRIVERINFOSTRUCT = ^DRIVERINFOSTRUCT;
  711. LPDRIVERINFOSTRUCT = ^DRIVERINFOSTRUCT; far;
  712. DRIVERINFOSTRUCT = record
  713. length: UINT;
  714. hDriver: HDRVR;
  715. hModule: HINST;
  716. szAliasName: array [0..127] of AnsiChar;
  717. end;
  718. TDriverInfoStruct = DRIVERINFOSTRUCT;
  719. function GetFreeSystemResources(SysResource: UINT): UINT; external 'USER';
  720. procedure LogError(err: UINT; lpInfo: FarPointer); external 'KERNEL';
  721. procedure LogParamError(err: UINT; lpfn: FARPROC; param: FarPointer); external 'KERNEL';
  722. function GetWinDebugInfo(lpwdi: LPWINDEBUGINFO; flags: UINT): BOOL; external 'KERNEL';
  723. function SetWinDebugInfo(lpwdi: LPWINDEBUGINFO): BOOL; external 'KERNEL';
  724. procedure DebugOutput(flags: UINT; lpsz: LPCSTR; etc: array of const); cdecl; external 'KERNEL' name '_DebugOutput';
  725. function ExitWindowsExec(Exe, Params: LPCSTR): BOOL; external 'USER';
  726. { Pointer validation }
  727. function IsBadReadPtr(lp: FarPointer; cb: UINT): BOOL; external 'KERNEL';
  728. function IsBadWritePtr(lp: FarPointer; cb: UINT): BOOL; external 'KERNEL';
  729. function IsBadHugeReadPtr(lp: HugePointer; cb: DWORD): BOOL; external 'KERNEL';
  730. function IsBadHugeReadPtr(lp: FarPointer; cb: DWORD): BOOL; external 'KERNEL';
  731. function IsBadHugeWritePtr(lp: HugePointer; cb: DWORD): BOOL; external 'KERNEL';
  732. function IsBadHugeWritePtr(lp: FarPointer; cb: DWORD): BOOL; external 'KERNEL';
  733. function IsBadCodePtr(lpfn: FARPROC): BOOL; external 'KERNEL';
  734. function IsBadStringPtr(lpsz: LPSTR; cchMax: UINT): BOOL; external 'KERNEL';
  735. { Task Management }
  736. function IsTask(Task: HTASK): BOOL; external 'KERNEL';
  737. { File I/O }
  738. function _hread(FileHandle: HFILE; Buffer: HugePointer; Bytes: LongInt): LongInt; external 'KERNEL';
  739. function _hwrite(FileHandle: HFILE; Buffer: HugePointer; Bytes: LongInt): LongInt; external 'KERNEL';
  740. { International & AnsiChar Translation Support }
  741. function lstrcpyn(lpszString1: LPSTR; lpszString2: LPCSTR; cChars: SmallInt): LPSTR; external 'KERNEL';
  742. procedure hmemcpy(hpvDest, hpvSource: HugePointer; cbCopy: LongInt); external 'KERNEL';
  743. procedure hmemcpy(hpvDest, hpvSource: FarPointer; cbCopy: LongInt); external 'KERNEL';
  744. function IsDBCSLeadByte(bTestChar: BYTE): BOOL; external 'KERNEL';
  745. { Drawing bounds accumulation APIs }
  746. function SetBoundsRect(hDC: HDC; lprcBounds: LPRECT; flags: UINT): UINT; external 'GDI';
  747. function GetBoundsRect(hDC: HDC; lprcBounds: LPRECT; flags: UINT): UINT; external 'GDI';
  748. {$ifdef VAR_PARAMS_ARE_FAR}
  749. function SetBoundsRect(hDC: HDC; const lprcBounds: RECT; flags: UINT): UINT; external 'GDI';
  750. function GetBoundsRect(hDC: HDC; var lprcBounds: RECT; flags: UINT): UINT; external 'GDI';
  751. {$endif}
  752. { Coordinate transformation support }
  753. function SetWindowOrgEx(hdc: HDC; nX, nY: SmallInt; lpPoint: LPPOINT): BOOL; external 'GDI';
  754. function GetWindowOrgEx(hdc: HDC; lpPoint: LPPOINT): BOOL; external 'GDI';
  755. function SetWindowExtEx(hdc: HDC; nX, nY: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI';
  756. function GetWindowExtEx(hdc: HDC; lpSize: LPSIZE): BOOL; external 'GDI';
  757. function OffsetWindowOrgEx(hdc: HDC; nX, nY: SmallInt; lpPoint: LPPOINT): BOOL; external 'GDI';
  758. function ScaleWindowExtEx(hdc: HDC; nXnum, nXdenom, nYnum, nYdenom: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI';
  759. function SetViewportExtEx(hdc: HDC; nX, nY: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI';
  760. function GetViewportExtEx(hdc: HDC; lpSize: LPSIZE): BOOL; external 'GDI';
  761. function SetViewportOrgEx(hdc: HDC; nX, nY: SmallInt; lpPoint: LPPOINT): BOOL; external 'GDI';
  762. function GetViewportOrgEx(hdc: HDC; lpPoint: LPPOINT): BOOL; external 'GDI';
  763. function OffsetViewportOrgEx(hdc: HDC; nX, nY: SmallInt; lpPoint: LPPOINT): BOOL; external 'GDI';
  764. function ScaleViewportExtEx(hdc: HDC; nXnum, nXdenom, nYnum, nYdenom: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI';
  765. { Brush support }
  766. function GetBrushOrgEx(hDC: HDC; lpPoint: LPPOINT): BOOL; external 'GDI';
  767. { General drawing support }
  768. function MoveToEx(hdc: HDC; x, y: SmallInt; lpPoint: LPPOINT): BOOL; external 'GDI';
  769. function GetCurrentPositionEx(hdc: HDC; lpPoint: LPPOINT): BOOL; external 'GDI';
  770. { Text support }
  771. function GetTextExtentPoint(hdc: HDC; lpszString: LPCSTR; cbString: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI';
  772. {$ifdef VAR_PARAMS_ARE_FAR}
  773. function GetTextExtentPoint(hdc: HDC; lpszString: LPCSTR; cbString: SmallInt; var Size: SIZE): BOOL; external 'GDI';
  774. {$endif}
  775. { Font support }
  776. function GetAspectRatioFilterEx(hdc: HDC; lpAspectRatio: LPSIZE): BOOL; external 'GDI';
  777. function GetOutlineTextMetrics(hdc: HDC; cbData: UINT; lpotm: LPOUTLINETEXTMETRIC): WORD; external 'GDI';
  778. function EnumFontFamilies(hdc: HDC; lpszFamily: LPCSTR; fntenmprc: FONTENUMPROC; lParam: LPARAM): SmallInt; external 'GDI';
  779. function EnumFontFamilies(hdc: HDC; lpszFamily: LPCSTR; fntenmprc: TFarProc; lParam: LPARAM): SmallInt; external 'GDI';
  780. function GetFontData(hdc: HDC; dwTable, dwOffset: DWORD; lpvBuffer: FarPointer; cbData: DWORD): DWORD; external 'GDI';
  781. function CreateScalableFontResource(fHidden: UINT; lpszResourceFile, lpszFontFile, lpszCurrentPath: LPCSTR): BOOL; external 'GDI';
  782. function GetGlyphOutline(hdc: HDC; uChar, fuFormat: UINT; lpgm: LPGLYPHMETRICS; cbBuffer: DWORD; lpBuffer: FarPointer; lpmat2: LPMAT2): DWORD; external 'GDI';
  783. {$ifdef VAR_PARAMS_ARE_FAR}
  784. function GetGlyphOutline(hdc: HDC; uChar, fuFormat: UINT; var gm: GLYPHMETRICS; cbBuffer: DWORD; lpBuffer: FarPointer; var mat2: MAT2): DWORD; external 'GDI';
  785. {$endif}
  786. function GetCharABCWidths(hdc: HDC; uFirstChar, uLastChar: UINT; lpabc: LPABC): BOOL; external 'GDI';
  787. {$ifdef VAR_PARAMS_ARE_FAR}
  788. function GetCharABCWidths(hdc: HDC; uFirstChar, uLastChar: UINT; var abc: ABC): BOOL; external 'GDI';
  789. {$endif}
  790. function GetKerningPairs(hdc: HDC; cPairs: SmallInt; lpkrnpair: LPKERNINGPAIR): SmallInt; external 'GDI';
  791. function GetRasterizerCaps(lpraststat: LPRASTERIZER_STATUS; cb: SmallInt): BOOL; external 'GDI';
  792. {$ifdef VAR_PARAMS_ARE_FAR}
  793. function GetRasterizerCaps(var raststat: RASTERIZER_STATUS; cb: SmallInt): BOOL; external 'GDI';
  794. {$endif}
  795. { Bitmap support }
  796. function SetBitmapDimensionEx(hbm: HBITMAP; nX, nY: SmallInt; lpSize: LPSIZE): BOOL; external 'GDI';
  797. function GetBitmapDimensionEx(hBitmap: HBITMAP; lpDimension: LPSIZE): BOOL; external 'GDI';
  798. { Metafile support }
  799. function SetMetaFileBitsBetter(hmf: HGLOBAL): HMETAFILE; external 'GDI';
  800. { Printing support }
  801. function StartDoc(hdc: HDC; lpdi: LPDOCINFO): SmallInt; external 'GDI';
  802. {$ifdef VAR_PARAMS_ARE_FAR}
  803. function StartDoc(hdc: HDC; var di: DOCINFO): SmallInt; external 'GDI';
  804. {$endif}
  805. function StartPage(hdc: HDC): SmallInt; external 'GDI';
  806. function EndPage(hdc: HDC): SmallInt; external 'GDI';
  807. function EndDoc(hdc: HDC): SmallInt; external 'GDI';
  808. function AbortDoc(hdc: HDC): SmallInt; external 'GDI';
  809. function SetAbortProc(hdc: HDC; abrtprc: ABORTPROC): SmallInt; external 'GDI';
  810. function SpoolFile(lpszPrinter, lpszPort, lpszJob, lpszFile: LPSTR): HANDLE; external 'GDI';
  811. { System Parameters support }
  812. function SystemParametersInfo(uAction, uParam: UINT; lpvParam: FarPointer; fuWinIni: UINT): BOOL; external 'USER';
  813. { Rectangle support }
  814. function SubtractRect(lprcDest: LPRECT; lprcSource1, lprcSource2: LPRECT): BOOL; external 'USER';
  815. {$ifdef VAR_PARAMS_ARE_FAR}
  816. function SubtractRect(var rcDest: RECT; var rcSource1, rcSource2: RECT): BOOL; external 'USER';
  817. {$endif}
  818. { Window message support }
  819. function GetMessageExtraInfo: LPARAM; external 'USER';
  820. function GetQueueStatus(flags: UINT): DWORD; external 'USER';
  821. { Window class management }
  822. { in Windows 3.1+, RegisterClass returns an ATOM that unquely identifies the
  823. class. In Windows 3.0 and earlier, the return value is BOOL. That's why we
  824. redefine this function in the win31 unit. }
  825. function RegisterClass(lpwc: LPWNDCLASS): ATOM; external 'USER';
  826. {$ifdef VAR_PARAMS_ARE_FAR}
  827. function RegisterClass(var wc: WNDCLASS): ATOM; external 'USER';
  828. {$endif}
  829. { Window size, position, Z-order, and visibility }
  830. function GetWindowPlacement(hwnd: HWND; lpwndpl: LPWINDOWPLACEMENT): BOOL; external 'USER';
  831. function SetWindowPlacement(hwnd: HWND; lpwndpl: LPWINDOWPLACEMENT): BOOL; external 'USER';
  832. { Window coordinate mapping and hit-testing }
  833. procedure MapWindowPoints(hwndFrom, hwndTo: HWND; lppt: LPPOINT; cpt: UINT); external 'USER';
  834. {$ifdef VAR_PARAMS_ARE_FAR}
  835. procedure MapWindowPoints(hwndFrom, hwndTo: HWND; var pt: POINT; cpt: UINT); external 'USER';
  836. {$endif}
  837. { Window drawing support }
  838. { note: the first parameter in this function is declared 'register' in windows.h, even though
  839. the calling convention of the function is 'pascal'
  840. todo: figure out whether the first parameter really needs to be passed in register, or
  841. whether the 'register' modifier is ignored by 16-bit C compilers, when the calling
  842. convention is 'pascal'.
  843. }
  844. function GetDCEx({register} hwnd: HWND; hrgnClip: HRGN; flags: DWORD): HDC; external 'USER';
  845. { Window repainting }
  846. function LockWindowUpdate(hwndLock: HWND): BOOL; external 'USER';
  847. function RedrawWindow(hwnd: HWND; lprcUpdate: LPRECT; hrgnUpdate: HRGN; flags: UINT): BOOL; external 'USER';
  848. { Window scrolling }
  849. function ScrollWindowEx(hwnd: HWND; dx, dy: SmallInt;
  850. prcScroll, prcClip: LPRECT;
  851. hrgnUpdate: HRGN; prcUpdate: LPRECT; flags: UINT): SmallInt; external 'USER';
  852. { Menu support }
  853. function IsMenu(hmenu: HMENU): BOOL; external 'USER';
  854. { Scroll bar support }
  855. function EnableScrollBar(hwnd: HWND; fnSBFlags: SmallInt; fuArrowFlags: UINT): BOOL; external 'USER';
  856. { Clipboard Manager Functions }
  857. function GetOpenClipboardWindow: HWND; external 'USER';
  858. { Mouse cursor support }
  859. function CopyCursor(hinst: HINST; hcur: HCURSOR): HCURSOR; external 'USER';
  860. function GetCursor: HCURSOR; external 'USER';
  861. procedure GetClipCursor(lprc: LPRECT); external 'USER';
  862. {$ifdef VAR_PARAMS_ARE_FAR}
  863. procedure GetClipCursor(var rc: RECT); external 'USER';
  864. {$endif}
  865. { Icon support }
  866. function CopyIcon(hinst: HINST; hicon: HICON): HICON; external 'USER';
  867. { Dialog directory support }
  868. function DlgDirSelectEx(hwndDlg: HWND; lpszPath: LPSTR; cbPath, idListBox: SmallInt): BOOL; external 'USER';
  869. function DlgDirSelectComboBoxEx(hwndDlg: HWND; lpszPath: LPSTR; cbPath, idComboBox: SmallInt): BOOL; external 'USER';
  870. { Windows hook support }
  871. function SetWindowsHookEx(idHook: SmallInt; lpfn: HOOKPROC; hInstance: HINST; hTask: HTASK): HHOOK; external 'USER';
  872. function UnhookWindowsHookEx(hHook: HHOOK): BOOL; external 'USER';
  873. function CallNextHookEx(hHook: HHOOK; code: SmallInt; wParam: WPARAM; lParam: LPARAM): LRESULT; external 'USER';
  874. { Debugger support }
  875. function QuerySendMessage(h1, h2, h3: HANDLE; lpmsg: LPMSG): BOOL; external 'USER';
  876. function LockInput(h1: HANDLE; hwndInput: HWND; fLock: BOOL): BOOL; external 'USER';
  877. function GetSystemDebugState: LONG; external 'USER';
  878. { Comm support }
  879. function EnableCommNotification(idComDev: SmallInt; hwnd: HWND; cbWriteNotify, cbOutQueue: SmallInt): BOOL; external 'USER';
  880. { Driver support }
  881. function DefDriverProc(dwDriverIdentifier: DWORD; driverID: HDRVR; message: UINT; lParam1, lParam2: LPARAM): LRESULT; external 'USER';
  882. function OpenDriver(szDriverName, szSectionName: LPCSTR; lParam2: LPARAM): HDRVR; external 'USER';
  883. function CloseDriver(hDriver: HDRVR; lParam1, lParam2: LPARAM): LRESULT; external 'USER';
  884. function SendDriverMessage(hDriver: HDRVR; message: UINT; lParam1, lParam2: LPARAM): LRESULT; external 'USER';
  885. function GetDriverModuleHandle(hDriver: HDRVR): HINST; external 'USER';
  886. function GetNextDriver(hdrvr: HDRVR; fdwFlag: DWORD): HDRVR; external 'USER';
  887. function GetDriverInfo(hdrvr: HDRVR; lpdis: LPDRIVERINFOSTRUCT): BOOL; external 'USER';
  888. implementation
  889. end.