win31.pp 31 KB

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