WIN.DEF 97 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115
  1. (****************************** Module Header ******************************
  2. *
  3. * Copyright (c) 1989..1992 Clarion Software Corporation
  4. *
  5. * This file is compatible with OS/2 version 1.2.
  6. *
  7. * Module Name: Win
  8. *
  9. * OS/2 Presentation Manager Window Manager definition file
  10. * Release 3.10
  11. *
  12. *****************************************************************************
  13. *)
  14. (*# call(o_a_size => off,
  15. o_a_copy=>off,
  16. result_optional=>on,
  17. reg_saved => (si, di, ds, st1, st2),
  18. reg_param => (),
  19. seg_name => none,
  20. near_call => off,
  21. ds_eq_ss => off) *)
  22. (*# module(implementation=>off, init_code => off) *)
  23. (*# name(prefix => os2_lib) *)
  24. (*# data(near_ptr => off,var_enum_size=>off) *)
  25. (*# check(index=>off,range=>off,overflow=>off,nil_ptr=>off) *)
  26. DEFINITION MODULE Win;
  27. FROM OS2DEF IMPORT HDC,HRGN,HAB,HPS,HBITMAP,HWND,HMODULE,HSEM,LSET,
  28. POINTL,RECTL,PID,TID,COLOR,BOOL,ERRORID,LHANDLE ;
  29. (**)
  30. (*--- Conditional sections, set to TRUE if required ------------------------*)
  31. (**)
  32. CONST
  33. i_GEN1 = TRUE ; (* General section 1 *)
  34. i_GEN2 = TRUE ; (* General section 2 *)
  35. i_GEN3 = TRUE ; (* General section 3 *)
  36. i_MSG1 = TRUE ; (* Message management *)
  37. i_DTYPES = FALSE; (* WinRegisterUserDatatype types *)
  38. i_MSG2 = FALSE; (* Message management uncommon *)
  39. i_KBDMOU = TRUE ; (* Mouse and keyboard input *)
  40. i_DIALOG1 = TRUE ; (* Dialog boxes *)
  41. i_DIALOG2 = TRUE ; (* Dialog boxes uncommon *)
  42. i_STATIC = FALSE; (* Static controls *)
  43. i_BUTTON = TRUE ; (* Button controls *)
  44. i_ENTRY = TRUE ; (* Entry fields *)
  45. i_MLENTRY = FALSE; (* Multiple line entry fields *)
  46. i_LIST = TRUE ; (* List box controls *)
  47. i_MENU = TRUE ; (* Menu controls *)
  48. i_SCROLL = FALSE; (* Scroll bar controls *)
  49. i_FRAME1 = TRUE ; (* Frame manager *)
  50. i_FRAME2 = TRUE ; (* Frame manager uncommon *)
  51. i_FRAMECTL = FALSE; (* Frame controls (title bars & size border) *)
  52. i_RECT = TRUE ; (* Rectangle routines *)
  53. i_SYS = TRUE ; (* System values *)
  54. i_COLOR = FALSE; (* Colors *)
  55. i_TIMER = TRUE ; (* Timer routines *)
  56. i_ACCEL = FALSE; (* Keyboard accelerators *)
  57. i_TRACK = TRUE ; (* WinTrackRect() function *)
  58. i_CLIP = FALSE; (* Clipboard manager *)
  59. i_CURSOR = FALSE; (* Text cursors *)
  60. i_POINTER = FALSE; (* Mouse pointers *)
  61. i_LATER = FALSE; (* Defines which version of SPTR definitions to include *)
  62. i_HOOK = FALSE; (* Hook manager *)
  63. i_SHELL = TRUE ; (* Shell API *)
  64. i_COUNTRY = FALSE; (* Country support *)
  65. i_HEAP = FALSE; (* Heap Manager *)
  66. i_ATOM = FALSE; (* Atom Manager *)
  67. i_CATCH = FALSE; (* WinCatch/WinThrow support *)
  68. i_ERROR = TRUE ; (* Error code definitions *)
  69. i_DDE = FALSE; (* DDE Manager *)
  70. i_NLS = FALSE; (* DBCS window manager definition *)
  71. i_WINHELP = FALSE; (* Help Manager definitions *)
  72. i_WINLOAD = FALSE; (* Load/Delete Library/Procedure *)
  73. i_MACROS = TRUE ; (* Inline Helper Macro Procedures *)
  74. (*%T i_MACROS *)
  75. (* Inline utility procedures *)
  76. (*# save, call(inline =>on) *)
  77. CONST
  78. (*%T _fcall *) _Ret = 0CBH; (*%E *)
  79. (*%F _fcall *) _Ret = 0C3H; (*%E *)
  80. TYPE
  81. _C1 = ARRAY[0..0] OF BYTE;
  82. _C3 = ARRAY[0..2] OF BYTE;
  83. (*# call(reg_param=>(ax,dx),reg_saved=>(bx,cx,si,di,es,ds,st1,st2)) *)
  84. INLINE PROCEDURE MAKELONG(lo,hi:WORD):LONGWORD = _C1(_Ret);
  85. (*# call(reg_param=>(ax,dx),reg_saved=>(bx,cx,si,di,es,ds,st1,st2)) *)
  86. INLINE PROCEDURE LOWORD(lw:LONGWORD):WORD = _C1(_Ret);
  87. (*# call(reg_param=>(dx,ax),reg_saved=>(bx,cx,si,di,es,ds,st1,st2)) *)
  88. INLINE PROCEDURE HIWORD(lw:LONGWORD):WORD = _C1(_Ret);
  89. (*# call(reg_param=>(ax),reg_saved=>(bx,cx,dx,si,di,es,ds,st1,st2)) *)
  90. INLINE PROCEDURE LOBYTE(lw:WORD):BYTE = _C1(_Ret);
  91. (*# call(reg_param=>(ax),reg_saved=>(bx,cx,dx,si,di,es,ds,st1,st2)) *)
  92. INLINE PROCEDURE HIBYTE(lw:WORD):BYTE = _C3(86H,0C4H (* xchg al,ah *),_Ret);
  93. (*# restore *)
  94. (*%E *) (* i_MACROS *)
  95. (**)
  96. (**--- Win General section 1 -----------------------------------------------*)
  97. (**)
  98. (*%T i_GEN1*)
  99. TYPE
  100. MPARAM = LONGCARD;
  101. MRESULT = LONGCARD;
  102. PFNWP = PROCEDURE(HWND,CARDINAL,MPARAM,MPARAM):MRESULT;
  103. CONST
  104. HWND_DESKTOP = HWND(1);
  105. HWND_OBJECT = HWND(2);
  106. HWND_TOP = HWND(3);
  107. HWND_BOTTOM = HWND(4);
  108. HWND_THREADCAPTURE = HWND(5);
  109. (* Standard Window Styles *)
  110. WS_VISIBLE = 080000000H;
  111. WS_DISABLED = 040000000H;
  112. WS_CLIPCHILDREN = 020000000H;
  113. WS_CLIPSIBLINGS = 010000000H;
  114. WS_PARENTCLIP = 08000000H;
  115. WS_SAVEBITS = 04000000H;
  116. WS_SYNCPAINT = 02000000H;
  117. WS_MINIMIZED = 01000000H;
  118. WS_MAXIMIZED = 0800000H;
  119. (* Dialog manager styles *)
  120. WS_GROUP = 010000H;
  121. WS_TABSTOP = 020000H;
  122. WS_MULTISELECT = 040000H;
  123. (* Class styles *)
  124. CS_MOVENOTIFY = 01H;
  125. CS_SIZEREDRAW = 04H;
  126. CS_HITTEST = 08H;
  127. CS_PUBLIC = 010H;
  128. CS_FRAME = 020H;
  129. CS_CLIPCHILDREN = 020000000H;
  130. CS_CLIPSIBLINGS = 010000000H;
  131. CS_PARENTCLIP = 08000000H;
  132. CS_SAVEBITS = 04000000H;
  133. CS_SYNCPAINT = 02000000H;
  134. PROCEDURE RegisterClass(h: HAB; c: FarADDRESS; p: PFNWP; l: LONGCARD; e: CARDINAL) : BOOLEAN;
  135. PROCEDURE DefWindowProc(h: HWND; m: CARDINAL; p1,p2: MPARAM) : MRESULT;
  136. PROCEDURE DestroyWindow(h: HWND) : BOOLEAN;
  137. PROCEDURE ShowWindow(h: HWND; v: BOOL) : BOOLEAN;
  138. PROCEDURE QueryWindowRect(h: HWND; VAR r: RECTL) : BOOLEAN;
  139. PROCEDURE BeginPaint(h: HWND; s:HPS; VAR r: RECTL) : HPS;
  140. PROCEDURE EndPaint(h:HPS) : BOOLEAN;
  141. PROCEDURE GetPS(h: HWND) : HPS;
  142. PROCEDURE GetClipPS(h: HWND; w: HWND; c: CARDINAL) : HPS;
  143. PROCEDURE ReleasePS(h:HPS) : BOOLEAN;
  144. PROCEDURE OpenWindowDC(h: HWND) : HDC;
  145. PROCEDURE ScrollWindow(h: HWND; x,y: INTEGER; VAR s,c: RECTL; u: HRGN; VAR ur: RECTL; o: CARDINAL) : CARDINAL;
  146. PROCEDURE IsWindowShowing(h : HWND) : BOOLEAN;
  147. CONST
  148. (* WinGetClipPS flags *)
  149. PSF_LOCKWINDOWUPDATE = 01H;
  150. PSF_CLIPUPWARDS = 02H;
  151. PSF_CLIPDOWNWARDS = 04H;
  152. PSF_CLIPSIBLINGS = 08H;
  153. PSF_CLIPCHILDREN = 010H;
  154. PSF_PARENTCLIP = 020H;
  155. (* WinScrollWindow() flags *)
  156. SW_SCROLLCHILDREN = 01H;
  157. SW_INVALIDATERGN = 02H;
  158. PROCEDURE FillRect(h : HPS; VAR r : RECTL; c: COLOR) : BOOLEAN;
  159. (* WinInitialize/WinTerminate Interface declarations *)
  160. TYPE
  161. QVERSDATA = RECORD
  162. environment : CARDINAL;
  163. version : CARDINAL;
  164. END;
  165. CONST
  166. QV_OS2 = 00H;
  167. QV_CMS = 01H;
  168. QV_TSO = 02H;
  169. QV_TSOBATCH = 03H;
  170. QV_OS400 = 04H;
  171. PROCEDURE QueryVersion(h:HAB) : LONGCARD;
  172. PROCEDURE Initialize(o:CARDINAL) : HAB;
  173. PROCEDURE Terminate(h:HAB) : BOOLEAN;
  174. PROCEDURE QueryAnchorBlock(hwnd : LONGCARD) : LONGCARD;
  175. PROCEDURE SetActiveWindow(d,w: HWND) : BOOLEAN;
  176. PROCEDURE QueryActiveWindow(h: HWND; l: BOOL) : HWND;
  177. (*%E*)
  178. (**)
  179. (**--- Win General section 2 -----------------------------------------------*)
  180. (**)
  181. (*%T i_GEN2*)
  182. PROCEDURE CreateWindow(pa: HWND; c,n: ARRAY OF CHAR; s: LONGCARD; x,y,w,h: INTEGER; o,b: HWND; i: CARDINAL; d,p: FarADDRESS) : HWND;
  183. PROCEDURE EnableWindow(h: HWND; e: BOOL) : BOOLEAN;
  184. PROCEDURE IsWindowEnabled(h: HWND) : BOOLEAN;
  185. PROCEDURE EnableWindowUpdate(h: HWND; v: BOOL) : BOOLEAN;
  186. PROCEDURE IsWindowVisible(h: HWND) : BOOLEAN;
  187. PROCEDURE QueryWindowText(h: HWND; l: CARDINAL; VAR b: ARRAY OF CHAR) : CARDINAL;
  188. PROCEDURE SetWindowText(h: HWND; s: ARRAY OF CHAR) : BOOLEAN;
  189. PROCEDURE QueryWindowTextLength(h: HWND) : CARDINAL;
  190. PROCEDURE WindowFromID(p: HWND; i: CARDINAL) : HWND;
  191. PROCEDURE MultWindowFromIDs(p: HWND; VAR w: HWND; f,l: CARDINAL) : INTEGER;
  192. PROCEDURE IsWindow(h:HAB; w: HWND) : BOOLEAN;
  193. (* QueryWindow Codes *)
  194. TYPE QW = (QW_NEXT, QW_PREV, QW_TOP, QW_BOTTOM,
  195. QW_OWNER, QW_PARENT, QW_NEXTTOP, QW_PREVTOP,
  196. QW_FRAMEOWNER);
  197. PROCEDURE QueryWindow(h: HWND; c: QW; l: BOOL) : HWND;
  198. PROCEDURE SetParent(h,p: HWND; r: BOOL) : BOOLEAN;
  199. PROCEDURE IsChild(c,p: HWND) : BOOLEAN;
  200. PROCEDURE SetOwner(h,o: HWND) : BOOLEAN;
  201. PROCEDURE QueryWindowProcess(h: HWND; VAR p: PID; VAR t: TID) : BOOLEAN;
  202. PROCEDURE QueryObjectWindow(h: HWND) : HWND;
  203. PROCEDURE QueryDesktopWindow(h:HAB; c: HDC) : HWND;
  204. TYPE
  205. SWP = RECORD
  206. options : BITSET;
  207. cy : INTEGER;
  208. cx : INTEGER;
  209. y : INTEGER;
  210. x : INTEGER;
  211. InsertBehind : HWND;
  212. hwnd : HWND;
  213. END;
  214. PROCEDURE SetWindowPos(h,b: HWND; x,y,cx,cy: INTEGER; s: BITSET) : BOOLEAN;
  215. PROCEDURE QueryWindowPos(h: HWND; VAR s: SWP) : BOOLEAN;
  216. PROCEDURE SetMultWindowPos(h:HAB; VAR s: ARRAY OF SWP; c: CARDINAL) : BOOLEAN;
  217. (* SWP options *)
  218. CONST
  219. SWP_SIZE = {0};
  220. SWP_MOVE = {1};
  221. SWP_ZORDER = {2};
  222. SWP_SHOW = {3};
  223. SWP_HIDE = {4};
  224. SWP_NOREDRAW = {5};
  225. SWP_NOADJUST = {6};
  226. SWP_ACTIVATE = {7};
  227. SWP_DEACTIVATE = {8};
  228. SWP_EXTSTATECHANGE = {9};
  229. SWP_MINIMIZE = {10};
  230. SWP_MAXIMIZE = {11};
  231. SWP_RESTORE = {12};
  232. SWP_FOCUSACTIVATE = {13};
  233. SWP_FOCUSDEACTIVATE = {14};
  234. (* Values returned from WM_ADJUSTWINDOWPOS and passed to WM_WINDOWPOSCHANGED *)
  235. AWP_MINIMIZED = 00010000H;
  236. AWP_MAXIMIZED = 00020000H;
  237. AWP_RESTORED = 00040000H;
  238. AWP_ACTIVATE = 00080000H;
  239. AWP_DEACTIVATE = 00100000H;
  240. (* Window painting *)
  241. PROCEDURE UpdateWindow(h: HWND) : BOOLEAN;
  242. PROCEDURE InvalidateRect(h: HWND; VAR p: RECTL; i: BOOL) : BOOLEAN;
  243. PROCEDURE InvalidateRegion(h: HWND; r: HRGN; i: BOOL) : BOOLEAN;
  244. (* Drawing helpers *)
  245. PROCEDURE InvertRect(h:HPS; VAR r: RECTL) : BOOLEAN;
  246. PROCEDURE DrawBitmap(h:HPS; bm: HBITMAP; VAR s: RECTL; VAR d: POINTL; f,b: LONGINT; r: BITSET) : BOOLEAN;
  247. (* WinDrawBitmap() flags *)
  248. CONST
  249. DBM_NORMAL = {};
  250. DBM_INVERT = {1};
  251. DBM_HALFTONE = {2};
  252. DBM_STRETCH = {3};
  253. DBM_IMAGEATTRS = {4};
  254. PROCEDURE DrawText(h:HPS; n: INTEGER; t: ARRAY OF CHAR; VAR r: RECTL; f,b: LONGINT; c:BITSET ) : INTEGER;
  255. (* DrawText() Codes:
  256. From DT_LEFT to DT_EXTERNALLEADING, the codes are designed to be combined
  257. with SS_TEXT to create variations of the basic text static item.
  258. *)
  259. CONST
  260. DT_LEFT = {};
  261. DT_EXTERNALLEADING = {7};
  262. DT_CENTER = {8};
  263. DT_RIGHT = {9};
  264. DT_TOP = {};
  265. DT_VCENTER = {10};
  266. DT_BOTTOM = {11};
  267. DT_HALFTONE = {12};
  268. DT_MNEMONIC = {13};
  269. DT_WORDBREAK = {14};
  270. DT_ERASERECT = {15};
  271. DT_QUERYEXTENT = {1};
  272. DT_TEXTATTRS = {6};
  273. PROCEDURE DrawBorder(s:HPS; VAR r: RECTL; h,v: INTEGER; b,i: LONGINT; c: BITSET) : BOOLEAN;
  274. (* WinDrawBorder() flags *)
  275. CONST
  276. DB_PATCOPY = {};
  277. DB_PATINVERT = {0};
  278. DB_DESTINVERT = {1};
  279. DB_AREAMIXMODE = {0,1};
  280. DB_ROP = {0..2};
  281. DB_INTERIOR = {3};
  282. DB_AREAATTRS = {4};
  283. DB_STANDARD = {8};
  284. DB_DLGBORDER = {9};
  285. (* Resource Loading Functions *)
  286. PROCEDURE LoadString(h:HAB; r: HMODULE; i,m: CARDINAL; VAR b: ARRAY OF CHAR) : INTEGER;
  287. PROCEDURE LoadMessage(h:HAB; m: HMODULE; c: CARDINAL; i: INTEGER; VAR a: ARRAY OF CHAR) : INTEGER; (*?*)
  288. (*%E*)
  289. (**)
  290. (**--- Win General section 3 -----------------------------------------------*)
  291. (**)
  292. (*%T i_GEN3*)
  293. TYPE
  294. CREATESTRUCT = RECORD
  295. PresParams : FarADDRESS;
  296. CtlData : FarADDRESS;
  297. id : CARDINAL;
  298. InsertBehind : HWND;
  299. Owner : HWND;
  300. cy,cx,y,x : INTEGER;
  301. Style : LONGCARD;
  302. Text : FarADDRESS;
  303. Class : FarADDRESS;
  304. Parent : HWND;
  305. END;
  306. CLASSINFO = RECORD
  307. ClassStyle : LONGCARD;
  308. WindowProc : PFNWP;
  309. WindowData : CARDINAL;
  310. END;
  311. PROCEDURE SubclassWindow(h: HWND; p: PFNWP) : PFNWP;
  312. PROCEDURE QueryClassName(h: HWND; l: CARDINAL; VAR b: ARRAY OF CHAR) : CARDINAL;
  313. PROCEDURE QueryClassInfo(h:HAB; n: FarADDRESS; VAR c: CLASSINFO) : BOOLEAN;
  314. PROCEDURE IsThreadActive(h:HAB) : BOOLEAN;
  315. PROCEDURE QuerySysModalWindow(h: HWND; l: BOOL) : HWND;
  316. PROCEDURE SetSysModalWindow(d: HWND; w: HWND) : BOOLEAN;
  317. PROCEDURE LockWindow(h: HWND; l: BOOL) : HWND;
  318. PROCEDURE RegisterWindowDestroy(h: HWND; r: BOOL) : BOOLEAN;
  319. PROCEDURE QueryWindowLockCount(h: HWND) : INTEGER;
  320. PROCEDURE QueryWindowUShort(h: HWND; b: INTEGER) : CARDINAL;
  321. PROCEDURE SetWindowUShort(h: HWND; b: INTEGER; d: CARDINAL ) : BOOLEAN;
  322. PROCEDURE QueryWindowULong(h: HWND; b: INTEGER) : LONGCARD;
  323. PROCEDURE SetWindowULong(h: HWND; b: INTEGER; d: LONGCARD) : BOOLEAN;
  324. PROCEDURE QueryWindowPtr(h: HWND; i: CARDINAL) : FarADDRESS;
  325. PROCEDURE SetWindowPtr(h: HWND; b: CARDINAL; p: FarADDRESS) : BOOLEAN;
  326. PROCEDURE SetWindowBits(h: HWND; b: CARDINAL; d,m: LONGCARD) : BOOLEAN;
  327. (* Standard QueryWindowShort/ULong() Indexes *)
  328. CONST
  329. QWS_USER = 0;
  330. QWS_ID = -1;
  331. QWS_MIN = -1;
  332. QWL_USER = 0;
  333. QWL_STYLE = -2;
  334. QWP_PFNWP = -3;
  335. QWL_HMQ = -4;
  336. QWL_MIN = -4;
  337. (* WC_FRAME QueryWindowUShort/ULong() Indexes *)
  338. QWL_HHEAP = 04H;
  339. QWL_HWNDFOCUSSAVE = 018H;
  340. QWS_FLAGS = 08H;
  341. QWS_RESULT = 0AH;
  342. QWS_XRESTORE = 0CH;
  343. QWS_YRESTORE = 0EH;
  344. QWS_CXRESTORE = 010H;
  345. QWS_CYRESTORE = 012H;
  346. QWS_XMINIMIZE = 014H;
  347. QWS_YMINIMIZE = 016H;
  348. (* Window enumeration *)
  349. TYPE
  350. HENUM = LHANDLE;
  351. PROCEDURE BeginEnumWindows(h: HWND) : HENUM;
  352. PROCEDURE GetNextWindow(h: HENUM) : HWND;
  353. PROCEDURE EndEnumWindows(h: HENUM) : BOOLEAN;
  354. PROCEDURE WindowFromPoint(h: HWND; VAR p: POINTL; e,l: BOOL) : HWND;
  355. PROCEDURE MapWindowPoints(f,t: HWND; VAR p: POINTL; c: INTEGER) : BOOLEAN;
  356. (* More window painting routines *)
  357. PROCEDURE ValidateRect(h: HWND; VAR r: RECTL; c: BOOL) : BOOLEAN;
  358. PROCEDURE ValidateRegion(h: HWND; r: HRGN; c: BOOL) : BOOLEAN;
  359. PROCEDURE WindowFromDC(h:HDC) : HWND;
  360. PROCEDURE QueryWindowDC(h: HWND) : HDC;
  361. PROCEDURE GetScreenPS(h: HWND) : HPS;
  362. PROCEDURE QueryUpdateRect(h: HWND; VAR r: RECTL) : BOOLEAN;
  363. PROCEDURE QueryUpdateRegion(h: HWND; r: HRGN) : INTEGER;
  364. PROCEDURE ExcludeUpdateRegion(h:HPS; w: HWND) : INTEGER;
  365. PROCEDURE LockWindowUpdate(d,l: HWND) : BOOLEAN;
  366. PROCEDURE LockVisRegions(h: HWND; l: BOOL) : BOOLEAN;
  367. (*%E*)
  368. (**)
  369. (**--- Win Message Manager Common ------------------------------------------*)
  370. (**)
  371. (*%T i_MSG1*)
  372. TYPE
  373. QMSG = RECORD
  374. hwnd : HWND;
  375. msg : CARDINAL;
  376. mp1 : FarADDRESS;
  377. mp2 : FarADDRESS;
  378. time : LONGCARD;
  379. ptl : POINTL;
  380. END;
  381. HMQ = LHANDLE;
  382. CONST
  383. WM_NULL = 00H;
  384. WM_CREATE = 01H;
  385. WM_DESTROY = 02H;
  386. WM_OTHERWINDOWDESTROYED = 03H;
  387. WM_ENABLE = 04H;
  388. WM_SHOW = 05H;
  389. WM_MOVE = 06H;
  390. WM_SIZE = 07H;
  391. WM_ADJUSTWINDOWPOS = 08H;
  392. WM_CALCVALIDRECTS = 09H;
  393. WM_SETWINDOWPARAMS = 0AH;
  394. WM_QUERYWINDOWPARAMS = 0BH;
  395. WM_HITTEST = 0CH;
  396. WM_ACTIVATE = 0DH;
  397. WM_SETFOCUS = 0FH;
  398. WM_SETSELECTION = 010H;
  399. WM_PPAINT = 011H;
  400. WM_PSETFOCUS = 012H;
  401. WM_PSYSCOLORCHANGE = 013H;
  402. WM_PSIZE = 014H;
  403. WM_PACTIVATE = 015H;
  404. WM_PCONTROL = 016H;
  405. WM_COMMAND = 020H;
  406. WM_SYSCOMMAND = 021H;
  407. WM_HELP = 022H;
  408. WM_PAINT = 023H;
  409. WM_TIMER = 024H;
  410. WM_SEM1 = 025H;
  411. WM_SEM2 = 026H;
  412. WM_SEM3 = 027H;
  413. WM_SEM4 = 028H;
  414. WM_CLOSE = 029H;
  415. WM_QUIT = 02AH;
  416. WM_SYSCOLORCHANGE = 02BH;
  417. WM_SYSVALUECHANGED = 02DH;
  418. WM_APPTERMINATENOTIFY = 02EH;
  419. WM_PRESPARAMCHANGED = 02FH;
  420. (* control Notification Messages *)
  421. WM_CONTROL = 030H;
  422. WM_VSCROLL = 031H;
  423. WM_HSCROLL = 032H;
  424. WM_INITMENU = 033H;
  425. WM_MENUSELECT = 034H;
  426. WM_MENUEND = 035H;
  427. WM_DRAWITEM = 036H;
  428. WM_MEASUREITEM = 037H;
  429. WM_CONTROLPOINTER = 038H;
  430. WM_CONTROLHEAP = 039H;
  431. WM_QUERYDLGCODE = 03AH;
  432. WM_INITDLG = 03BH;
  433. WM_SUBSTITUTESTRING = 03CH;
  434. WM_MATCHMNEMONIC = 03DH;
  435. WM_SAVEAPPLICATION = 03EH;
  436. WM_HELPBASE = 0F00H;
  437. WM_HELPTOP = 0FFFH;
  438. WM_USER = 01000H;
  439. (* WM_COMMAND Msg Source Codes *)
  440. CMDSRC_PUSHBUTTON = 1;
  441. CMDSRC_MENU = 2;
  442. CMDSRC_ACCELERATOR = 3;
  443. CMDSRC_OTHER = 0;
  444. (* The following record is used to access the WM_COMMAND,
  445. WM_HELP, and WM_SYSCOMMAND message parameters:
  446. *)
  447. TYPE
  448. COMMANDMSG = RECORD
  449. source : CARDINAL;
  450. mouse : CARDINAL;
  451. cmd : CARDINAL;
  452. unused : CARDINAL;
  453. END; (*COMMANDMSG*)
  454. CONTROLMSG = RECORD
  455. controlspec: LONGCARD;
  456. id : CARDINAL;
  457. notifycode : CARDINAL;
  458. END; (*CONTROLMSG*)
  459. (* To use COMMANDMSG or CONTROLMSG,
  460. assign typecasted mp2 to local variable of type COMMANDMSG
  461. i.e.
  462. cm := COMMANDMSG(mp2);
  463. *)
  464. TYPE
  465. MQINFO = RECORD
  466. cb : CARDINAL;
  467. pid : PID;
  468. tid : TID;
  469. cmsgs : CARDINAL;
  470. reserved : FarADDRESS;
  471. END;
  472. PROCEDURE SendMsg(h: HWND; m: CARDINAL; p1,p2 :MPARAM) : MRESULT;
  473. PROCEDURE QueryQueueInfo(h: HMQ; VAR i: MQINFO; c: CARDINAL) : BOOLEAN;
  474. PROCEDURE CreateMsgQueue(h:HAB; s: INTEGER) : HMQ;
  475. PROCEDURE DestroyMsgQueue(q: HMQ) : BOOLEAN;
  476. PROCEDURE CancelShutdown(q: HMQ; always: BOOL) : BOOLEAN;
  477. PROCEDURE GetMsg(h:HAB; VAR m: QMSG; w: HWND; f,l: CARDINAL) : BOOLEAN;
  478. PROCEDURE DispatchMsg(h:HAB; VAR m: QMSG) : MRESULT;
  479. PROCEDURE PostMsg(h: HWND; i: CARDINAL; p1,p2: MPARAM) : BOOLEAN;
  480. PROCEDURE RegisterUserMsg(h:HAB; id: CARDINAL; dtype1,dir1,dtype2,dir2,dtyper : INTEGER) : BOOLEAN;
  481. PROCEDURE RegisterUserDatatype(h:HAB; d: INTEGER; c: INTEGER; VAR t : INTEGER) : BOOLEAN;
  482. PROCEDURE SetMsgMode(h:HAB; c: ARRAY OF CHAR; ctrl: INTEGER) : BOOLEAN;
  483. PROCEDURE SetSynchroMode(h:HAB; m: INTEGER) : BOOLEAN;
  484. (* PeekMsg() Constants *)
  485. TYPE
  486. WPM = (PM_NO_REMOVE,PM_REMOVE);
  487. PROCEDURE PeekMsg(h:HAB; VAR m: QMSG; w: HWND; f,l: CARDINAL; o : WPM) : BOOLEAN;
  488. (* WinRegisterUserMsg direction codes *)
  489. CONST
  490. RUM_IN = 1;
  491. RUM_OUT = 2;
  492. RUM_INOUT = 3;
  493. (* WinSetMsgMode constants *)
  494. SMD_DELAYED = 01H;
  495. SMD_IMMEDIATE = 02H;
  496. (* WinSetSynchroMode constants *)
  497. SSM_SYNCHRONOUS = 01H;
  498. SSM_ASYNCHRONOUS = 02H;
  499. SSM_MIXED = 03H;
  500. (*%E*)
  501. (**)
  502. (**--- WinRegisterUserDatatype types ---------------------------------------*)
  503. (**)
  504. (*%T i_DTYPES*)
  505. CONST
  506. DTYP_USER = 16384;
  507. DTYP_CTL_ARRAY = 1;
  508. DTYP_CTL_PARRAY = -1;
  509. DTYP_CTL_OFFSET = 2;
  510. DTYP_CTL_LENGTH = 3;
  511. DTYP_ACCEL = 28;
  512. DTYP_ACCELTABLE = 29;
  513. DTYP_ARCPARAMS = 38;
  514. DTYP_AREABUNDLE = 139;
  515. DTYP_ATOM = 90;
  516. DTYP_BITMAPINFO = 60;
  517. DTYP_BITMAPINFOHEADER = 61;
  518. DTYP_BIT16 = 20;
  519. DTYP_BIT32 = 21;
  520. DTYP_BIT8 = 19;
  521. DTYP_BOOL = 18;
  522. DTYP_BTNCDATA = 35;
  523. DTYP_BYTE = 13;
  524. DTYP_CATCHBUF = 141;
  525. DTYP_CHAR = 15;
  526. DTYP_CHARBUNDLE = 135;
  527. DTYP_CLASSINFO = 95;
  528. DTYP_COUNT2 = 93;
  529. DTYP_COUNT2B = 70;
  530. DTYP_COUNT2CH = 82;
  531. DTYP_COUNT4 = 152;
  532. DTYP_COUNT4B = 42;
  533. DTYP_CPID = 57;
  534. DTYP_CREATESTRUCT = 98;
  535. DTYP_CURSORINFO = 34;
  536. DTYP_DEVOPENSTRUC = 124;
  537. DTYP_DLGTEMPLATE = 96;
  538. DTYP_DLGTITEM = 97;
  539. DTYP_ENTRYFDATA = 127;
  540. DTYP_ERRORID = 45;
  541. DTYP_FATTRS = 75;
  542. DTYP_FFDESCS = 142;
  543. DTYP_FIXED = 99;
  544. DTYP_FONTMETRICS = 74;
  545. DTYP_FRAMECDATA = 144;
  546. DTYP_GRADIENTL = 48;
  547. DTYP_HAB = 10;
  548. DTYP_HACCEL = 30;
  549. DTYP_HAPP = 146;
  550. DTYP_HATOMTBL = 91;
  551. DTYP_HBITMAP = 62;
  552. DTYP_HCINFO = 46;
  553. DTYP_HDC = 132;
  554. DTYP_HENUM = 117;
  555. DTYP_HHEAP = 109;
  556. DTYP_HINI = 53;
  557. DTYP_HLIB = 147;
  558. DTYP_HMF = 85;
  559. DTYP_HMQ = 86;
  560. DTYP_HPOINTER = 106;
  561. DTYP_HPROGRAM = 131;
  562. DTYP_HPS = 12;
  563. DTYP_HRGN = 116;
  564. DTYP_HSEM = 140;
  565. DTYP_HSPL = 32;
  566. DTYP_HSWITCH = 66;
  567. DTYP_HVPS = 58;
  568. DTYP_HWND = 11;
  569. DTYP_IDENTITY = 133;
  570. DTYP_IDENTITY4 = 169;
  571. DTYP_IMAGEBUNDLE = 136;
  572. DTYP_INDEX2 = 81;
  573. DTYP_IPT = 155;
  574. DTYP_KERNINGPAIRS = 118;
  575. DTYP_LENGTH2 = 68;
  576. DTYP_LENGTH4 = 69;
  577. DTYP_LINEBUNDLE = 137;
  578. DTYP_LONG = 25;
  579. DTYP_MARKERBUNDLE = 138;
  580. DTYP_MATRIXLF = 113;
  581. DTYP_MLECTLDATA = 161;
  582. DTYP_MLEMARGSTRUCT = 157;
  583. DTYP_MLEOVERFLOW = 158;
  584. DTYP_OFFSET2B = 112;
  585. DTYP_OWNERITEM = 154;
  586. DTYP_PID = 92;
  587. DTYP_PIX = 156;
  588. DTYP_POINTERINFO = 105;
  589. DTYP_POINTL = 77;
  590. DTYP_PROGCATEGORY = 129;
  591. DTYP_PROGRAMENTRY = 128;
  592. DTYP_PROGTYPE = 130;
  593. DTYP_PROPERTY2 = 88;
  594. DTYP_PROPERTY4 = 89;
  595. DTYP_QMSG = 87;
  596. DTYP_RECTL = 121;
  597. DTYP_RESID = 125;
  598. DTYP_RGB = 111;
  599. DTYP_RGNRECT = 115;
  600. DTYP_SBCDATA = 159;
  601. DTYP_SEGOFF = 126;
  602. DTYP_SHORT = 23;
  603. DTYP_SIZEF = 101;
  604. DTYP_SIZEL = 102;
  605. DTYP_STRL = 17;
  606. DTYP_STR16 = 40;
  607. DTYP_STR32 = 37;
  608. DTYP_STR64 = 47;
  609. DTYP_STR8 = 33;
  610. DTYP_SWBLOCK = 63;
  611. DTYP_SWCNTRL = 64;
  612. DTYP_SWENTRY = 65;
  613. DTYP_SWP = 31;
  614. DTYP_TID = 104;
  615. DTYP_TIME = 107;
  616. DTYP_TRACKINFO = 73;
  617. DTYP_UCHAR = 22;
  618. DTYP_ULONG = 26;
  619. DTYP_USERBUTTON = 36;
  620. DTYP_USHORT = 24;
  621. DTYP_WIDTH4 = 108;
  622. DTYP_WNDPARAMS = 83;
  623. DTYP_WNDPROC = 84;
  624. DTYP_WPOINT = 59;
  625. DTYP_WRECT = 55;
  626. DTYP_XYWINSIZE = 52;
  627. DTYP_PACCEL = -28;
  628. DTYP_PACCELTABLE = -29;
  629. DTYP_PARCPARAMS = -38;
  630. DTYP_PAREABUNDLE = -139;
  631. DTYP_PATOM = -90;
  632. DTYP_PBITMAPINFO = -60;
  633. DTYP_PBITMAPINFOHEADER = -61;
  634. DTYP_PBIT16 = -20;
  635. DTYP_PBIT32 = -21;
  636. DTYP_PBIT8 = -19;
  637. DTYP_PBOOL = -18;
  638. DTYP_PBTNCDATA = -35;
  639. DTYP_PBYTE = -13;
  640. DTYP_PCATCHBUF = -141;
  641. DTYP_PCHAR = -15;
  642. DTYP_PCHARBUNDLE = -135;
  643. DTYP_PCLASSINFO = -95;
  644. DTYP_PCOUNT2 = -93;
  645. DTYP_PCOUNT2B = -70;
  646. DTYP_PCOUNT2CH = -82;
  647. DTYP_PCOUNT4 = -152;
  648. DTYP_PCOUNT4B = -42;
  649. DTYP_PCPID = -57;
  650. DTYP_PCREATESTRUCT = -98;
  651. DTYP_PCURSORINFO = -34;
  652. DTYP_PDEVOPENSTRUC = -124;
  653. DTYP_PDLGTEMPLATE = -96;
  654. DTYP_PDLGTITEM = -97;
  655. DTYP_PENTRYFDATA = -127;
  656. DTYP_PERRORID = -45;
  657. DTYP_PFATTRS = -75;
  658. DTYP_PFFDESCS = -142;
  659. DTYP_PFIXED = -99;
  660. DTYP_PFONTMETRICS = -74;
  661. DTYP_PFRAMECDATA = -144;
  662. DTYP_PGRADIENTL = -48;
  663. DTYP_PHAB = -10;
  664. DTYP_PHACCEL = -30;
  665. DTYP_PHAPP = -146;
  666. DTYP_PHATOMTBL = -91;
  667. DTYP_PHBITMAP = -62;
  668. DTYP_PHCINFO = -46;
  669. DTYP_PHDC = -132;
  670. DTYP_PHENUM = -117;
  671. DTYP_PHHEAP = -109;
  672. DTYP_PHINI = -53;
  673. DTYP_PHLIB = -147;
  674. DTYP_PHMF = -85;
  675. DTYP_PHMQ = -86;
  676. DTYP_PHPOINTER = -106;
  677. DTYP_PHPROGRAM = -131;
  678. DTYP_PHPS = -12;
  679. DTYP_PHRGN = -116;
  680. DTYP_PHSEM = -140;
  681. DTYP_PHSPL = -32;
  682. DTYP_PHSWITCH = -66;
  683. DTYP_PHVPS = -58;
  684. DTYP_PHWND = -11;
  685. DTYP_PIDENTITY = -133;
  686. DTYP_PIDENTITY4 = -169;
  687. DTYP_PIMAGEBUNDLE = -136;
  688. DTYP_PINDEX2 = -81;
  689. DTYP_PIPT = -155;
  690. DTYP_PKERNINGPAIRS = -118;
  691. DTYP_PLENGTH2 = -68;
  692. DTYP_PLENGTH4 = -69;
  693. DTYP_PLINEBUNDLE = -137;
  694. DTYP_PLONG = -25;
  695. DTYP_PMARKERBUNDLE = -138;
  696. DTYP_PMATRIXLF = -113;
  697. DTYP_PMLECTLDATA = -161;
  698. DTYP_PMLEMARGSTRUCT = -157;
  699. DTYP_PMLEOVERFLOW = -158;
  700. DTYP_POFFSET2B = -112;
  701. DTYP_POWNERITEM = -154;
  702. DTYP_PPID = -92;
  703. DTYP_PPIX = -156;
  704. DTYP_PPOINTERINFO = -105;
  705. DTYP_PPOINTL = -77;
  706. DTYP_PPROGCATEGORY = -129;
  707. DTYP_PPROGRAMENTRY = -128;
  708. DTYP_PPROGTYPE = -130;
  709. DTYP_PPROPERTY2 = -88;
  710. DTYP_PPROPERTY4 = -89;
  711. DTYP_PQMSG = -87;
  712. DTYP_PRECTL = -121;
  713. DTYP_PRESID = -125;
  714. DTYP_PRGB = -111;
  715. DTYP_PRGNRECT = -115;
  716. DTYP_PSBCDATA = -159;
  717. DTYP_PSEGOFF = -126;
  718. DTYP_PSHORT = -23;
  719. DTYP_PSIZEF = -101;
  720. DTYP_PSIZEL = -102;
  721. DTYP_PSTRL = -17;
  722. DTYP_PSTR16 = -40;
  723. DTYP_PSTR32 = -37;
  724. DTYP_PSTR64 = -47;
  725. DTYP_PSTR8 = -33;
  726. DTYP_PSWBLOCK = -63;
  727. DTYP_PSWCNTRL = -64;
  728. DTYP_PSWENTRY = -65;
  729. DTYP_PSWP = -31;
  730. DTYP_PTID = -104;
  731. DTYP_PTIME = -107;
  732. DTYP_PTRACKINFO = -73;
  733. DTYP_PUCHAR = -22;
  734. DTYP_PULONG = -26;
  735. DTYP_PUSERBUTTON = -36;
  736. DTYP_PUSHORT = -24;
  737. DTYP_PWIDTH4 = -108;
  738. DTYP_PWNDPARAMS = -83;
  739. DTYP_PWNDPROC = -84;
  740. DTYP_PWPOINT = -59;
  741. DTYP_PWRECT = -55;
  742. DTYP_PXYWINSIZE = -52;
  743. (*%E*)
  744. (**)
  745. (**--- Win Message Manager Uncommon ----------------------------------------*)
  746. (**)
  747. (*%T i_MSG2*)
  748. (* WM_CALCVALIDRECTS Return Flags *)
  749. CONST
  750. CVR_ALIGNLEFT = 01H;
  751. CVR_ALIGNBOTTOM = 02H;
  752. CVR_ALIGNRIGHT = 04H;
  753. CVR_ALIGNTOP = 08H;
  754. CVR_REDRAW = 010H;
  755. (* WM_HITTEST Return Codes *)
  756. HT_NORMAL = 0;
  757. HT_TRANSPARENT = -1;
  758. HT_DISCARD = -2;
  759. HT_ERROR = -3;
  760. (* WM_SET/QUERYWINDOWPARAMS Structure and Flags *)
  761. TYPE
  762. WNDPARAMS = RECORD
  763. Status : CARDINAL;
  764. CText : CARDINAL;
  765. Text : FarADDRESS;
  766. CPresParams : CARDINAL;
  767. PresParams : FarADDRESS;
  768. CCtlData : CARDINAL;
  769. CtlData : FarADDRESS;
  770. END;
  771. (* Flags used by WM_SET/QUERYWINDOWPARAMS *)
  772. CONST
  773. WPM_TEXT = 01H;
  774. WPM_CTLDATA = 02H;
  775. WPM_PRESPARAMS = 04H;
  776. WPM_CCHTEXT = 08H;
  777. WPM_CBCTLDATA = 010H;
  778. WPM_CBPRESPARAMS = 020H;
  779. PROCEDURE InSendMsg(h:HAB) : BOOLEAN;
  780. PROCEDURE BroadcastMsg(h: HWND; id: CARDINAL; p1,p2: MPARAM; c:BITSET) : BOOLEAN;
  781. (* WinBroadcastMsg codes *)
  782. CONST
  783. BMSG_POST = {};
  784. BMSG_SEND = {0};
  785. BMSG_POSTQUEUE = {1};
  786. BMSG_DESCENDANTS = {2};
  787. BMSG_FRAMEONLY = {3};
  788. PROCEDURE WaitMsg(h:HAB; f,l: CARDINAL) : BOOLEAN;
  789. PROCEDURE QueryQueueStatus(h: HWND) : LONGCARD;
  790. (* QueryQueueStatus() Constants *)
  791. CONST
  792. QS_KEY = 01H;
  793. QS_MOUSEBUTTON = 02H;
  794. QS_MOUSEMOVE = 04H;
  795. QS_MOUSE = 06H;
  796. QS_TIMER = 08H;
  797. QS_PAINT = 010H;
  798. QS_POSTMSG = 020H;
  799. QS_SEM1 = 040H;
  800. QS_SEM2 = 080H;
  801. QS_SEM3 = 0100H;
  802. QS_SEM4 = 0200H;
  803. QS_SENDMSG = 0400H;
  804. PROCEDURE PostQueueMsg(q: FarADDRESS; i: CARDINAL; mp1,mp2: MPARAM) : BOOLEAN;
  805. PROCEDURE QueryMsgPos(h:HAB; VAR p: POINTL) : BOOLEAN;
  806. PROCEDURE QueryMsgTime(h:HAB) : LONGCARD;
  807. PROCEDURE MsgSemWait(h:HSEM; t: LONGINT) : CARDINAL;
  808. PROCEDURE MsgMuxSemWait(VAR i: CARDINAL; l: FarADDRESS; t: LONGINT) : CARDINAL;
  809. (*SetMsgInterest()/ SetClassMsgInterest() Constants *)
  810. CONST
  811. SMIM_ALL = 0EFFH;
  812. SMI_NOINTEREST = {0};
  813. SMI_INTEREST = {1};
  814. SMI_RESET = {2};
  815. SMI_AUTODISPATCH = {3};
  816. PROCEDURE SetMsgInterest(h: HWND; m: CARDINAL; c: BITSET) : BOOLEAN;
  817. PROCEDURE SetClassMsgInterest(h:HAB; VAR s: ARRAY OF CHAR; c: CARDINAL; i: INTEGER) : BOOLEAN;
  818. (*%E*)
  819. (**)
  820. (**--- Win Keyboard and Mouse ----------------------------------------------*)
  821. (**)
  822. (*%T i_KBDMOU*)
  823. (*** Keyboard and Mouse Input COMMON Subsection ***)
  824. PROCEDURE SetFocus(d,f: HWND) : BOOLEAN;
  825. PROCEDURE FocusChange(d,n: HWND; c: BITSET) : BOOLEAN;
  826. CONST
  827. FC_NOSETFOCUS = {0};
  828. FC_NOLOSEFOCUS = {1};
  829. FC_NOSETACTIVE = {2};
  830. FC_NOLOSEACTIVE = {3};
  831. FC_NOSETSELECTION = {4};
  832. FC_NOLOSESELECTION = {5};
  833. QFC_NEXTINCHAIN = 1;
  834. QFC_ACTIVE = 2;
  835. QFC_FRAME = 3;
  836. QFC_SELECTACTIVE = 4;
  837. PROCEDURE SetCapture(d,w: HWND) : BOOLEAN;
  838. PROCEDURE QueryCapture(h: HWND; l: BOOL) : HWND;
  839. (* Mouse input messages *)
  840. CONST
  841. WM_MOUSEFIRST = 070H;
  842. WM_MOUSELAST = 079H;
  843. WM_BUTTONCLICKFIRST = 071H;
  844. WM_BUTTONCLICKLAST = 079H;
  845. WM_MOUSEMOVE = 070H;
  846. WM_BUTTON1DOWN = 071H;
  847. WM_BUTTON1UP = 072H;
  848. WM_BUTTON1DBLCLK = 073H;
  849. WM_BUTTON2DOWN = 074H;
  850. WM_BUTTON2UP = 075H;
  851. WM_BUTTON2DBLCLK = 076H;
  852. WM_BUTTON3DOWN = 077H;
  853. WM_BUTTON3UP = 078H;
  854. WM_BUTTON3DBLCLK = 079H;
  855. PROCEDURE QueryFocus(h: HWND; l: BOOL) : HWND;
  856. (* Key/Character Input Msg *)
  857. CONST
  858. WM_CHAR = 07AH;
  859. WM_VIOCHAR = 07BH;
  860. (* CHARMSG flags *)
  861. KC_CHAR = {0};
  862. KC_VIRTUALKEY = {1};
  863. KC_SCANCODE = {2};
  864. KC_SHIFT = {3};
  865. KC_CTRL = {4};
  866. KC_ALT = {5};
  867. KC_KEYUP = {6};
  868. KC_PREVDOWN = {7};
  869. KC_LONEKEY = {8};
  870. KC_DEADKEY = {9};
  871. KC_COMPOSITE = {10};
  872. KC_INVALIDCOMP = {11};
  873. KC_TOGGLE = {12};
  874. KC_INVALIDCHAR = {13};
  875. KC_DBCSRSRVD1 = {14};
  876. KC_DBCSRSRVD2 = {15};
  877. TYPE
  878. MOUSEMSG = RECORD
  879. codeHitTest : CARDINAL;
  880. unused : CARDINAL;
  881. x,y : INTEGER;
  882. END;
  883. (* To use MOUSEMSG,
  884. assign typecasted mp2 to local variable of type MOUSEMSG
  885. i.e.
  886. mm := MOUSEMSG(mp2);
  887. *)
  888. (*** Virtual Key values *)
  889. TYPE VK = (VK_NULL, VK_BUTTON1, VK_BUTTON2, VK_BUTTON3,
  890. VK_BREAK, VK_BACKSPACE, VK_TAB, VK_BACKTAB,
  891. VK_NEWLINE, VK_SHIFT, VK_CTRL, VK_ALT,
  892. VK_ALTGRAF, VK_PAUSE, VK_CAPSLOCK, VK_ESC,
  893. VK_SPACE, VK_PAGEUP, VK_PAGEDOWN, VK_END,
  894. VK_HOME , VK_LEFT , VK_UP , VK_RIGHT,
  895. VK_DOWN, VK_PRINTSCRN, VK_INSERT, VK_DELETE,
  896. VK_SCRLLOCK, VK_NUMLOCK, VK_ENTER, VK_SYSRQ ,
  897. VK_F1, VK_F2, VK_F3, VK_F4,
  898. VK_F5, VK_F6, VK_F7, VK_F8,
  899. VK_F9, VK_F10, VK_F11, VK_F12,
  900. VK_F13, VK_F14, VK_F15, VK_F16,
  901. VK_F17, VK_F18, VK_F19, VK_F20,
  902. VK_F21, VK_F22, VK_F23, VK_F24);
  903. CONST
  904. VK_MENU = VK_F10;
  905. TYPE
  906. CHARMSG = RECORD
  907. chr : CARDINAL;
  908. vkey : VK;
  909. flags : BITSET;
  910. cRepeat : SHORTCARD;
  911. scancode : SHORTCARD;
  912. END;
  913. PCHARMSG = POINTER TO CHARMSG;
  914. (* To use CHARMSG,
  915. assign typecasted mp2 to local variable of type CHARMSG
  916. i.e.
  917. cm := CHARMSG(mp2);
  918. *)
  919. TYPE KEYSTATETABLE = ARRAY[0..255] OF SHORTCARD;
  920. PROCEDURE GetKeyState(h: HWND; k:VK) : INTEGER;
  921. PROCEDURE GetPhysKeyState(h: HWND; sc: CARDINAL) : INTEGER;
  922. PROCEDURE EnablePhysInput(h: HWND; e: BOOL) : BOOLEAN;
  923. PROCEDURE IsPhysInputEnabled(h: HWND) : BOOLEAN;
  924. PROCEDURE SetKeyboardStateTable(h: HWND; VAR k:KEYSTATETABLE; s: BOOL) : BOOLEAN;
  925. CONST
  926. (* Journal Notification messages *)
  927. WM_JOURNALNOTIFY = 07CH;
  928. (* valid commands (lParm1) for journal notify message *)
  929. JRN_QUEUESTATUS = 01H;
  930. JRN_PHYSKEYSTATE = 02H;
  931. (*%E*)
  932. (**)
  933. (**--- Win Dialog Manager Common -------------------------------------------*)
  934. (**)
  935. (*%T i_DIALOG1*)
  936. PROCEDURE GetDlgMsg(h: HWND; VAR q: QMSG) : BOOLEAN;
  937. PROCEDURE LoadDlg(p,o: HWND; d: PFNWP; r: HMODULE; i: CARDINAL; v: FarADDRESS) : HWND;
  938. PROCEDURE DlgBox(p,o: HWND; d: PFNWP; r: HMODULE; i: CARDINAL; k: FarADDRESS) : CARDINAL;
  939. PROCEDURE DismissDlg(h: HWND; r: CARDINAL) : BOOLEAN;
  940. PROCEDURE SetDlgItemShort(h:HWND;i:CARDINAL;v:INTEGER;s:BOOL):BOOLEAN;
  941. PROCEDURE QueryDlgItemShort(h: HWND; i: CARDINAL; VAR r: INTEGER; s: BOOL) : BOOLEAN;
  942. PROCEDURE SetDlgItemText(h: HWND; i: CARDINAL; t: ARRAY OF CHAR) : BOOLEAN;
  943. PROCEDURE QueryDlgItemText(h: HWND; i,m: CARDINAL; VAR t: ARRAY OF CHAR) : CARDINAL;
  944. PROCEDURE QueryDlgItemTextLength(h: HWND; i: CARDINAL) : INTEGER;
  945. PROCEDURE DefDlgProc(h: HWND; m: CARDINAL; p1,p2: MPARAM) : MRESULT;
  946. (* Special Item IDs *)
  947. CONST
  948. DID_OK = 1;
  949. DID_CANCEL = 2;
  950. DID_ERROR = 0FFFFH;
  951. TYPE WA = (WA_WARNING,WA_NOTE,WA_ERROR,WA_CWINALARMS);
  952. PROCEDURE Alarm(h: HWND; w: WA) : BOOLEAN;
  953. TYPE
  954. (* Message Box return codes *)
  955. MBID = (MBID_NULL, MBID_OK, MBID_CANCEL, MBID_ABORT,
  956. MBID_RETRY, MBID_IGNORE, MBID_YES, MBID_NO,
  957. MBID_HELP, MBID_ENTER );
  958. CONST
  959. MBID_ERROR = MBID(0FFFFH);
  960. PROCEDURE MessageBox(p,o: HWND; s,t: ARRAY OF CHAR; i: CARDINAL; op: BITSET) : MBID;
  961. (* Message Box types *)
  962. CONST
  963. MB_OK = {};
  964. MB_OKCANCEL = {0};
  965. MB_RETRYCANCEL = {1};
  966. MB_ABORTRETRYIGNORE = {0,1};
  967. MB_YESNO = {2};
  968. MB_YESNOCANCEL = {0,2};
  969. MB_CANCEL = {1,2};
  970. MB_ENTER = {0,1,2};
  971. MB_ENTERCANCEL = {3};
  972. MB_NOICON = {};
  973. MB_CUANOTIFICATION = {};
  974. MB_ICONQUESTION = {4};
  975. MB_ICONEXCLAMATION = {5};
  976. MB_CUAWARNING = {5};
  977. MB_ICONASTERISK = {4,5};
  978. MB_ICONHAND = {6};
  979. MB_CUACRITICAL = {6};
  980. MB_QUERY = MB_ICONQUESTION;
  981. MB_WARNING = MB_CUAWARNING;
  982. MB_INFORMATION = MB_ICONASTERISK;
  983. MB_CRITICAL = MB_CUACRITICAL;
  984. MB_ERROR = MB_CRITICAL;
  985. MB_DEFBUTTON1 = {};
  986. MB_DEFBUTTON2 = {8};
  987. MB_DEFBUTTON3 = {9};
  988. MB_APPLMODAL = {};
  989. MB_SYSTEMMODAL = {12};
  990. MB_HELP = {13};
  991. MB_MOVEABLE = {14};
  992. (*%E*)
  993. (**)
  994. (**--- Win Dialog Manager Uncommon -----------------------------------------*)
  995. (**)
  996. (*%T i_DIALOG2*)
  997. CONST
  998. (* Dialog codes: returned by WM_QUERYDLGCODE *)
  999. DLGC_ENTRYFIELD = 01H;
  1000. DLGC_BUTTON = 02H;
  1001. DLGC_RADIOBUTTON = 04H;
  1002. DLGC_STATIC = 08H;
  1003. DLGC_DEFAULT = 010H;
  1004. DLGC_PUSHBUTTON = 020H;
  1005. DLGC_CHECKBOX = 040H;
  1006. DLGC_SCROLLBAR = 080H;
  1007. DLGC_MENU = 0100H;
  1008. DLGC_TABONCLICK = 0200H;
  1009. DLGC_MLE = 0400H; (* Multiple Line Entry *)
  1010. PROCEDURE ProcessDlg(h: HWND) : CARDINAL;
  1011. PROCEDURE StartDlg(h: HWND) : CARDINAL;
  1012. PROCEDURE SendDlgItemMsg(h: HWND; i,m: CARDINAL; p1,p2:MPARAM) : MRESULT;
  1013. PROCEDURE MapDlgPoints(d: HWND; VAR p: POINTL; c: CARDINAL; o: BOOL) : BOOLEAN;
  1014. PROCEDURE SubstituteStrings(h: HWND; s: ARRAY OF CHAR; m: CARDINAL; VAR d: ARRAY OF CHAR) : CARDINAL;
  1015. (* EnumDlgItem() Constants *)
  1016. TYPE EDI = (EDI_FIRSTTABITEM, EDI_LASTTABITEM,
  1017. EDI_NEXTTABITEM, EDI_PREVTABITEM,
  1018. EDI_FIRSTGROUPITEM, EDI_LASTGROUPITEM,
  1019. EDI_NEXTGROUPITEM, EDI_PREVGROUPITEM);
  1020. PROCEDURE EnumDlgItem(d,h: HWND; c: EDI; l: BOOL) : HWND;
  1021. TYPE
  1022. (* Variable-sized dialog template items *)
  1023. DLGTITEM = RECORD
  1024. ItemStatus : CARDINAL;
  1025. Children : CARDINAL;
  1026. CClassName : CARDINAL;
  1027. ClassName : CARDINAL;
  1028. CText : CARDINAL;
  1029. Text : CARDINAL;
  1030. Style : LONGCARD;
  1031. x,y,cx,cy : INTEGER;
  1032. id : CARDINAL;
  1033. PresParams : CARDINAL;
  1034. CtlData : CARDINAL;
  1035. END;
  1036. DLGTEMPLATE = RECORD
  1037. CTemplate : CARDINAL;
  1038. type : CARDINAL;
  1039. codepage : CARDINAL;
  1040. offdlgti : CARDINAL;
  1041. TemplateStatus : CARDINAL;
  1042. ItemFocus : CARDINAL;
  1043. PresParams : CARDINAL;
  1044. dlgti : ARRAY [0..0] OF DLGTITEM;
  1045. END;
  1046. PROCEDURE CreateDlg(p,o: HWND; d: PFNWP; VAR t: DLGTEMPLATE; r: FarADDRESS) : HWND;
  1047. (*%E*)
  1048. (**)
  1049. (**--- Win Static Control Manager ------------------------------------------*)
  1050. (**)
  1051. (*%T i_STATIC*)
  1052. CONST
  1053. (* Static control styles
  1054. *
  1055. * NOTE: the top 9 bits of the LOWORD of the window flStyle are used for
  1056. * DT_* flags. The lower 7 bits are for SS_* styles. This gives us up
  1057. * to 128 distinct static control types (we currently use 11 of them).
  1058. *)
  1059. SS_TEXT = 01H;
  1060. SS_GROUPBOX = 02H;
  1061. SS_ICON = 03H;
  1062. SS_BITMAP = 04H;
  1063. SS_FGNDRECT = 05H;
  1064. SS_HALFTONERECT = 06H;
  1065. SS_BKGNDRECT = 07H;
  1066. SS_FGNDFRAME = 08H;
  1067. SS_HALFTONEFRAME = 09H;
  1068. SS_BKGNDFRAME = 0AH;
  1069. SS_SYSICON = 0BH;
  1070. (* Static control class name *)
  1071. WC_STATIC = FarADDRESS(0FFFF0005H);
  1072. (* Static control messages *)
  1073. SM_SETHANDLE = 0100H;
  1074. SM_QUERYHANDLE = 0101H;
  1075. (*%E*)
  1076. (**)
  1077. (**--- Win Button Control Manager ------------------------------------------*)
  1078. (**)
  1079. (*%T i_BUTTON*)
  1080. (* Button control styles *)
  1081. CONST
  1082. BS_PUSHBUTTON = 0;
  1083. BS_CHECKBOX = 1;
  1084. BS_AUTOCHECKBOX = 2;
  1085. BS_RADIOBUTTON = 3;
  1086. BS_AUTORADIOBUTTON = 4;
  1087. BS_3STATE = 5;
  1088. BS_AUTO3STATE = 6;
  1089. BS_USERBUTTON = 7;
  1090. BS_HELP = 0100H;
  1091. BS_SYSCOMMAND = 0200H;
  1092. BS_DEFAULT = 0400H;
  1093. BS_NOPOINTERFOCUS = 0800H;
  1094. BS_NOBORDER = 01000H;
  1095. BS_NOCURSORSELECT = 02000H;
  1096. (* Button class name *)
  1097. WC_BUTTON = FarADDRESS(0FFFF0003H);
  1098. TYPE
  1099. BTNCDATA = RECORD
  1100. cb : CARDINAL;
  1101. CheckState : CARDINAL;
  1102. HiliteState : CARDINAL;
  1103. END;
  1104. USERBUTTON = RECORD
  1105. hwnd : HWND;
  1106. hps : HPS;
  1107. State : CARDINAL;
  1108. StateOld : CARDINAL;
  1109. END;
  1110. (* Button control messages *)
  1111. CONST
  1112. BM_CLICK = 0120H;
  1113. BM_QUERYCHECKINDEX = 0121H;
  1114. BM_QUERYHILITE = 0122H;
  1115. BM_SETHILITE = 0123H;
  1116. BM_QUERYCHECK = 0124H;
  1117. BM_SETCHECK = 0125H;
  1118. BM_SETDEFAULT = 0126H;
  1119. (* Button notification codes *)
  1120. BN_CLICKED = 1;
  1121. BN_DBLCLICKED = 2;
  1122. BN_PAINT = 3;
  1123. (* BN_PAINT button draw state codes *)
  1124. BDS_HILITED = 0100H;
  1125. BDS_DISABLED = 0200H;
  1126. BDS_DEFAULT = 0400H;
  1127. (*%E*)
  1128. (**)
  1129. (**--- Entry Fields ------------------------------------------------------*)
  1130. (**)
  1131. (*%T i_ENTRY*)
  1132. (* Entryfield controls *)
  1133. CONST
  1134. ES_LEFT = 00H;
  1135. ES_CENTER = 01H;
  1136. ES_RIGHT = 02H;
  1137. ES_AUTOSCROLL = 04H;
  1138. ES_MARGIN = 08H;
  1139. ES_AUTOTAB = 0010H;
  1140. ES_READONLY = 0020H;
  1141. ES_COMMAND = 0040H;
  1142. ES_UNREADABLE = 0080H;
  1143. ES_PICTUREMASK= 0100H;
  1144. ES_ANY = 00000H;
  1145. ES_SBCS = 01000H;
  1146. ES_DBCS = 02000H;
  1147. ES_MIXED = 03000H;
  1148. WC_COMBOBOX = FarADDRESS(0FFFF0002H);
  1149. (* combo box styles *)
  1150. CBS_SIMPLE = 01H;
  1151. CBS_DROPDOWN = 02H;
  1152. CBS_DROPDOWNLIST = 04H;
  1153. CBM_SHOWLIST = 0170H;
  1154. CBM_HILITE = 0171H;
  1155. CBM_ISLISTSHOWING = 0172H;
  1156. CBN_EFCHANGE = 1;
  1157. CBN_EFSCROLL = 2;
  1158. CBN_MEMERROR = 3;
  1159. CBN_LBSELECT = 4;
  1160. CBN_LBSCROLL = 5;
  1161. CBN_SHOWLIST = 6;
  1162. CBN_ENTER = 7;
  1163. WC_ENTRYFIELD = FarADDRESS(0FFFF0006H);
  1164. TYPE
  1165. ENTRYFDATA = RECORD
  1166. cb : CARDINAL;
  1167. EditLimit : CARDINAL;
  1168. MinSel : CARDINAL;
  1169. MaxSel : CARDINAL;
  1170. END;
  1171. (* Entry Field messages *)
  1172. CONST
  1173. EM_QUERYCHANGED = 0140H;
  1174. EM_QUERYSEL = 0141H;
  1175. EM_SETSEL = 0142H;
  1176. EM_SETTEXTLIMIT = 0143H;
  1177. EM_CUT = 0144H;
  1178. EM_COPY = 0145H;
  1179. EM_CLEAR = 0146H;
  1180. EM_PASTE = 0147H;
  1181. EM_QUERYFIRSTCHAR = 0148H;
  1182. EM_SETFIRSTCHAR = 0149H;
  1183. EM_QUERYREADONLY = 014AH;
  1184. EM_SETREADONLY = 014BH;
  1185. EM_SETINSERTMODE = 014CH;
  1186. (* Entry Field notification messages *)
  1187. EN_SETFOCUS = 01H;
  1188. EN_KILLFOCUS = 02H;
  1189. EN_CHANGE = 04H;
  1190. EN_SCROLL = 08H;
  1191. EN_MEMERROR = 010H;
  1192. EN_OVERFLOW = 020H;
  1193. EN_INSERTMODETOGGLE = 040H;
  1194. (*%E*)
  1195. (**)
  1196. (**--- Multiple Line Entry Fields------------------------------------------*)
  1197. (**)
  1198. (*%T i_MLENTRY*)
  1199. (* MLE Window styles ( in addition to WS_* ) *)
  1200. CONST
  1201. MLS_WORDWRAP = 01H;
  1202. MLS_BORDER = 02H;
  1203. MLS_VSCROLL = 04H;
  1204. MLS_HSCROLL = 08H;
  1205. MLS_READONLY = 010H;
  1206. MLS_IGNORETAB = 020H;
  1207. (* MLE External Data Types *)
  1208. TYPE
  1209. IPT = LONGINT; (* Insertion point *)
  1210. PIX = LONGINT; (* Pixel *)
  1211. LINE = LONGCARD; (* Line number *)
  1212. MLEFORMATRECT = RECORD (* MLEFRD format rectangle data *)
  1213. cxFormat : LONGINT; (* format rectangle width *)
  1214. cyFormat : LONGINT; (* format rectangle height *)
  1215. END;
  1216. MLECTLDATA = RECORD (* MLECTL control data *)
  1217. CtlData : CARDINAL; (* Length of the MLECTLDATA structure *)
  1218. IEFormat : CARDINAL; (* import/export format *)
  1219. cchText : LONGCARD; (* text limit *)
  1220. iptAnchor : IPT; (* beginning of selection *)
  1221. iptCursor : IPT; (* ending of selection *)
  1222. cxFormat : LONGINT; (* format rectangle width *)
  1223. cyFormat : LONGINT; (* format rectangle height *)
  1224. FormatFlags : LONGCARD; (* formatting rectangle flags *)
  1225. END;
  1226. CONST
  1227. (* FormatFlags mask *)
  1228. MLFFMTRECT_LIMITHORZ = 01H;
  1229. MLFFMTRECT_LIMITVERT = 02H;
  1230. MLFFMTRECT_MATCHWINDOW = 04H;
  1231. MLFFMTRECT_FORMATRECT = 07H;
  1232. (* IEFormat - Import/Export Format flags *)
  1233. MLFIE_CFTEXT = 0;
  1234. MLFIE_NOTRANS = 1;
  1235. MLFIE_WINFMT = 2;
  1236. MLFIE_RTF = 3;
  1237. (* MLN_OVERFLOW structure *)
  1238. TYPE
  1239. MLEOVERFLOW = RECORD (* overflow structure *)
  1240. afErrInd : LONGCARD; (* see mask below *)
  1241. nBytesOver : LONGINT; (* bytes overflowed *)
  1242. pixHorzOver : LONGINT; (* pixels horizontally overflowed *)
  1243. pixVertOver : LONGINT; (* pixels vertically overflowed *)
  1244. END;
  1245. (* ErrInd - error format rectangle flags *)
  1246. CONST
  1247. MLFEFR_RESIZE = 01H;
  1248. MLFEFR_TABSTOP = 02H;
  1249. MLFEFR_FONT = 04H;
  1250. MLFEFR_TEXT = 08H;
  1251. MLFEFR_WORDWRAP = 010H;
  1252. MLFETL_TEXTBYTES = 020H;
  1253. TYPE
  1254. (* MLN_MARGIN structure *)
  1255. MLEMARGSTRUCT = RECORD (* margin structure *)
  1256. afMargins : CARDINAL; (* margin indicator *)
  1257. usMouMsg : CARDINAL; (* mouse message *)
  1258. iptNear : IPT; (* geometrically nearest insertion point *)
  1259. END;
  1260. CONST
  1261. (* afFlags - margin notification indicators *)
  1262. MLFMARGIN_LEFT = 01H;
  1263. MLFMARGIN_BOTTOM = 02H;
  1264. MLFMARGIN_RIGHT = 03H;
  1265. MLFMARGIN_TOP = 04H;
  1266. (* MLM_QUERYSELECTION flags *)
  1267. MLFQS_MINMAXSEL = 0;
  1268. MLFQS_MINSEL = 1;
  1269. MLFQS_MAXSEL = 2;
  1270. MLFQS_ANCHORSEL = 3;
  1271. MLFQS_CURSORSEL = 4;
  1272. (* MLN_CLPBDFAIL flags *)
  1273. MLFCLPBD_TOOMUCHTEXT = 01H;
  1274. MLFCLPBD_ERROR = 02H;
  1275. TYPE
  1276. (* MLM_SEARCH structure *)
  1277. MLE_SEARCHDATA = RECORD (* search structure *)
  1278. cb : CARDINAL; (* size of search spec structure *)
  1279. Find : FarADDRESS; (* string to search for *)
  1280. Replace : FarADDRESS; (* string to replace with *)
  1281. cFind : INTEGER; (* length of pchFindString *)
  1282. cReplace : INTEGER; (* length of replace string *)
  1283. iptStart : IPT; (* point at which to start search *)
  1284. (* (negative indicates cursor pt) *)
  1285. (* becomes pt where string found *)
  1286. iptStop : IPT; (* point at which to stop search *)
  1287. (* (negative indicates EOT) *)
  1288. cchFound : CARDINAL; (* Length of found string *)
  1289. END;
  1290. CONST
  1291. (* MLM_SEARCH style flags *)
  1292. MLFSEARCH_CASESENSITIVE = 01H;
  1293. MLFSEARCH_SELECTMATCH = 02H;
  1294. MLFSEARCH_CHANGEALL = 04H;
  1295. (* MLE messages - MLM from 0x01b0 to 0x01de; MLN from 0x0001 to 0x000f *)
  1296. (* formatting messages *)
  1297. MLM_SETTEXTLIMIT = 01B0H;
  1298. MLM_QUERYTEXTLIMIT = 01B1H;
  1299. MLM_SETFORMATRECT = 01B2H;
  1300. MLM_QUERYFORMATRECT = 01B3H;
  1301. MLM_SETWRAP = 01B4H;
  1302. MLM_QUERYWRAP = 01B5H;
  1303. MLM_SETTABSTOP = 01B6H;
  1304. MLM_QUERYTABSTOP = 01B7H;
  1305. MLM_SETREADONLY = 01B8H;
  1306. MLM_QUERYREADONLY = 01B9H;
  1307. (* text content manipulation and queries messages *)
  1308. MLM_QUERYCHANGED = 01BAH;
  1309. MLM_SETCHANGED = 01BBH;
  1310. MLM_QUERYLINECOUNT = 01BCH;
  1311. MLM_CHARFROMLINE = 01BDH;
  1312. MLM_LINEFROMCHAR = 01BEH;
  1313. MLM_QUERYLINELENGTH = 01BFH;
  1314. MLM_QUERYTEXTLENGTH = 01C0H;
  1315. (* text import and export messages *)
  1316. MLM_FORMAT = 01C1H;
  1317. MLM_SETIMPORTEXPORT = 01C2H;
  1318. MLM_IMPORT = 01C3H;
  1319. MLM_EXPORT = 01C4H;
  1320. MLM_DELETE = 01C6H;
  1321. MLM_QUERYFORMATLINELENGTH = 01C7H;
  1322. MLM_QUERYFORMATTEXTLENGTH = 01C8H;
  1323. MLM_INSERT = 01C9H;
  1324. (* selection messages *)
  1325. MLM_SETSEL = 01CAH;
  1326. MLM_QUERYSEL = 01CBH;
  1327. MLM_QUERYSELTEXT = 01CCH;
  1328. (* undo and redo messages *)
  1329. MLM_QUERYUNDO = 01CDH;
  1330. MLM_UNDO = 01CEH;
  1331. MLM_RESETUNDO = 01CFH;
  1332. (* text attributes messages *)
  1333. MLM_QUERYFONT = 01D0H;
  1334. MLM_SETFONT = 01D1H;
  1335. MLM_SETTEXTCOLOR = 01D2H;
  1336. MLM_QUERYTEXTCOLOR = 01D3H;
  1337. MLM_SETBACKCOLOR = 01D4H;
  1338. MLM_QUERYBACKCOLOR = 01D5H;
  1339. (* scrolling messages *)
  1340. MLM_QUERYFIRSTCHAR = 01D6H;
  1341. MLM_SETFIRSTCHAR = 01D7H;
  1342. (* clipboard messages *)
  1343. MLM_CUT = 01D8H;
  1344. MLM_COPY = 01D9H;
  1345. MLM_PASTE = 01DAH;
  1346. MLM_CLEAR = 01DBH;
  1347. (* display manipulation messages *)
  1348. MLM_ENABLEREFRESH = 01DCH;
  1349. MLM_DISABLEREFRESH = 01DDH;
  1350. (* search message *)
  1351. MLM_SEARCH = 01DEH;
  1352. MLM_QUERYIMPORTEXPORT = 01DFH;
  1353. (* notification messages *)
  1354. MLN_OVERFLOW = 01H;
  1355. MLN_PIXHORZOVERFLOW = 02H;
  1356. MLN_PIXVERTOVERFLOW = 03H;
  1357. MLN_TEXTOVERFLOW = 04H;
  1358. MLN_VSCROLL = 05H;
  1359. MLN_HSCROLL = 06H;
  1360. MLN_CHANGE = 07H;
  1361. MLN_SETFOCUS = 08H;
  1362. MLN_KILLFOCUS = 09H;
  1363. MLN_MARGIN = 0AH;
  1364. MLN_SEARCHPAUSE = 0BH;
  1365. MLN_MEMERROR = 0CH;
  1366. MLN_UNDOOVERFLOW = 0DH;
  1367. MLN_CLPBDFAIL = 0FH;
  1368. (*%E*)
  1369. (**)
  1370. (**--- List box controls ------------------------------------------*)
  1371. (**)
  1372. (*%T i_LIST*)
  1373. CONST
  1374. (* List Box styles *)
  1375. LS_MULTIPLESEL = 01H;
  1376. LS_OWNERDRAW = 02H;
  1377. LS_NOADJUSTPOS = 04H;
  1378. LS_HORZSCROLL = 08H;
  1379. (* List Box class name *)
  1380. WC_LISTBOX = FarADDRESS(0FFFF0007H);
  1381. (* List Box notification messages *)
  1382. LN_SELECT = 1;
  1383. LN_SETFOCUS = 2;
  1384. LN_KILLFOCUS = 3;
  1385. LN_SCROLL = 4;
  1386. LN_ENTER = 5;
  1387. (* List Box messages *)
  1388. LM_QUERYITEMCOUNT = 0160H;
  1389. LM_INSERTITEM = 0161H;
  1390. LM_SETTOPINDEX = 0162H;
  1391. LM_DELETEITEM = 0163H;
  1392. LM_SELECTITEM = 0164H;
  1393. LM_QUERYSELECTION = 0165H;
  1394. LM_SETITEMTEXT = 0166H;
  1395. LM_QUERYITEMTEXTLENGTH = 0167H;
  1396. LM_QUERYITEMTEXT = 0168H;
  1397. LM_SETITEMHANDLE = 0169H;
  1398. LM_QUERYITEMHANDLE = 016AH;
  1399. LM_SEARCHSTRING = 016BH;
  1400. LM_SETITEMHEIGHT = 016CH;
  1401. LM_QUERYTOPINDEX = 016DH;
  1402. LM_DELETEALL = 016EH;
  1403. (* List Box constants *)
  1404. LIT_ERROR = MAX(MRESULT)-2;
  1405. LIT_MEMERROR = MAX(MRESULT)-1;
  1406. LIT_NONE = MAX(MRESULT);
  1407. LIT_FIRST = MAX(MRESULT);
  1408. (* For LM_INSERTITEM *)
  1409. LIT_END = MAX(MRESULT);
  1410. LIT_SORTASCENDING = MAX(MRESULT)-1;
  1411. LIT_SORTDESCENDING = MAX(MRESULT)-2;
  1412. (* For LM_SEARCHSTRING *)
  1413. LSS_SUBSTRING = 01H;
  1414. LSS_PREFIX = 02H;
  1415. LSS_CASESENSITIVE = 04H;
  1416. (*%E*)
  1417. (**)
  1418. (**--- Win Menu Manager ----------------------------------------------------*)
  1419. (**)
  1420. (*%T i_MENU*)
  1421. (* Menu control styles *)
  1422. CONST
  1423. MS_ACTIONBAR = 01H;
  1424. MS_TITLEBUTTON = 02H;
  1425. MS_VERTICALFLIP = 04H;
  1426. PROCEDURE LoadMenu(h: HWND; r:HMODULE; i:CARDINAL) : HWND;
  1427. CONST
  1428. (* Menu class name *)
  1429. WC_MENU = FarADDRESS(0FFFF0004H);
  1430. (* Menu control messages *)
  1431. MM_INSERTITEM = 0180H;
  1432. MM_DELETEITEM = 0181H;
  1433. MM_QUERYITEM = 0182H;
  1434. MM_SETITEM = 0183H;
  1435. MM_QUERYITEMCOUNT = 0184H;
  1436. MM_STARTMENUMODE = 0185H;
  1437. MM_ENDMENUMODE = 0186H;
  1438. MM_DISMISSMENU = 0187H;
  1439. MM_REMOVEITEM = 0188H;
  1440. MM_SELECTITEM = 0189H;
  1441. MM_QUERYSELITEMID = 018AH;
  1442. MM_QUERYITEMTEXT = 018BH;
  1443. MM_QUERYITEMTEXTLENGTH = 018CH;
  1444. MM_SETITEMHANDLE = 018DH;
  1445. MM_SETITEMTEXT = 018EH;
  1446. MM_ITEMPOSITIONFROMID = 018FH;
  1447. MM_ITEMIDFROMPOSITION = 0190H;
  1448. MM_QUERYITEMATTR = 0191H;
  1449. MM_SETITEMATTR = 0192H;
  1450. MM_ISITEMVALID = 0193H;
  1451. PROCEDURE CreateMenu(o: HWND; t:FarADDRESS) : HWND;
  1452. TYPE
  1453. (* Owner Item Structure (Also used for listboxes) *)
  1454. OWNERITEM = RECORD
  1455. hwnd : HWND;
  1456. hps : HPS;
  1457. State : CARDINAL;
  1458. Attribute : CARDINAL;
  1459. StateOld : CARDINAL;
  1460. AttributeOld : CARDINAL;
  1461. Item : RECTL;
  1462. IdItem : INTEGER;
  1463. HItem : LONGCARD;
  1464. END;
  1465. MENUITEM = RECORD
  1466. Position : INTEGER;
  1467. Style : BITSET;
  1468. Attribute : CARDINAL;
  1469. id : CARDINAL;
  1470. SubMenu : HWND;
  1471. HItem : LONGCARD;
  1472. END;
  1473. CONST
  1474. MIT_END = -1;
  1475. MIT_NONE = -1;
  1476. MIT_MEMERROR = -1;
  1477. MIT_ERROR = -1;
  1478. MID_NONE = MIT_NONE;
  1479. MID_ERROR = -1;
  1480. (* MENUITEM Style *)
  1481. MIS_TEXT = {0};
  1482. MIS_BITMAP = {1};
  1483. MIS_SEPARATOR = {2};
  1484. MIS_OWNERDRAW = {3};
  1485. MIS_SUBMENU = {4};
  1486. MIS_MULTMENU = {5}; (* Multiple choice submenu *)
  1487. MIS_SYSCOMMAND = {6};
  1488. MIS_HELP = {7};
  1489. MIS_STATIC = {8};
  1490. MIS_BUTTONSEPARATOR = {9};
  1491. MIS_BREAK = {10};
  1492. MIS_BREAKSEPARATOR = {11};
  1493. MIS_GROUP = {12}; (* Multiple choice group start *)
  1494. (* In multiple choice submenus a style of 'single' denotes the item is a
  1495. ** radiobutton. Absence of this style defaults the item to a checkbox. *)
  1496. MIS_SINGLE = {13};
  1497. MIA_NODISMISS = {5};
  1498. MIA_FRAMED = {12};
  1499. MIA_CHECKED = {13};
  1500. MIA_DISABLED = {14};
  1501. MIA_HILITED = {15};
  1502. (*%E*)
  1503. (**)
  1504. (**--- Win Scroll Bar Controls ---------------------------------------------*)
  1505. (**)
  1506. (*%T i_SCROLL*)
  1507. CONST
  1508. (* Scroll Bar styles *)
  1509. SBS_HORZ = 0;
  1510. SBS_VERT = 1;
  1511. SBS_THUMBSIZE = 2;
  1512. SBS_AUTOTRACK = 4;
  1513. (* Scroll Bar class name *)
  1514. WC_SCROLLBAR = FarADDRESS(0FFFF0008H);
  1515. (* Scroll Bar messages *)
  1516. SBM_SETSCROLLBAR = 01A0H;
  1517. SBM_SETPOS = 01A1H;
  1518. SBM_QUERYPOS = 01A2H;
  1519. SBM_QUERYRANGE = 01A3H;
  1520. SBM_SETHILITE = 01A4H;
  1521. SBM_QUERYHILITE = 01A5H;
  1522. SBM_SETTHUMBSIZE = 01A6H;
  1523. (* Scroll Bar commands *)
  1524. SB_LINEUP = 1;
  1525. SB_LINEDOWN = 2;
  1526. SB_LINELEFT = 1;
  1527. SB_LINERIGHT = 2;
  1528. SB_PAGEUP = 3;
  1529. SB_PAGEDOWN = 4;
  1530. SB_PAGELEFT = 3;
  1531. SB_PAGERIGHT = 4;
  1532. SB_SLIDERTRACK = 5;
  1533. SB_SLIDERPOSITION = 6;
  1534. SB_ENDSCROLL = 7;
  1535. TYPE
  1536. SBCDATA = RECORD
  1537. cb : CARDINAL;
  1538. Hilite : CARDINAL; (* Reserved - should point to zero *)
  1539. posFirst : INTEGER;
  1540. posLast : INTEGER;
  1541. posThumb : INTEGER;
  1542. cVisible : INTEGER;
  1543. cTotal : INTEGER;
  1544. END;
  1545. (*%E*)
  1546. (**)
  1547. (**--- Win Frame Manager Common --------------------------------------------*)
  1548. (**)
  1549. (*%T i_FRAME1*)
  1550. TYPE
  1551. FRAMECDATA = RECORD
  1552. cb : CARDINAL;
  1553. CreateFlags : LSET;
  1554. Resources : HMODULE;
  1555. ResId : CARDINAL;
  1556. END;
  1557. CONST
  1558. FCF_TITLEBAR = LSET{0};
  1559. FCF_SYSMENU = LSET{1};
  1560. FCF_MENU = LSET{2};
  1561. FCF_SIZEBORDER = LSET{3};
  1562. FCF_MINBUTTON = LSET{4};
  1563. FCF_MAXBUTTON = LSET{5};
  1564. FCF_MINMAX = FCF_MINBUTTON+FCF_MAXBUTTON;
  1565. FCF_VERTSCROLL = LSET{6};
  1566. FCF_HORZSCROLL = LSET{7};
  1567. FCF_DLGBORDER = LSET{8};
  1568. FCF_BORDER = LSET{9};
  1569. FCF_SHELLPOSITION = LSET{10};
  1570. FCF_TASKLIST = LSET{11};
  1571. FCF_NOBYTEALIGN = LSET{12};
  1572. FCF_NOMOVEWITHOWNER = LSET{13};
  1573. FCF_ICON = LSET{14};
  1574. FCF_ACCELTABLE = LSET{15};
  1575. FCF_SYSMODAL = LSET{16};
  1576. FCF_SCREENALIGN = LSET{17};
  1577. FCF_MOUSEALIGN = LSET{18};
  1578. (* New values to enable multiple palettes. Note that if none of the four *)
  1579. (* styles specified below are used then we default to the 'system' palette *)
  1580. FCF_PALETTE_NORMAL = LSET{19}; (* Normal palette *)
  1581. FCF_PALETTE_HELP = LSET{20}; (* Help palette *)
  1582. FCF_PALETTE_POPUPODD = LSET{21}; (* Odd level popup palette *)
  1583. FCF_PALETTE_POPUPEVEN = LSET{22}; (* Even level popup palette *)
  1584. FCF_STANDARD = FCF_TITLEBAR+FCF_SYSMENU+FCF_MENU+FCF_SIZEBORDER+
  1585. FCF_MINMAX+FCF_ICON+FCF_ACCELTABLE+FCF_SHELLPOSITION+
  1586. FCF_TASKLIST+FCF_PALETTE_NORMAL;
  1587. FS_ICON = 01H;
  1588. FS_ACCELTABLE = 02H;
  1589. FS_SHELLPOSITION = 04H;
  1590. FS_TASKLIST = 08H;
  1591. FS_NOBYTEALIGN = 010H;
  1592. FS_NOMOVEWITHOWNER = 020H;
  1593. FS_SYSMODAL = 040H;
  1594. FS_DLGBORDER = 080H;
  1595. FS_BORDER = 0100H;
  1596. FS_SCREENALIGN = 0200H;
  1597. FS_MOUSEALIGN = 0400H;
  1598. FS_STANDARD = 0FH;
  1599. (* Frame Window flags accessed via Set/QueryWindowUShort(QWS_FLAGS) *)
  1600. FF_FLASHWINDOW = 01H;
  1601. FF_ACTIVE = 02H;
  1602. FF_FLASHHILITE = 04H;
  1603. FF_OWNERHIDDEN = 08H;
  1604. FF_DLGDISMISSED = 010H;
  1605. FF_OWNERDISABLED = 020H;
  1606. FF_SELECTED = 040H;
  1607. FF_NOACTIVATESWP = 080H;
  1608. PROCEDURE CreateStdWindow(h: HWND; s: LONGCARD; VAR f: LSET; cc: FarADDRESS; t: ARRAY OF CHAR; sc: LONGCARD; r: HMODULE; i: CARDINAL; VAR c: HWND) : HWND;
  1609. (* To use a WC_ constant as cc parameter cast to LPSTR and de-reference
  1610. LPSTR(WC_SCROLLBAR)^ NB !!!!!!!!!!
  1611. *)
  1612. (*%E*)
  1613. (**)
  1614. (**--- Win Frame Manager Uncommon ------------------------------------------*)
  1615. (**)
  1616. (*%T i_FRAME2*)
  1617. PROCEDURE FlashWindow(h: HWND; f: BOOL) : BOOLEAN;
  1618. CONST
  1619. (* Frame Window related messages *)
  1620. WM_FLASHWINDOW = 040H;
  1621. WM_FORMATFRAME = 041H;
  1622. WM_UPDATEFRAME = 042H;
  1623. WM_FOCUSCHANGE = 043H;
  1624. WM_SETBORDERSIZE = 044H;
  1625. WM_TRACKFRAME = 045H;
  1626. WM_MINMAXFRAME = 046H;
  1627. WM_SETICON = 047H;
  1628. WM_QUERYICON = 048H;
  1629. WM_SETACCELTABLE = 049H;
  1630. WM_QUERYACCELTABLE = 04AH;
  1631. WM_TRANSLATEACCEL = 04BH;
  1632. WM_QUERYTRACKINFO = 04CH;
  1633. WM_QUERYBORDERSIZE = 04DH;
  1634. WM_NEXTMENU = 04EH;
  1635. WM_ERASEBACKGROUND = 04FH;
  1636. WM_QUERYFRAMEINFO = 050H;
  1637. (* Note 0x0051/5 are reserved *)
  1638. WM_QUERYFOCUSCHAIN = 051H;
  1639. WM_CALCFRAMERECT = 053H;
  1640. WM_WINDOWPOSCHANGED = 055H;
  1641. WM_QUERYFRAMECTLCOUNT = 059H;
  1642. (* Note 0x005A is reserved *)
  1643. WM_QUERYHELPINFO = 05BH;
  1644. WM_SETHELPINFO = 05CH;
  1645. WM_ERROR = 05DH;
  1646. (* WM_QUERYFRAMEINFO constants *)
  1647. FI_FRAME = 01H;
  1648. FI_OWNERHIDE = 02H;
  1649. FI_ACTIVATEOK = 04H;
  1650. FI_NOMOVEWITHOWNER = 08H;
  1651. (* Frame Class name *)
  1652. WC_FRAME = FarADDRESS(0FFFF0001H);
  1653. PROCEDURE CreateFrameControls(h: HWND; s: LONGCARD; VAR f:FRAMECDATA; t: ARRAY OF CHAR) : BOOLEAN;
  1654. (* PROCEDURE FormatFrame(h: HWND; VAR r: RECTL; VAR s: SWP; m: CARDINAL; VAR c: RECTL) : INTEGER; *)
  1655. PROCEDURE CalcFrameRect(h: HWND; VAR r: RECTL; f: BOOL) : BOOLEAN;
  1656. PROCEDURE GetMinPosition(h: HWND; VAR s: SWP; VAR p: POINTL) : BOOLEAN;
  1657. PROCEDURE GetMaxPosition(h: HWND; VAR s: SWP) : BOOLEAN;
  1658. CONST
  1659. (* Frame Control IDs *)
  1660. FID_SYSMENU = 08002H;
  1661. FID_TITLEBAR = 08003H;
  1662. FID_MINMAX = 08004H;
  1663. FID_MENU = 08005H;
  1664. FID_VERTSCROLL = 08006H;
  1665. FID_HORZSCROLL = 08007H;
  1666. FID_CLIENT = 08008H;
  1667. (* Note 08009H is reserved *)
  1668. FID_DBE_APPSTAT = 08010H;
  1669. FID_DBE_KBDSTAT = 08011H;
  1670. FID_DBE_PECIC = 08012H;
  1671. FID_DBE_KKPOPUP = 08013H;
  1672. (* Standard WM_SYSCOMMAND command values *)
  1673. SC_SIZE = 08000H;
  1674. SC_MOVE = 08001H;
  1675. SC_MINIMIZE = 08002H;
  1676. SC_MAXIMIZE = 08003H;
  1677. SC_CLOSE = 08004H;
  1678. SC_NEXT = 08005H;
  1679. SC_APPMENU = 08006H;
  1680. SC_SYSMENU = 08007H;
  1681. SC_RESTORE = 08008H;
  1682. SC_NEXTFRAME = 08009H;
  1683. SC_NEXTWINDOW = 08010H;
  1684. SC_TASKMANAGER = 08011H;
  1685. SC_HELPKEYS = 08012H;
  1686. SC_HELPINDEX = 08013H;
  1687. SC_HELPEXTENDED = 08014H;
  1688. SC_SWITCHPANELIDS = 08015H;
  1689. SC_DBE_FIRST = 08018H;
  1690. SC_DBE_LAST = 0801FH;
  1691. (*%E*)
  1692. (**)
  1693. (**--- Win Frame Controls --------------------------------------------------*)
  1694. (**)
  1695. (*%T i_FRAMECTL*)
  1696. CONST
  1697. (* Title Bar control class name *)
  1698. WC_TITLEBAR = FarADDRESS(0FFFF0009H);
  1699. (* Title Bar control messages *)
  1700. TBM_SETHILITE = 01E3H;
  1701. TBM_QUERYHILITE = 01E4H;
  1702. TBM_TRACKMOVE = 01E5H;
  1703. (*%E*)
  1704. (**)
  1705. (**--- Win Rectangles ------------------------------------------------------*)
  1706. (**)
  1707. (*%T i_RECT*)
  1708. TYPE
  1709. WRECT = RECORD
  1710. xLeft : INTEGER;
  1711. dummy1 : INTEGER;
  1712. yBottom : INTEGER;
  1713. dummy2 : INTEGER;
  1714. xRight : INTEGER;
  1715. dummy3 : INTEGER;
  1716. yTop : INTEGER;
  1717. dummy4 : INTEGER;
  1718. END;
  1719. WPOINT = RECORD
  1720. x : INTEGER;
  1721. dummy1 : INTEGER;
  1722. y : INTEGER;
  1723. dummy2 : INTEGER;
  1724. END;
  1725. PROCEDURE SetRect(h: HAB; VAR s: RECTL; l,b,r,t: INTEGER) : BOOLEAN;
  1726. PROCEDURE IsRectEmpty(h:HAB; VAR r: RECTL) : BOOLEAN;
  1727. PROCEDURE CopyRect(h:HAB; VAR s: RECTL; VAR d: RECTL) : BOOLEAN;
  1728. PROCEDURE EqualRect(h:HAB; VAR r1,r2: RECTL) : BOOLEAN;
  1729. PROCEDURE SetRectEmpty(h:HAB; VAR r: RECTL) : BOOLEAN;
  1730. PROCEDURE OffsetRect(h:HAB; VAR r: RECTL; cx,cy: INTEGER) : BOOLEAN;
  1731. PROCEDURE InflateRect(h:HAB; VAR r: RECTL; x,y: INTEGER) : BOOLEAN;
  1732. PROCEDURE PtInRect(h:HAB; VAR r: RECTL; VAR p: POINTL) : BOOLEAN;
  1733. PROCEDURE IntersectRect(h:HAB; VAR d,r1,r2: RECTL) : BOOLEAN;
  1734. PROCEDURE UnionRect(h:HAB; VAR d: RECTL; VAR s1,s2: RECTL) : BOOLEAN;
  1735. PROCEDURE SubtractRect(h:HAB; VAR r: RECTL; VAR s1,s2: RECTL) : BOOLEAN;
  1736. PROCEDURE MakeRect(h:HAB; VAR r: WRECT) : BOOLEAN;
  1737. PROCEDURE MakePoints(h:HAB; VAR p: WPOINT; c: CARDINAL) : BOOLEAN;
  1738. (*%E*)
  1739. (**)
  1740. (**--- Win System Values ---------------------------------------------------*)
  1741. (**)
  1742. (*%T i_SYS*)
  1743. TYPE SV = (
  1744. SV_SWAPBUTTON, SV_DBLCLKTIME,
  1745. SV_CXDBLCLK, SV_CYDBLCLK,
  1746. SV_CXSIZEBORDER, SV_CYSIZEBORDER,
  1747. SV_ALARM, SV_RESERVEDFIRST1,
  1748. SV_RESERVEDLAST1, SV_CURSORRATE,
  1749. SV_FIRSTSCROLLRATE, SV_SCROLLRATE,
  1750. SV_NUMBEREDLISTS, SV_WARNINGFREQ,
  1751. SV_NOTEFREQ, SV_ERRORFREQ,
  1752. SV_WARNINGDURATION, SV_NOTEDURATION,
  1753. SV_ERRORDURATION, SV_RESERVEDFIRST,
  1754. SV_CXSCREEN, SV_CYSCREEN,
  1755. SV_CXVSCROLL, SV_CYHSCROLL,
  1756. SV_CYVSCROLLARROW, SV_CXHSCROLLARROW,
  1757. SV_CXBORDER, SV_CYBORDER,
  1758. SV_CXDLGFRAME, SV_CYDLGFRAME,
  1759. SV_CYTITLEBAR, SV_CYVSLIDER,
  1760. SV_CXHSLIDER, SV_CXMINMAXBUTTON,
  1761. SV_CYMINMAXBUTTON, SV_CYMENU,
  1762. SV_CXFULLSCREEN, SV_CYFULLSCREEN,
  1763. SV_CXICON, SV_CYICON,
  1764. SV_CXPOINTER, SV_CYPOINTER,
  1765. SV_DEBUG, SV_CMOUSEBUTTONS,
  1766. SV_POINTERLEVEL, SV_CURSORLEVEL,
  1767. SV_TRACKRECTLEVEL, SV_CTIMERS,
  1768. SV_MOUSEPRESENT, SV_CXBYTEALIGN,
  1769. SV_CYBYTEALIGN,
  1770. (* Values of 51-55 are spare for extra non-settable system values *)
  1771. SV_SPARE51, SV_SPARE52, SV_SPARE53, SV_SPARE54, SV_SPARE55,
  1772. (* The following value enables any greater value to be set by WinSetSysVlaue. *)
  1773. SV_NOTRESERVED,
  1774. (* This is to enable the setting of SV_EXTRAKEYBEEP by applications. *)
  1775. SV_EXTRAKEYBEEP,
  1776. (* The following system value controls whether PM controls the keyboard *)
  1777. (* lights for light key keystrokes (else applications will) *)
  1778. SV_SETLIGHTS,
  1779. SV_INSERTMODE,
  1780. SV_SPARE60, SV_SPARE61, SV_SPARE62, SV_SPARE63,
  1781. SV_MENUROLLDOWNDELAY, SV_MENUROLLUPDELAY,
  1782. SV_ALTMNEMONIC, SV_TASKLISTMOUSEACCESS,
  1783. SV_CSYSVALUES, SV_CPOINTERBUTTONS,
  1784. SV_CXALIGN, SV_CYALIGN,
  1785. SV_MNEMONICSENABLED);
  1786. PROCEDURE QuerySysValue(h: HWND; i: SV) : LONGINT;
  1787. PROCEDURE SetSysValue(h: HWND; i: SV; v: LONGINT) : BOOLEAN;
  1788. (*
  1789. * Presentation parameter structures.
  1790. *)
  1791. TYPE
  1792. PARAM = RECORD
  1793. id : LONGCARD;
  1794. cb : LONGCARD;
  1795. ab : ARRAY [1..1] OF BYTE;
  1796. END;
  1797. PRESPARAMS = RECORD
  1798. cb: LONGCARD;
  1799. aparam: ARRAY [1..1] OF PARAM;
  1800. END;
  1801. (*
  1802. * Presentation parameter APIs
  1803. *)
  1804. PROCEDURE SetPresParam(h:HWND;id,cb:LONGCARD;p:FarADDRESS):BOOLEAN;
  1805. PROCEDURE QueryPresParam(h:HWND;id1,id2:LONGCARD;VAR pId: LONGCARD;cb:LONGCARD;pb:FarADDRESS;fs:CARDINAL):LONGCARD;
  1806. PROCEDURE RemovePresParam(h:HWND;id:LONGCARD):BOOLEAN;
  1807. (* Presentation parameter types *)
  1808. CONST
  1809. PP_FOREGROUNDCOLOR = 1;
  1810. PP_FOREGROUNDCOLORINDEX = 2;
  1811. PP_BACKGROUNDCOLOR = 3;
  1812. PP_BACKGROUNDCOLORINDEX = 4;
  1813. PP_HILITEFOREGROUNDCOLOR = 5;
  1814. PP_HILITEFOREGROUNDCOLORINDEX = 6;
  1815. PP_HILITEBACKGROUNDCOLOR = 7;
  1816. PP_HILITEBACKGROUNDCOLORINDEX = 8;
  1817. PP_DISABLEDFOREGROUNDCOLOR = 9;
  1818. PP_DISABLEDFOREGROUNDCOLORINDEX = 10;
  1819. PP_DISABLEDBACKGROUNDCOLOR = 11;
  1820. PP_DISABLEDBACKGROUNDCOLORINDEX = 12;
  1821. PP_BORDERCOLOR = 13;
  1822. PP_BORDERCOLORINDEX = 14;
  1823. PP_FONTNAMESIZE = 15;
  1824. PP_FONTHANDLE = 16;
  1825. (* Flags for WinQueryPresParams *)
  1826. QPF_NOINHERIT = 01H; (* Don't inherit *)
  1827. QPF_ID1COLORINDEX = 02H; (* Convert id1 color index into RGB *)
  1828. QPF_ID2COLORINDEX = 04H; (* Convert id2 color index into RGB *)
  1829. QPF_PURERGBCOLOR = 08H; (* Return pure RGB colors *)
  1830. QPF_VALIDFLAGS = 0FH; (* Valid WinQueryPresParams() flags. *)
  1831. (*%E*)
  1832. (**)
  1833. (**--- Win Color Functions -------------------------------------------------*)
  1834. (**)
  1835. (*%T i_COLOR*)
  1836. PROCEDURE QuerySysColor(h: HWND; c: COLOR; r: LONGINT) : COLOR;
  1837. PROCEDURE SetSysColors(h: HWND; o,f,s: LONGCARD; l: LONGCARD; VAR t: ARRAY OF COLOR) : BOOLEAN;
  1838. CONST
  1839. SYSCLR_BUTTONLIGHT = -41;
  1840. SYSCLR_BUTTONMIDDLE = -40;
  1841. SYSCLR_BUTTONDARK = -39;
  1842. SYSCLR_BUTTONDEFAULT = -38;
  1843. SYSCLR_TITLEBOTTOM = -37;
  1844. SYSCLR_SHADOW = -36;
  1845. SYSCLR_ICONTEXT = -35;
  1846. SYSCLR_DIALOGBACKGROUND = -34;
  1847. SYSCLR_HILITEFOREGROUND = -33;
  1848. SYSCLR_HILITEBACKGROUND = -32;
  1849. SYSCLR_INACTIVETITLETEXTBGND = -31;
  1850. SYSCLR_ACTIVETITLETEXTBGND = -30;
  1851. SYSCLR_INACTIVETITLETEXT = -29;
  1852. SYSCLR_ACTIVETITLETEXT = -28;
  1853. SYSCLR_OUTPUTTEXT = -27;
  1854. SYSCLR_WINDOWSTATICTEXT = -26;
  1855. SYSCLR_SCROLLBAR = -25;
  1856. SYSCLR_BACKGROUND = -24;
  1857. SYSCLR_ACTIVETITLE = -23;
  1858. SYSCLR_INACTIVETITLE = -22;
  1859. SYSCLR_MENU = -21;
  1860. SYSCLR_WINDOW = -20;
  1861. SYSCLR_WINDOWFRAME = -19;
  1862. SYSCLR_MENUTEXT = -18;
  1863. SYSCLR_WINDOWTEXT = -17;
  1864. SYSCLR_TITLETEXT = -16;
  1865. SYSCLR_ACTIVEBORDER = -15;
  1866. SYSCLR_INACTIVEBORDER = -14;
  1867. SYSCLR_APPWORKSPACE = -13;
  1868. SYSCLR_HELPBACKGROUND = -12;
  1869. SYSCLR_HELPTEXT = -11;
  1870. SYSCLR_HELPHILITE = -10;
  1871. SYSCLR_CSYSCOLORS = 32;
  1872. (*%E*)
  1873. (**)
  1874. (**--- Win Timer Functions -------------------------------------------------*)
  1875. (**)
  1876. (*%T i_TIMER*)
  1877. PROCEDURE StartTimer(h:HAB; w: HWND; i: CARDINAL; t: CARDINAL) : CARDINAL;
  1878. PROCEDURE StopTimer(h:HAB; w: HWND; i: CARDINAL) : BOOLEAN;
  1879. PROCEDURE GetCurrentTime(h:HAB) : LONGCARD;
  1880. CONST
  1881. (* Reserved timer ids *)
  1882. TID_CURSOR = 0FFFFH; (* Reserved cursor timer ID *)
  1883. TID_SCROLL = 0FFFEH; (* Reserved scrolling timer ID *)
  1884. TID_FLASHWINDOW = 0FFFDH; (* Reserved for window flashing timer ID *)
  1885. TID_USERMAX = 07FFFH; (* Maximum user timer ID *)
  1886. (*%E*)
  1887. (**)
  1888. (**--- Win Accelerator -----------------------------------------------------*)
  1889. (**)
  1890. (*%T i_ACCEL*)
  1891. CONST
  1892. (* ACCEL flags *)
  1893. AF_CHAR = {0};
  1894. AF_VIRTUALKEY = {1};
  1895. AF_SCANCODE = {2};
  1896. AF_SHIFT = {3};
  1897. AF_CONTROL = {4};
  1898. AF_ALT = {5};
  1899. AF_LONEKEY = {6};
  1900. AF_SYSCOMMAND = {8};
  1901. AF_HELP = {9};
  1902. TYPE
  1903. HACCEL = LHANDLE;
  1904. ACCEL = RECORD
  1905. flags : BITSET;
  1906. key : CARDINAL;
  1907. cmd : CARDINAL;
  1908. END;
  1909. ACCELTABLE = RECORD
  1910. CAccel : CARDINAL;
  1911. codepage : CARDINAL;
  1912. Accel : ARRAY [0..0] OF ACCEL;
  1913. END;
  1914. PROCEDURE LoadAccelTable(h:HAB; r: HMODULE; i: CARDINAL) : HACCEL;
  1915. PROCEDURE CreateAccelTable(h:HAB; VAR t: ACCELTABLE) : HACCEL;
  1916. PROCEDURE DestroyAccelTable(a: HACCEL) : BOOLEAN;
  1917. PROCEDURE CopyAccelTable(a: HACCEL; VAR t: ACCELTABLE; m: CARDINAL) : CARDINAL;
  1918. PROCEDURE TranslateAccel(h:HAB; w: HWND; a: HACCEL; VAR q: QMSG) : BOOLEAN;
  1919. PROCEDURE SetAccelTable(h:HAB; a: HACCEL; f: HWND) : BOOLEAN;
  1920. PROCEDURE QueryAccelTable(h:HAB; f: HWND) : HACCEL;
  1921. (*%E*)
  1922. (**** Extended Attribute Flags (Association Table) *)
  1923. CONST
  1924. EAF_DEFAULTOWNER = 01H;
  1925. EAF_UNCHANGEABLE = 02H;
  1926. EAF_REUSEICON = 04H;
  1927. (**)
  1928. (**--- Win Track Rectangle -------------------------------------------------*)
  1929. (**)
  1930. (*%T i_TRACK*)
  1931. TYPE
  1932. (* TrackRect() tracking information *)
  1933. TRACKINFO = RECORD
  1934. cxBorder : INTEGER;
  1935. cyBorder : INTEGER;
  1936. cxGrid : INTEGER;
  1937. cyGrid : INTEGER;
  1938. cxKeyboard : INTEGER;
  1939. cyKeyboard : INTEGER;
  1940. Track : RECTL;
  1941. Boundary : RECTL;
  1942. MinTrackSize : POINTL;
  1943. MaxTrackSize : POINTL;
  1944. options : BITSET;
  1945. END;
  1946. PROCEDURE TrackRect(h: HWND; s: HPS; VAR t: TRACKINFO) : BOOLEAN;
  1947. PROCEDURE ShowTrackRect(h: HWND; s: BOOL) : BOOLEAN;
  1948. CONST
  1949. (* TRACKINFO options *)
  1950. TF_LEFT = {0};
  1951. TF_TOP = {1};
  1952. TF_RIGHT = {2};
  1953. TF_BOTTOM = {3};
  1954. TF_MOVE = {0..3};
  1955. TF_SETPOINTERPOS = {4};
  1956. TF_GRID = {5};
  1957. TF_STANDARD = {6};
  1958. TF_ALLINBOUNDARY = {7};
  1959. TF_VALIDATETRACKRECT = {8};
  1960. TF_PARTINBOUND = {9};
  1961. (*%E*)
  1962. (**)
  1963. (**--- Win Clipboard -------------------------------------------------------*)
  1964. (**)
  1965. (*%T i_CLIP*)
  1966. CONST
  1967. WM_RENDERFMT = 060H;
  1968. WM_RENDERALLFMTS = 061H;
  1969. WM_DESTROYCLIPBOARD = 062H;
  1970. WM_PAINTCLIPBOARD = 063H;
  1971. WM_SIZECLIPBOARD = 064H;
  1972. WM_HSCROLLCLIPBOARD = 065H;
  1973. WM_VSCROLLCLIPBOARD = 066H;
  1974. WM_DRAWCLIPBOARD = 067H;
  1975. TYPE
  1976. CF = (CF_NULL, CF_TEXT, CF_BITMAP, CF_DSPTEXT,
  1977. CF_DSPBITMAP,CF_METAFILE,CF_DSPMETAFILE );
  1978. PROCEDURE SetClipbrdOwner(h:HAB; w: HWND) : BOOLEAN;
  1979. PROCEDURE SetClipbrdData(a:HAB; h: LONGCARD; f: CF; i: CARDINAL) : BOOLEAN;
  1980. PROCEDURE QueryClipbrdData(h:HAB; f: CF) : LONGCARD;
  1981. PROCEDURE QueryClipbrdFmtInfo(h:HAB; f: CF; VAR m: CARDINAL) : BOOLEAN;
  1982. PROCEDURE SetClipbrdViewer(h:HAB; w: HWND) : BOOLEAN;
  1983. PROCEDURE EnumClipbrdFmts(h:HAB; p: CF) : CF;
  1984. PROCEDURE OpenClipbrd(h:HAB) : BOOLEAN;
  1985. PROCEDURE CloseClipbrd(h:HAB) : BOOLEAN;
  1986. PROCEDURE EmptyClipbrd(h:HAB) : BOOLEAN;
  1987. PROCEDURE QueryClipbrdOwner(h:HAB; l: BOOL) : HWND;
  1988. PROCEDURE QueryClipbrdViewer(h:HAB; l: BOOL) : HWND;
  1989. CONST
  1990. (* SetClipbrdData() flags *)
  1991. CFI_OWNERFREE = 01H;
  1992. CFI_OWNERDISPLAY = 02H;
  1993. CFI_SELECTOR = 0100H;
  1994. CFI_HANDLE = 0200H;
  1995. (*%E*)
  1996. (**)
  1997. (**--- Win Cursor Management -----------------------------------------------*)
  1998. (**)
  1999. (*%T i_CURSOR*)
  2000. PROCEDURE DestroyCursor(h: HWND) : BOOLEAN;
  2001. PROCEDURE ShowCursor(h: HWND; s: BOOL) : BOOLEAN;
  2002. PROCEDURE CreateCursor(h: HWND; x,y,cx,cy: INTEGER; f: BITSET; VAR c: RECTL) : BOOLEAN;
  2003. CONST
  2004. (* CreatCursor()/CURSORINFO flags *)
  2005. CURSOR_SOLID = {};
  2006. CURSOR_HALFTONE = {0};
  2007. CURSOR_FRAME = {1};
  2008. CURSOR_FLASH = {2};
  2009. CURSOR_SETPOS = {15};
  2010. TYPE
  2011. CURSORINFO = RECORD
  2012. hwnd : HWND;
  2013. x,y,cx,cy : INTEGER;
  2014. flags : BITSET;
  2015. rclClip : RECTL;
  2016. END;
  2017. PROCEDURE QueryCursorInfo(h: HWND; VAR c: CURSORINFO) : BOOLEAN;
  2018. (*%E*)
  2019. (**)
  2020. (**--- Win Pointer Management ----------------------------------------------*)
  2021. (**)
  2022. (*%T i_POINTER*)
  2023. TYPE
  2024. HPOINTER = LHANDLE;
  2025. PROCEDURE SetPointer(h: HWND; p: HPOINTER) : BOOLEAN;
  2026. PROCEDURE ShowPointer(h: HWND; s: BOOL) : BOOLEAN;
  2027. PROCEDURE QuerySysPointer(h: HWND; i: INTEGER; c: BOOL) : HPOINTER;
  2028. (* System pointers *)
  2029. (*%T i_LATER *)
  2030. CONST
  2031. SPTR_ARROW = 1;
  2032. SPTR_TEXT = 2;
  2033. SPTR_WAIT = 3;
  2034. SPTR_MOVE = 4;
  2035. SPTR_SIZENWSE = 5;
  2036. SPTR_SIZENESW = 6;
  2037. SPTR_SIZEWE = 7;
  2038. SPTR_SIZENS = 8;
  2039. SPTR_APPICON = 9;
  2040. SPTR_ICONINFORMATION = 10;
  2041. SPTR_ICONQUESTION = 11;
  2042. SPTR_ICONERROR = 12;
  2043. SPTR_ICONWARNING = 13;
  2044. SPTR_CPTR = 13; (* Count of pointers loaded by PMWIN *)
  2045. SPTR_ILLEGAL = 14;
  2046. SPTR_FILE = 15;
  2047. SPTR_FOLDER = 16;
  2048. SPTR_MULTFILE = 17;
  2049. SPTR_PROGRAM = 18;
  2050. (*%E *)
  2051. (*%F i_LATER *)
  2052. CONST
  2053. SPTR_ARROW = 1;
  2054. SPTR_TEXT = 2;
  2055. SPTR_WAIT = 3;
  2056. SPTR_SIZE = 4;
  2057. SPTR_MOVE = 5;
  2058. SPTR_SIZENWSE = 6;
  2059. SPTR_SIZENESW = 7;
  2060. SPTR_SIZEWE = 8;
  2061. SPTR_SIZENS = 9;
  2062. SPTR_APPICON = 10;
  2063. SPTR_ICONINFORMATION = 11;
  2064. SPTR_ICONQUESTION = 12;
  2065. SPTR_ICONERROR = 13;
  2066. SPTR_ICONWARNING = 14;
  2067. SPTR_CPTR = 14; (* count loaded by pmwin *)
  2068. SPTR_ILLEGAL = 18;
  2069. SPTR_FILE = 19;
  2070. SPTR_FOLDER = 20;
  2071. SPTR_MULTFILE = 21;
  2072. SPTR_PROGRAM = 22;
  2073. (* backward compatibility *)
  2074. SPTR_HANDICON = SPTR_ICONERROR;
  2075. SPTR_QUESICON = SPTR_ICONQUESTION;
  2076. SPTR_BANGICON = SPTR_ICONWARNING;
  2077. SPTR_NOTEICON = SPTR_ICONINFORMATION;
  2078. (*%E *)
  2079. PROCEDURE LoadPointer(h: HWND; r: HMODULE; idres: CARDINAL) : HPOINTER;
  2080. PROCEDURE CreatePointer(h: HWND; b: HBITMAP; p: BOOL; x,y: INTEGER) : HPOINTER;
  2081. PROCEDURE DestroyPointer(p: HPOINTER) : BOOLEAN;
  2082. PROCEDURE QueryPointer(h: HWND) : HPOINTER;
  2083. PROCEDURE SetPointerPos(h: HWND; x,y: INTEGER) : BOOLEAN;
  2084. PROCEDURE QueryPointerPos(h: HWND; VAR p: POINTL) : BOOLEAN;
  2085. TYPE
  2086. POINTERINFO = RECORD
  2087. flag : BOOL;
  2088. xHotspot : INTEGER;
  2089. yHotspot : INTEGER;
  2090. Pointer,
  2091. Color : HBITMAP;
  2092. END;
  2093. PROCEDURE WinCreatePointerIndirect(h: HWND; VAR i: POINTERINFO): HPOINTER;
  2094. PROCEDURE QueryPointerInfo(h: HPOINTER; VAR i: POINTERINFO) : BOOLEAN;
  2095. TYPE DP=(DP_NORMAL,DP_HALFTONED,DP_INVERTED);
  2096. PROCEDURE DrawPointer(s:HPS; x,y: INTEGER; p: HPOINTER; h: DP) : BOOLEAN;
  2097. (* System Bitmaps *)
  2098. TYPE SBMP=(SBMP_NULL, SBMP_OLD_SYSMENU,
  2099. SBMP_OLD_SBUPARROW, SBMP_OLD_SBDNARROW,
  2100. SBMP_OLD_SBRGARROW, SBMP_OLD_SBLFARROW,
  2101. SBMP_MENUCHECK, SBMP_CHECKBOXES,
  2102. SBMP_BTNCORNERS, SBMP_OLD_MINBUTTON,
  2103. SBMP_OLD_MAXBUTTON, SBMP_OLD_RESTOREBUTTON,
  2104. SBMP_OLD_CHILDSYSMENU, SBM_13,
  2105. SBM_14, SBMP_DRIVE,
  2106. SBMP_FILE, SBMP_FOLDER,
  2107. SBMP_TREEPLUS, SBMP_TREEMINUS,
  2108. SBMP_20, SBMP_21,
  2109. SBMP_PROGRAM, SBMP_MENUATTACHED,
  2110. SBMP_SIZEBOX, SBMP_SYSMENU,
  2111. SBMP_MINBUTTON, SBMP_MAXBUTTON,
  2112. SBMP_RESTOREBUTTON, SBMP_CHILDSYSMENU,
  2113. SBMP_SYSMENUDEP, SBMP_MINBUTTONDEP,
  2114. SBMP_MAXBUTTONDEP, SBMP_RESTOREBUTTONDEP,
  2115. SBMP_CHILDSYSMENUDEP, SBMP_SBUPARROW,
  2116. SBMP_SBDNARROW, SBMP_SBLFARROW,
  2117. SBMP_SBRGARROW, SBMP_SBUPARROWDEP,
  2118. SBMP_SBDNARROWDEP, SBMP_SBLFARROWDEP,
  2119. SBMP_SBRGARROWDEP, SBMP_SBUPARROWDIS,
  2120. SBMP_SBDNARROWDIS, SBMP_SBLFARROWDIS,
  2121. SBMP_SBRGARROWDIS, SBMP_COMBODOWN);
  2122. PROCEDURE GetSysBitmap(h: HWND; s: SBMP) : HBITMAP;
  2123. (*%E*)
  2124. (**)
  2125. (**--- Win Hook Manager ----------------------------------------------------*)
  2126. (**)
  2127. (*%T i_HOOK*)
  2128. TYPE HK=(HK_SENDMSG,HK_INPUT,HK_MSGFILTER,HK_JOURNALRECORD,
  2129. HK_JOURNALPLAYBACK,HK_HELP,HK_LOADER,HK_REGISTERUSERMSG,
  2130. HK_MSGCONTROL,HK_PLIST_ENTRY,HK_PLIST_EXIT,HK_FINDWORD,
  2131. HK_CODEPAGECHANGED);
  2132. PROCEDURE SetHook(h:HAB; q: HMQ; t: HK; p: PROC; m: HMODULE) : BOOLEAN;
  2133. PROCEDURE ReleaseHook(h:HAB; q: HMQ; t: HK; p: PROC; m: HMODULE) : BOOLEAN;
  2134. PROCEDURE CallMsgFilter(h:HAB; VAR m: QMSG; f: INTEGER) : BOOLEAN;
  2135. CONST
  2136. HMQ_CURRENT = HMQ(1);
  2137. (* WH_MSGFILTER context codes *)
  2138. MSGF_DIALOGBOX = 1;
  2139. MSGF_MESSAGEBOX = 2;
  2140. MSGF_TRACK = 8;
  2141. (* HK_HELP help modes *)
  2142. HLPM_FRAME = -1;
  2143. HLPM_WINDOW = -2;
  2144. HLPM_MENU = -3;
  2145. TYPE
  2146. (* HK_SENDMSG structure *)
  2147. SMHSTRUCT = RECORD
  2148. mp2 : MPARAM;
  2149. mp1 : MPARAM;
  2150. msg : CARDINAL;
  2151. hwnd : HWND;
  2152. END;
  2153. CONST
  2154. (*HK_LOADER context codes *)
  2155. LHK_DELETEPROC = 1;
  2156. LHK_DELETELIB = 2;
  2157. LHK_LOADPROC = 3;
  2158. LHK_LOADLIB = 4;
  2159. (*HK_MSGCONTROL context codes *)
  2160. MCHK_MSGINTEREST = 1;
  2161. MCHK_CLASSMSGINTEREST = 2;
  2162. MCHK_SYNCHRONISATION = 3;
  2163. MCHK_MSGMODE = 4;
  2164. (*HK_REGISTERUSERMSG conext codes *)
  2165. RUMHK_DATATYPE = 1;
  2166. RUMHK_MSG = 2;
  2167. (*%E*)
  2168. (**)
  2169. (**--- Win Shell API -------------------------------------------------------*)
  2170. (**)
  2171. (*%T i_SHELL*)
  2172. (* Maximum filename length *)
  2173. CONST
  2174. MAXNAMEL = 60;
  2175. (* Maximum path length *)
  2176. MAXPATHL = 128;
  2177. TYPE
  2178. PATHSTR = ARRAY[0..MAXPATHL] OF CHAR;
  2179. NAMESTR = ARRAY[0..MAXNAMEL] OF CHAR;
  2180. XYWINSIZE = RECORD
  2181. x,y,cx,cy : INTEGER;
  2182. flags : BITSET;
  2183. END;
  2184. CONST
  2185. (* XYWINSIZE flags *)
  2186. XYF_NOAUTOCLOSE = {3};
  2187. XYF_MINIMIZED = {2};
  2188. XYF_MAXIMIZED = {1};
  2189. XYF_INVISIBLE = {0};
  2190. XYF_NORMAL = {};
  2191. TYPE
  2192. HPROGRAM = LHANDLE;
  2193. HINI = LHANDLE;
  2194. CONST
  2195. HINI_PROFILE = 0;
  2196. HINI_USERPROFILE = -1;
  2197. HINI_SYSTEMPROFILE = -2;
  2198. HINI_USER = HINI_USERPROFILE;
  2199. HINI_SYSTEM = HINI_SYSTEMPROFILE;
  2200. TYPE
  2201. PRFPROFILE = RECORD
  2202. cchUserName : LONGCARD;
  2203. UserName : POINTER TO CHAR;
  2204. cchSysName : LONGCARD;
  2205. SysName : POINTER TO CHAR;
  2206. END;
  2207. CONST
  2208. (* Root group handle *)
  2209. SGH_ROOT = 2;
  2210. TYPE
  2211. HPROGARRAY = RECORD
  2212. hprog : ARRAY [0..0] OF HPROGRAM;
  2213. END;
  2214. PROGCATEGORY = SHORTCARD;
  2215. (* values acceptable for PROGCATEGORY for PM groups *)
  2216. CONST
  2217. PROG_DEFAULT = 0;
  2218. PROG_FULLSCREEN = 1;
  2219. PROG_WINDOWABLEVIO = 2;
  2220. PROG_PM = 3;
  2221. PROG_GROUP = 5;
  2222. PROG_REAL = 4; (* Was 7 *)
  2223. PROG_DLL = 6;
  2224. PROG_RESERVED = 255;
  2225. (* visibility flag for PROGTYPE structure *)
  2226. SHE_VISIBLE = 0;
  2227. SHE_INVISIBLE = 1;
  2228. SHE_RESERVED = 255;
  2229. (* Protected group flag for PROGTYPE structure *)
  2230. SHE_UNPROTECTED = 0;
  2231. SHE_PROTECTED = 2;
  2232. TYPE
  2233. PROGTYPE = RECORD
  2234. progc : PROGCATEGORY;
  2235. Visible : SHORTCARD;
  2236. END;
  2237. PROGRAMENTRY = RECORD
  2238. hprog : HPROGRAM;
  2239. progt : PROGTYPE;
  2240. Title : NAMESTR;
  2241. END;
  2242. PIBSTRUCT = RECORD
  2243. progt : PROGTYPE;
  2244. Title : NAMESTR;
  2245. IconFileName : PATHSTR;
  2246. Executable : PATHSTR;
  2247. StartupDir : PATHSTR;
  2248. winInitial : XYWINSIZE;
  2249. res1 : CARDINAL;
  2250. res2 : FarADDRESS;
  2251. CEnvironmentVars : CARDINAL;
  2252. EnvironmentVars : FarADDRESS;
  2253. CProgramParameter : CARDINAL;
  2254. ProgramParameter : FarADDRESS;
  2255. END;
  2256. (* Structures associated with 'Prf' calls *)
  2257. PROGDETAILS = RECORD
  2258. Length: LONGCARD; (* set this to sizeof(PROGDETAILS) *)
  2259. progt: PROGTYPE;
  2260. pad1: ARRAY[0..2] OF SHORTCARD; (* ready for 32-bit PROGTYPE *)
  2261. Title: FarADDRESS; (* any of the pointers can be NIL *)
  2262. Executable: FarADDRESS;
  2263. Parameters: FarADDRESS;
  2264. StartupDir: FarADDRESS;
  2265. Icon: FarADDRESS;
  2266. Environment: FarADDRESS; (* terminated by /0/0 *)
  2267. Initial: SWP; (* this replaces XYWINSIZE *)
  2268. pad2: ARRAY[0..4] OF SHORTCARD; (* ready for 32-bit SWP *)
  2269. END;
  2270. PROGTITLE = RECORD
  2271. hprog: HPROGRAM;
  2272. progt: PROGTYPE;
  2273. pad1: ARRAY[0..2] OF SHORTCARD; (* padding ready for 32-bit PROGTYPE *)
  2274. Title: FarADDRESS;
  2275. END;
  2276. QFEOUTBLK = RECORD
  2277. Total: SHORTCARD;
  2278. Count: SHORTCARD;
  2279. ProgramArr: ARRAY [0..0] OF HPROGRAM;
  2280. END;
  2281. (* Program List API Function Definitions *)
  2282. PROCEDURE QueryProgramTitles(h:HAB; p:HPROGRAM; VAR b:PROGRAMENTRY; l:CARDINAL; VAR t:CARDINAL) : CARDINAL;
  2283. PROCEDURE AddProgram(h:HAB; VAR i:PIBSTRUCT; p:HPROGRAM) : HPROGRAM;
  2284. PROCEDURE QueryDefinition(h:HAB; p:HPROGRAM; VAR i:PIBSTRUCT; m:CARDINAL) : CARDINAL;
  2285. PROCEDURE CreateGroup(h:HAB; t:ARRAY OF CHAR; v:CARDINAL; r1,r2:LONGCARD) : HPROGRAM;
  2286. (* Program List API available 'Prf' calls *)
  2287. PROCEDURE PrfQueryProgramTitles(h: HINI; pgroup: HPROGRAM;
  2288. VAR T: PROGTITLE; Max: LONGCARD; VAR Count: LONGCARD): LONGCARD;
  2289. PROCEDURE PrfAddProgram (h:HINI; VAR p: PROGDETAILS; hpGroup: HPROGRAM): HPROGRAM;
  2290. PROCEDURE PrfChangeProgram (h:HINI; hp: HPROGRAM; VAR p: PROGDETAILS): BOOLEAN;
  2291. PROCEDURE PrfQueryDefinition (h:HINI; hp:HPROGRAM; VAR p: PROGDETAILS; BufMax: LONGCARD): LONGCARD;
  2292. PROCEDURE PrfRemoveProgram(h:HINI; hp:HPROGRAM): BOOLEAN;
  2293. PROCEDURE PrfQueryProgramHandle (h:HINI; Exe: FarADDRESS;
  2294. VAR p:HPROGARRAY; bufmax: LONGCARD; VAR Count: LONGCARD): LONGCARD;
  2295. PROCEDURE PrfCreateGroup (h:HINI; Title: FarADDRESS; Visibility: SHORTCARD): HPROGRAM;
  2296. PROCEDURE PrfDestroyGroup(h:HINI; hp:HPROGRAM): BOOLEAN;
  2297. PROCEDURE PrfQueryProgramCategory(h:HINI; Exe: FarADDRESS): PROGCATEGORY;
  2298. TYPE
  2299. HSWITCH = LHANDLE;
  2300. CONST
  2301. (* SWCNTRL Visibility *)
  2302. SWL_VISIBLE = 4;
  2303. SWL_INVISIBLE = 1;
  2304. SWL_GRAYED = 2;
  2305. (* SWCNTRL Jump *)
  2306. SWL_JUMPABLE = 2;
  2307. SWL_NOTJUMPABLE = 1;
  2308. TYPE
  2309. SWCNTRL = RECORD
  2310. hwnd : HWND;
  2311. hwndIcon : HWND;
  2312. hprog : HPROGRAM;
  2313. idProcess : CARDINAL;
  2314. idSession : CARDINAL;
  2315. Visibility : SHORTCARD;
  2316. Jump : SHORTCARD;
  2317. Swtitle : NAMESTR;
  2318. Reserved : SHORTCARD;
  2319. END;
  2320. PROCEDURE AddSwitchEntry(VAR c:SWCNTRL) : HSWITCH;
  2321. PROCEDURE RemoveSwitchEntry(h:HSWITCH) : CARDINAL;
  2322. TYPE
  2323. SWENTRY = RECORD
  2324. hswitch: HSWITCH;
  2325. swctl: SWCNTRL;
  2326. END;
  2327. SWBLOCK = RECORD
  2328. cswentry: CARDINAL;
  2329. swentry: ARRAY [0..0] OF SWENTRY;
  2330. END;
  2331. PROCEDURE ChangeSwitchEntry(s:HSWITCH; VAR c:SWCNTRL) : CARDINAL;
  2332. PROCEDURE QueryTaskTitle(c:CARDINAL; VAR t:ARRAY OF CHAR; c2:CARDINAL) : CARDINAL;
  2333. PROCEDURE CreateSwitchEntry(h: HAB; VAR c:SWCNTRL ): HSWITCH;
  2334. PROCEDURE QuerySessionTitle(h:HAB; s: CARDINAL; VAR Title: ARRAY OF CHAR;
  2335. Titlelen: CARDINAL): CARDINAL;
  2336. PROCEDURE QuerySwitchEntry(h:HSWITCH; VAR SwitchData: SWCNTRL): CARDINAL;
  2337. PROCEDURE QuerySwitchHandle(h:HWND; process: PID): HSWITCH;
  2338. PROCEDURE QuerySwitchList(h:HAB; VAR Entries: SWBLOCK; Datalen: CARDINAL): CARDINAL;
  2339. PROCEDURE QueryTaskSizePos(h:HAB; ScreenGroup: CARDINAL; VAR pdata: SWP): CARDINAL;
  2340. PROCEDURE SwitchToProgram(h:HSWITCH): CARDINAL;
  2341. (* OS2.INI access functions *)
  2342. PROCEDURE QueryProfileInt(h:HAB; a,k:ARRAY OF CHAR; d:INTEGER) : INTEGER;
  2343. PROCEDURE QueryProfileString(h:HAB; a,k,d:ARRAY OF CHAR; VAR p : ARRAY OF CHAR; m:CARDINAL) : CARDINAL;
  2344. PROCEDURE WriteProfileString(h:HAB; a,k,v:ARRAY OF CHAR) : BOOLEAN;
  2345. PROCEDURE QueryProfileSize(h:HAB; a,k:ARRAY OF CHAR; VAR s:CARDINAL) : CARDINAL;
  2346. PROCEDURE QueryProfileData(h:HAB; a,k:ARRAY OF CHAR; v:FarADDRESS; VAR s:CARDINAL) : BOOLEAN;
  2347. PROCEDURE WriteProfileData(h:HAB; a,k:ARRAY OF CHAR; v:FarADDRESS; s:CARDINAL) : BOOLEAN;
  2348. (* new public message, broadcast on WinReset *)
  2349. CONST
  2350. PL_ALTERED =08EH; (* WM_SHELLFIRST + 0E *)
  2351. TYPE
  2352. HAPP = LHANDLE;
  2353. PROCEDURE InstStartApp(h:HINI; Notify:HWND; Count: CARDINAL;
  2354. Application: FarADDRESS;
  2355. VAR CmdLine: ARRAY OF CHAR; Data: FarADDRESS;
  2356. Options: CARDINAL): HAPP;
  2357. PROCEDURE TerminateApp(h: HAPP): BOOLEAN;
  2358. CONST
  2359. (* bit values for Options parameter of WinInstStartAppl *)
  2360. SAF_INSTALLEDCMDLINE = 1; (* use installed parameters *)
  2361. SAF_STARTCHILDAPP = 2; (* related application *)
  2362. (*%E*)
  2363. (**)
  2364. (**--- Win Country Functions -----------------------------------------------*)
  2365. (**)
  2366. (*%T i_COUNTRY*)
  2367. PROCEDURE SetCp(h: HMQ; c: CARDINAL) : BOOLEAN;
  2368. PROCEDURE QueryCp(q: HMQ) : CARDINAL;
  2369. PROCEDURE QueryCpList(h:HAB; n: CARDINAL; VAR c: ARRAY OF CARDINAL) : CARDINAL;
  2370. PROCEDURE CpTranslateString(h:HAB; cs: CARDINAL; s: ARRAY OF CHAR; cd: CARDINAL; m: CARDINAL; VAR d: ARRAY OF CHAR) : BOOLEAN;
  2371. PROCEDURE CpTranslateChar(h:HAB; cs: CARDINAL; c: CHAR; cd: CARDINAL) : CHAR;
  2372. PROCEDURE Upper(h:HAB; p,c: CARDINAL; VAR s: ARRAY OF CHAR) : CARDINAL;
  2373. PROCEDURE UpperChar(h:HAB; p,c: CARDINAL; i: CARDINAL) : CARDINAL;
  2374. PROCEDURE NextChar(h:HAB; p,c: CARDINAL; ca: FarADDRESS) : FarADDRESS;
  2375. PROCEDURE PrevChar(h:HAB; p,c: CARDINAL; s,ca: FarADDRESS) : FarADDRESS;
  2376. TYPE WCS = (WCS_ERROR,WCS_EQ,WCS_LT,WCS_GT);
  2377. PROCEDURE CompareStrings(h:HAB; c1,c2: CARDINAL; s1,s2: ARRAY OF CHAR; o: CARDINAL) : WCS;
  2378. (*%E*)
  2379. (**)
  2380. (**--- Win Heap Manager ----------------------------------------------------*)
  2381. (**)
  2382. (*%T i_HEAP*)
  2383. TYPE
  2384. HHEAP = LHANDLE;
  2385. CONST
  2386. HM_NULL = 0;
  2387. HM_MOVEABLE = 1;
  2388. HM_VALIDSIZE = 2;
  2389. PROCEDURE CreateHeap(b,s,g,mi,ma: CARDINAL; o: CARDINAL) : HHEAP;
  2390. PROCEDURE DestroyHeap(h: HHEAP) : HHEAP;
  2391. PROCEDURE AvailMem(h: HHEAP; c: BOOL; r: CARDINAL) : CARDINAL;
  2392. PROCEDURE AllocMem(h: HHEAP; a: CARDINAL) : CARDINAL;
  2393. PROCEDURE ReallocMem(h: HHEAP; s,o,n: CARDINAL ) : CARDINAL;
  2394. PROCEDURE FreeMem(h: HHEAP; m,l: CARDINAL) : CARDINAL;
  2395. PROCEDURE LockHeap(h: HHEAP) : FarADDRESS;
  2396. (*%E*)
  2397. (**)
  2398. (**--- Win Atom Manager ----------------------------------------------------*)
  2399. (**)
  2400. (*%T i_ATOM*)
  2401. TYPE
  2402. HATOMTBL = LHANDLE;
  2403. ATOM = CARDINAL;
  2404. PROCEDURE QuerySystemAtomTable() : HATOMTBL;
  2405. PROCEDURE CreateAtomTable(i,b: CARDINAL) : HATOMTBL;
  2406. PROCEDURE DestroyAtomTable(h: HATOMTBL) : HATOMTBL;
  2407. PROCEDURE AddAtom(h: HATOMTBL; s: ARRAY OF CHAR) : ATOM;
  2408. PROCEDURE FindAtom(h: HATOMTBL; s: ARRAY OF CHAR) : ATOM;
  2409. PROCEDURE DeleteAtom(h: HATOMTBL; a: ATOM) : ATOM;
  2410. PROCEDURE QueryAtomUsage(h: HATOMTBL; a: ATOM) : INTEGER;
  2411. PROCEDURE QueryAtomLength(h: HATOMTBL; a: ATOM) : CARDINAL;
  2412. PROCEDURE QueryAtomName(h: HATOMTBL; a: ATOM; VAR b: ARRAY OF CHAR; m: CARDINAL) : CARDINAL;
  2413. (*%E*)
  2414. (**)
  2415. (**--- Win Catch and Throw -------------------------------------------------*)
  2416. (**)
  2417. (*%T i_CATCH*)
  2418. TYPE
  2419. CATCHBUF = RECORD
  2420. reserved : ARRAY [0..3] OF LONGCARD;
  2421. END;
  2422. PROCEDURE Catch(VAR b: CATCHBUF) : INTEGER;
  2423. PROCEDURE Throw(VAR b: CATCHBUF; r: INTEGER);
  2424. (*%E*)
  2425. (**)
  2426. (**--- Win Errors ---------------------------------------------------*)
  2427. (**)
  2428. (*%T i_ERROR*)
  2429. (* Error codes for debugging support *)
  2430. (* 0x1001 - 0x1021, 0x1034, 0x1036 - 0x1050 are reserved *)
  2431. CONST
  2432. WINDBG_HWND_NOT_DESTROYED = 01022H;
  2433. WINDBG_HPTR_NOT_DESTROYED = 01023H;
  2434. WINDBG_HACCEL_NOT_DESTROYED = 01024H;
  2435. WINDBG_HENUM_NOT_DESTROYED = 01025H;
  2436. WINDBG_VISRGN_SEM_BUSY = 01026H;
  2437. WINDBG_USER_SEM_BUSY = 01027H;
  2438. WINDBG_DC_CACHE_BUSY = 01028H;
  2439. WINDBG_HOOK_STILL_INSTALLED = 01029H;
  2440. WINDBG_WINDOW_STILL_LOCKED = 0102AH;
  2441. WINDBG_UPDATEPS_ASSERTION_FAIL = 0102BH;
  2442. WINDBG_SENDMSG_WITHIN_USER_SEM = 0102CH;
  2443. WINDBG_USER_SEM_NOT_ENTERED = 0102DH;
  2444. WINDBG_PROC_NOT_EXPORTED = 0102EH;
  2445. WINDBG_BAD_SENDMSG_HWND = 0102FH;
  2446. WINDBG_ABNORMAL_EXIT = 01030H;
  2447. WINDBG_INTERNAL_REVISION = 01031H;
  2448. WINDBG_INITSYSTEM_FAILED = 01032H;
  2449. WINDBG_HATOMTBL_NOT_DESTROYED = 01033H;
  2450. WINDBG_WINDOW_UNLOCK_WAIT = 01035H;
  2451. (* Get/Set Error Information Interface declarations *)
  2452. TYPE
  2453. ERRINFO = RECORD
  2454. FixedErrInfo : CARDINAL;
  2455. idError : LONGCARD;
  2456. DetailLevel : CARDINAL;
  2457. Msg : CARDINAL;
  2458. BinaryData : CARDINAL;
  2459. END;
  2460. PERRINFO = POINTER TO ERRINFO;
  2461. PROCEDURE GetLastError(h: HAB): ERRORID;
  2462. PROCEDURE GetErrorInfo(h: HAB): PERRINFO;
  2463. PROCEDURE FreeErrorInfo(VAR e: ERRINFO): BOOLEAN;
  2464. (* SetErrorInfo API *)
  2465. (*# save *)
  2466. (*# call(c_conv=>on,var_arg=>on,reg_param=>()) *)
  2467. PROCEDURE WinSetErrorInfo(e:ERRORID; flg:CARDINAL): ERRORID;
  2468. (*# restore *)
  2469. CONST
  2470. SEI_BREAKPOINT = 08000H; (* Always enter an INT 3 breakpt *)
  2471. SEI_NOBEEP = 04000H; (* Do not call DosBeep *)
  2472. SEI_NOPROMPT = 02000H; (* Do not prompt the user *)
  2473. SEI_DBGRSRVD = 01000H; (* Reserved for debug use *)
  2474. SEI_DEBUGONLY = 0F000H; (* SEI_BREAKPOINT | SEI_NOBEEP | SEI_NOPROMPT | SEI_RSRVD *)
  2475. SEI_STACKTRACE = 00001H; (* save the stack trace *)
  2476. SEI_REGISTERS = 00002H; (* save the registers *)
  2477. SEI_ARGCOUNT = 00004H; (* first USHORT in args is arg count *)
  2478. SEI_DOSERROR = 00008H; (* first USHORT in args is OS2 error code *)
  2479. SEI_MSGSTR = 00010H; (* first PSZ in arg -> msg string *)
  2480. SEI_RESERVED = 00FE0H; (* Reserved for future use *)
  2481. (* Note that when SEI_ARGCOUNT, SEI_DOSERROR and DOS_MSGSTR are specified *)
  2482. (* together, then the implied order of the parameters is: *)
  2483. (* *)
  2484. (* *)
  2485. (* WinSetErrorInfo( MAKEERRORID( .... ), *)
  2486. (* SEI_ARGCOUNT | SEI_DOSERROR | SEI_MSGSTR, *)
  2487. (* argCount, *)
  2488. (* dosErrorCode, *)
  2489. (* "This is the error msg string: %s\n", *)
  2490. (* "This is an insert for the %s format specifier" ); *)
  2491. (* *)
  2492. (*%E*)
  2493. (**)
  2494. (**--- Win DDE Structure ---------------------------------------------------*)
  2495. (**)
  2496. (*%T i_DDE*)
  2497. TYPE
  2498. DDEINIT = RECORD
  2499. cb : CARDINAL;
  2500. AppName : FarADDRESS;
  2501. Topic : FarADDRESS;
  2502. END ;
  2503. DDESTRUCT = RECORD
  2504. Data : LONGINT;
  2505. Status : BITSET;
  2506. Format : CARDINAL;
  2507. OffItemName : CARDINAL;
  2508. OffData : CARDINAL;
  2509. END;
  2510. (* DDESTRUCT Status *)
  2511. CONST
  2512. DDE_FACK = {0};
  2513. DDE_FBUSY = {1};
  2514. DDE_FNODATA = {2};
  2515. DDE_FACKREQ = {3};
  2516. DDE_FRESPONSE = {4};
  2517. DDE_NOTPROCESSED = {5};
  2518. DDE_FRESERVED = {6,7};
  2519. DDE_FAPPSTATUS = {8..15};
  2520. (* DDESTRUCT Format *)
  2521. DDEFMT_TEXT = 1;
  2522. PROCEDURE DdeInitiate (h: HWND; n,t:ARRAY OF CHAR) : BOOLEAN;
  2523. PROCEDURE DdeRespond (c,s: HWND; n,t:ARRAY OF CHAR) : MRESULT;
  2524. PROCEDURE DdePostMsg (f,t: HWND; m:CARDINAL; VAR d:DDESTRUCT; r:BOOL) : BOOL;
  2525. CONST
  2526. (* DDE Messages *)
  2527. WM_DDE_FIRST = 00A0H;
  2528. WM_DDE_INITIATE = 00A0H;
  2529. WM_DDE_REQUEST = 00A1H;
  2530. WM_DDE_ACK = 00A2H;
  2531. WM_DDE_DATA = 00A3H;
  2532. WM_DDE_ADVISE = 00A4H;
  2533. WM_DDE_UNADVISE = 00A5H;
  2534. WM_DDE_POKE = 00A6H;
  2535. WM_DDE_EXECUTIVE = 00A7H;
  2536. WM_DDE_TERMINATE = 00A8H;
  2537. WM_DDE_INITIATEACK = 00A9H;
  2538. WM_DDE_LAST = 00AFH;
  2539. (*%E*)
  2540. CONST
  2541. WM_QUERYCONVERTPOS = 0B0H;
  2542. (* Return values for WM_QUERYCONVERTPOS *)
  2543. QCP_CONVERT = 1;
  2544. QCP_NOCONVERT = 0;
  2545. (**)
  2546. (**--- Win HELP Structure ---------------------------------------------------*)
  2547. (**)
  2548. (*%T i_WINHELP*)
  2549. TYPE
  2550. HELPSUBTABLE = INTEGER;
  2551. PHELPSUBTABLE = POINTER TO HELPSUBSABLE;
  2552. HELPTABLE = RECORD
  2553. AppWindow : CARDINAL;
  2554. HelpSubTable: PHELPSUBTABLE;
  2555. ExtPanel : CARDINAL;
  2556. END;
  2557. PHELPTABLE = POINTER TO HELPTABLE;
  2558. HELPINIT = RECORD
  2559. cb : CARDINAL;
  2560. ReturnCode : LONGCARD;
  2561. TutorialName : FarADDRESS;
  2562. HelpTable : PHELPTABLE;
  2563. HelpTableModule : HMODULE;
  2564. AccelActionBarModule : HMODULE;
  2565. AccelTable : CARDINAL;
  2566. ActionBar : CARDINAL;
  2567. HelpWindowTitle : FarADDRESS;
  2568. ShowPanelId : CARDINAL;
  2569. HelpLibraryName : FarADDRESS;
  2570. END;
  2571. CONST
  2572. HWND_NULL = HWND (0);
  2573. (* Constants used to define whether user wants to display panel using *)
  2574. (* panel number or panel name. *)
  2575. HM_RESOURCEID = 0;
  2576. HM_PANELNAME = 1;
  2577. HMPANELTYPE_NUMBER = 0;
  2578. HMPANELTYPE_NAME = 1;
  2579. (* Constants used to define how the panel IDs are displayed on *)
  2580. (* help panels. *)
  2581. CMIC_HIDE_PANEL_ID = 00H;
  2582. CMIC_SHOW_PANEL_ID = 01H;
  2583. CMIC_TOGGLE_PANEL_ID = 02H;
  2584. PROCEDURE DestroyHelpInstance(HelpInstance : HWND): BOOLEAN;
  2585. PROCEDURE CreateHelpInstance(hab : HAB; VAR HMInitStructure : HELPINIT) : HWND;
  2586. PROCEDURE AssociateHelpInstance(HelpInstance, App: HWND) : BOOLEAN;
  2587. PROCEDURE QueryHelpInstance(App: HWND) : HWND;
  2588. PROCEDURE LoadHelpTable(HelpInstance: HWND; HelpTable : CARDINAL; Module : HMODULE) : BOOLEAN;
  2589. PROCEDURE CreateHelpTable(HelpInstance: HWND; VAR HelpTable : HELPTABLE) : BOOLEAN;
  2590. CONST
  2591. HM_MSG_BASE = 0220H;
  2592. HM_DISMISS_WINDOW = HM_MSG_BASE+01H;
  2593. HM_DISPLAY_HELP = HM_MSG_BASE+02H;
  2594. HM_EXT_HELP = HM_MSG_BASE+03H;
  2595. HM_SET_ACTIVE_WINDOW = HM_MSG_BASE+04H;
  2596. HM_LOAD_HELP_TABLE = HM_MSG_BASE+05H;
  2597. HM_CREATE_HELP_TABLE = HM_MSG_BASE+06H;
  2598. HM_SET_HELP_WINDOW_TITLE = HM_MSG_BASE+07H;
  2599. HM_SET_SHOW_PANEL_ID = HM_MSG_BASE+08H;
  2600. HM_REPLACE_HELP_FOR_HELP = HM_MSG_BASE+09H;
  2601. HM_HELP_INDEX = HM_MSG_BASE+0AH;
  2602. HM_HELP_CONTENTS = HM_MSG_BASE+0BH;
  2603. HM_KEYS_HELP = HM_MSG_BASE+0CH;
  2604. HM_SET_HELP_LIBRARY_NAME = HM_MSG_BASE+0DH;
  2605. HM_ERROR = HM_MSG_BASE+0EH;
  2606. HM_HELPSUBITEM_NOT_FOUND = HM_MSG_BASE+0FH;
  2607. HM_QUERY_KEYS_HELP = HM_MSG_BASE+010H;
  2608. HM_TUTORIAL = HM_MSG_BASE+011H;
  2609. HM_EXT_HELP_UNDEFINED = HM_MSG_BASE+012H;
  2610. HM_ACTIONBAR_COMMAND = HM_MSG_BASE+013H;
  2611. HM_INFORM = HM_MSG_BASE+014H;
  2612. HMERR_NO_FRAME_WND_IN_CHAIN = 01001H;
  2613. HMERR_INVALID_ASSOC_APP_WND = 01002H;
  2614. HMERR_INVALID_ASSOC_HELP_INST = 01003H;
  2615. HMERR_INVALID_DESTROY_HELP_INST = 01004H;
  2616. HMERR_NO_HELP_INST_IN_CHAIN = 01005H;
  2617. HMERR_INVALID_HELP_INSTANCE_HDL = 01006H;
  2618. HMERR_INVALID_QUERY_APP_WND = 01007H;
  2619. HMERR_HELP_INST_CALLED_INVALID = 01008H;
  2620. HMERR_HELPTABLE_UNDEFINE = 01009H;
  2621. HMERR_HELP_INSTANCE_UNDEFINE = 0100AH;
  2622. HMERR_HELPITEM_NOT_FOUND = 0100BH;
  2623. HMERR_INVALID_HELPSUBITEM_SIZE = 0100CH;
  2624. HMERR_HELPSUBITEM_NOT_FOUND = 0100DH;
  2625. HMERR_INDEX_NOT_FOUND = 02001H;
  2626. HMERR_CONTENT_NOT_FOUND = 02002H;
  2627. HMERR_OPEN_LIB_FILE = 02003H;
  2628. HMERR_READ_LIB_FILE = 02004H;
  2629. HMERR_CLOSE_LIB_FILE = 02005H;
  2630. HMERR_INVALID_LIB_FILE = 02006H;
  2631. HMERR_NO_MEMORY = 02007H;
  2632. HMERR_ALLOCATE_SEGMENT = 02008H;
  2633. HMERR_FREE_MEMORY = 02009H;
  2634. HMERR_PANEL_NOT_FOUND = 02010H;
  2635. HMERR_DATABASE_NOT_OPEN = 02011H;
  2636. (*%E*)
  2637. (**)
  2638. (**--- Win Load procedure ---------------------------------------------------*)
  2639. (**)
  2640. (*%T i_WINLOAD*)
  2641. TYPE
  2642. HLIB = HMODULE;
  2643. PROCEDURE DeleteProcedure(h:HAB; wndproc: FarADDRESS): BOOLEAN;
  2644. PROCEDURE DeleteLibrary(h:HAB; libhandle: HLIB): BOOLEAN;
  2645. PROCEDURE LoadProcedure(h:HAB; libhandle: HLIB; VAR procname: ARRAY OF CHAR): FarADDRESS;
  2646. PROCEDURE LoadLibrary(h:HAB; VAR libname: ARRAY OF CHAR): HLIB;
  2647. (*%E*)
  2648. (**)
  2649. (**--- Win DBCS Structure ---------------------------------------------------*)
  2650. (**)
  2651. (*%T i_NLS*)
  2652. CONST
  2653. WM_DBCSFIRST = 0B0H;
  2654. WM_DBCSLAST = 0CFH;
  2655. WC_APPSTAT = FarADDRESS(0FFFF0010H);
  2656. WC_KBDSTAT = FarADDRESS(0FFFF0011H);
  2657. WC_PECIC = FarADDRESS(0FFFF0012H);
  2658. WC_DBE_KKPOPUP = FarADDRESS(0FFFF0013H);
  2659. (*%E *)
  2660. END Win.