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