commctrl.pp 432 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735
  1. {
  2. This file is part of the Free Pascal run time library.
  3. Copyright (c) 1999-2004 by Marco van de Voort
  4. member of the Free Pascal development team.
  5. See the file COPYING.FPC, included in this distribution,
  6. for details about the copyright.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. Original copyright statement follows.
  11. **************************************************************************
  12. * *
  13. * commctrl.h - - Interface for the Windows Common Controls *
  14. * *
  15. * Version 1.2 *
  16. * *
  17. * Copyright (c) Microsoft Corporation. All rights reserved. *
  18. * *
  19. **************************************************************************
  20. Note: This is an initial translation, and probably _full_ of bugs, this
  21. is because my conversion tool was flawed, and a lot of postediting
  22. was needed, which is bound to introduce bugs and inconsequencies
  23. This is an huge unit, and its maintenance and compability is not
  24. a top-priority.
  25. I prefer patches as bugfix over bugreports, and
  26. preferably patches with lots of fixes at once.
  27. If you can't make a patch, at least research the bug thoroughly,
  28. and provide as much info as possible (which windows version,
  29. the C prototype from the sdk, etc)
  30. Help the FPC team, and try to do as much as possible yourself.
  31. }
  32. Unit CommCtrl;
  33. Interface
  34. {$Mode ObjFPC}
  35. {$ifdef FPC_OS_UNICODE}
  36. {$define UNICODE}
  37. {$endif}
  38. Uses Windows,CTypes,ActiveX;
  39. // --------------------
  40. // --------------------
  41. CONST CommCtrlDLL = 'comctl32.dll';
  42. // Some reasonal defaults.
  43. // for XP only set NT to $%0501 and IE to $0600
  44. //
  45. // The NT conditional is only used for XP/no XP.
  46. {$DEFINE WIN32_IE=$0500}
  47. {$DEFINE IE3PLUS}
  48. {$DEFINE IE4PLUS}
  49. {$define IE5plus}
  50. {$define WIN32XP}
  51. {$define win32vista} // till WC_STATICA
  52. {$define ie501plus}
  53. {$ifdef win32}
  54. {$define _win32}
  55. {$endif win32}
  56. {$define ie6plus}
  57. {$define ntddi_vista}
  58. {$define NTDDI_WIN7}
  59. {$ifdef win64}
  60. {$define _win32}
  61. {$define _win64}
  62. {$endif win64}
  63. {$DEFINE WIN32_WINNT=0} // NO XP
  64. {$DEFINE __IStream_INTERFACE_DEFINED__} // lpstream defined in activex afaik.
  65. // Sanity check in source. Not translated:
  66. //if (WIN32_IE < $0400) && defined(WIN32_WINNT) && (WIN32_WINNT >= $0500)}
  67. // #error _WIN32_IE setting conflicts with _WIN32_WINNT setting
  68. //
  69. // Users of this header may define any number of these constants to avoid
  70. // the definitions of each functional group.
  71. //
  72. // NOTOOLBAR Customizable bitmap-button toolbar control.
  73. // NOUPDOWN Up and Down arrow increment/decrement control.
  74. // NOSTATUSBAR Status bar control.
  75. // NOMENUHELP APIs to help manage menus, especially with a status bar.
  76. // NOTRACKBAR Customizable column-width tracking control.
  77. // NODRAGLIST APIs to make a listbox source and sink drag&drop actions.
  78. // NOPROGRESS Progress gas gauge.
  79. // NOHOTKEY HotKey control
  80. // NOHEADER Header bar control.
  81. // NOIMAGEAPIS ImageList apis.
  82. // NOLISTVIEW ListView control.
  83. // NOTREEVIEW TreeView control.
  84. // NOTABCONTROL Tab control.
  85. // NOANIMATE Animate control.
  86. // NOBUTTON Button control.
  87. // NOSTATIC Static control.
  88. // NOEDIT Edit control.
  89. // NOLISTBOX Listbox control.
  90. // NOCOMBOBOX Combobox control.
  91. // NOSCROLLBAR Scrollbar control.
  92. //
  93. //=============================================================================
  94. // Moved items due to forward defining limitations
  95. Const
  96. MAX_LINKID_TEXT = 48;
  97. L_MAX_URL_LENGTH = (2048 + 32 + length('://'));
  98. Type
  99. tagLITEM = Record
  100. mask : UINT;
  101. iLink : cint;
  102. state : UINT;
  103. stateMask : UINT;
  104. szID : Array [0..MAX_LINKID_TEXT-1] OF WCHAR;
  105. szUrl : Array [0..L_MAX_URL_LENGTH-1] OF WCHAR;
  106. END;
  107. LITEM = tagLITEM;
  108. PLITEM = ^tagLITEM;
  109. TLITEM = tagLITEM;
  110. // PLITEM = ^tagLITEM;
  111. // include <prsht.h>
  112. Procedure InitCommonControls; stdcall; external commctrldll name 'InitCommonControls';
  113. {$ifdef ie3plus}
  114. TYPE
  115. tagINITCOMMONCONTROLSEX = Record
  116. dwSize : DWORD; // size of this structure
  117. dwICC : DWORD; // flags indicating which classes to be initialized
  118. END;
  119. _INITCOMMONCONTROLSEX = tagINITCOMMONCONTROLSEX;
  120. LPINITCOMMONCONTROLSEX = ^tagINITCOMMONCONTROLSEX;
  121. TINITCOMMONCONTROLSEX = tagINITCOMMONCONTROLSEX;
  122. PINITCOMMONCONTROLSEX = ^tagINITCOMMONCONTROLSEX;
  123. CONST
  124. ICC_LISTVIEW_CLASSES = $00000001; // listview, header
  125. ICC_TREEVIEW_CLASSES = $00000002; // treeview, tooltips
  126. ICC_BAR_CLASSES = $00000004; // toolbar, statusbar, trackbar, tooltips
  127. ICC_TAB_CLASSES = $00000008; // tab, tooltips
  128. ICC_UPDOWN_CLASS = $00000010; // updown
  129. ICC_PROGRESS_CLASS = $00000020; // progress
  130. ICC_HOTKEY_CLASS = $00000040; // hotkey
  131. ICC_ANIMATE_CLASS = $00000080; // animate
  132. ICC_WIN95_CLASSES = $000000FF;
  133. ICC_DATE_CLASSES = $00000100; // month picker, date picker, time picker, updown
  134. ICC_USEREX_CLASSES = $00000200; // comboex
  135. ICC_COOL_CLASSES = $00000400; // rebar (coolbar) control
  136. {$ifdef ie4plus}
  137. ICC_INTERNET_CLASSES = $00000800;
  138. ICC_PAGESCROLLER_CLASS = $00001000; // page scroller
  139. ICC_NATIVEFNTCTL_CLASS = $00002000; // native font control
  140. {$ENDIF}
  141. {$ifdef WIN32XP}
  142. ICC_STANDARD_CLASSES = $00004000;
  143. ICC_LINK_CLASS = $00008000;
  144. {$ENDIF}
  145. function InitCommonControlsEx(var rec : TINITCOMMONCONTROLSEX):BOOL; stdcall; external commctrldll name 'InitCommonControlsEx';
  146. {$ENDIF} // _WIN32_IE >= 0x0300
  147. CONST
  148. ODT_HEADER = 100;
  149. ODT_TAB = 101;
  150. ODT_LISTVIEW = 102;
  151. //====== WM_NOTIFY codes (NMHDR.code values) ==================================
  152. CONST
  153. NM_FIRST = (0- 0); // generic to all controls
  154. NM_LAST = (0- 99);
  155. LVN_FIRST = (0-100); // listview
  156. LVN_LAST = (0-199);
  157. // Property sheet reserved (0U-200U) - (0U-299U) - see prsht.h
  158. HDN_FIRST = (0-300); // header
  159. HDN_LAST = (0-399);
  160. TVN_FIRST = (0-400); // treeview
  161. TVN_LAST = (0-499);
  162. TTN_FIRST = (0-520); // tooltips
  163. TTN_LAST = (0-549);
  164. TCN_FIRST = (0-550); // tab control
  165. TCN_LAST = (0-580);
  166. // Shell reserved (0U-580U) - (0U-589U)
  167. CDN_FIRST = (0-601); // common dialog (new)
  168. CDN_LAST = (0-699);
  169. TBN_FIRST = (0-700); // toolbar
  170. TBN_LAST = (0-720);
  171. UDN_FIRST = (0-721); // updown
  172. UDN_LAST = (0-740);
  173. {$ifdef ie3plus}
  174. MCN_FIRST = (0-750); // monthcal
  175. MCN_LAST = (0-759);
  176. DTN_FIRST = (0-760); // datetimepick
  177. DTN_LAST = (0-799);
  178. CBEN_FIRST = (0-800); // combo box ex
  179. CBEN_LAST = (0-830);
  180. RBN_FIRST = (0-831); // rebar
  181. RBN_LAST = (0-859);
  182. {$ENDIF}
  183. {$ifdef ie4plus}
  184. IPN_FIRST = (0-860); // internet address
  185. IPN_LAST = (0-879); // internet address
  186. SBN_FIRST = (0-880); // status bar
  187. SBN_LAST = (0-899);
  188. PGN_FIRST = (0-900); // Pager Control
  189. PGN_LAST = (0-950);
  190. {$ENDIF}
  191. {$ifdef ie5plus}
  192. {$IFNDEF WMN_FIRST}
  193. WMN_FIRST = (0-1000);
  194. WMN_LAST = (0-1200);
  195. {$ENDIF}
  196. {$ENDIF}
  197. {$ifdef Win32XP}
  198. BCN_FIRST = (0-1250);
  199. BCN_LAST = (0-1350);
  200. {$ENDIF}
  201. {$ifdef win32vista}
  202. TRBN_FIRST = cardinal(0-1501); // trackbar
  203. TRBN_LAST = cardinal(0-1519);
  204. {$endif}
  205. MSGF_COMMCTRL_BEGINDRAG = $4200;
  206. MSGF_COMMCTRL_SIZEHEADER = $4201;
  207. MSGF_COMMCTRL_DRAGSELECT = $4202;
  208. MSGF_COMMCTRL_TOOLBARCUST = $4203;
  209. //====== Ranges for control message IDs =======================================
  210. LVM_FIRST = $1000; // ListView messages
  211. TV_FIRST = $1100; // TreeView messages
  212. HDM_FIRST = $1200; // Header messages
  213. TCM_FIRST = $1300; // Tab control messages
  214. {$ifdef ie4plus}
  215. PGM_FIRST = $1400; // Pager control messages
  216. {$ifdef win32xp}// actually 0x501=2003 or some sp?
  217. ECM_FIRST = $1500; // Edit control messages
  218. BCM_FIRST = $1600; // Button control messages
  219. CBM_FIRST = $1700; // Combobox control messages
  220. {$ENDIF}
  221. CCM_FIRST = $2000; // Common control shared messages
  222. CCM_LAST = (CCM_FIRST + $200);
  223. CCM_SETBKCOLOR = (CCM_FIRST + 1); // lParam is bkColor
  224. TYPE
  225. tagCOLORSCHEME = Record
  226. dwSize : DWORD;
  227. clrBtnHighlight : COLORREF; // highlight color
  228. clrBtnShadow : COLORREF; // shadow color
  229. END;
  230. COLORSCHEME = tagCOLORSCHEME;
  231. LPCOLORSCHEME = ^tagCOLORSCHEME;
  232. TCOLORSCHEME = tagCOLORSCHEME;
  233. PCOLORSCHEME = ^tagCOLORSCHEME;
  234. CONST
  235. CCM_SETCOLORSCHEME = (CCM_FIRST + 2); // lParam is color scheme
  236. CCM_GETCOLORSCHEME = (CCM_FIRST + 3); // fills in COLORSCHEME pointed to by lParam
  237. CCM_GETDROPTARGET = (CCM_FIRST + 4);
  238. CCM_SETUNICODEFORMAT = (CCM_FIRST + 5);
  239. CCM_GETUNICODEFORMAT = (CCM_FIRST + 6);
  240. {$ifdef ie5plus}
  241. {$ifdef win32xp}
  242. COMCTL32_VERSION = 6;
  243. {$ELSE}
  244. COMCTL32_VERSION = 5;
  245. {$ENDIF}
  246. CCM_SETVERSION = (CCM_FIRST + $7);
  247. CCM_GETVERSION = (CCM_FIRST + $8);
  248. CCM_SETNOTIFYWINDOW = (CCM_FIRST + $9); // wParam == hwndParent.
  249. {$ifdef win32xp}
  250. CCM_SETWINDOWTHEME = (CCM_FIRST + $b);
  251. CCM_DPISCALE = (CCM_FIRST + $c); // wParam == Awareness
  252. {$ENDIF}
  253. {$ENDIF} // (_WIN32_IE >= 0x0500)
  254. {$ENDIF} // (_WIN32_IE >= 0x0400)
  255. {$ifdef ie4plus}
  256. // for tooltips
  257. INFOTIPSIZE = 1024;
  258. {$ENDIF}
  259. //====== WM_NOTIFY Macros =====================================================
  260. // Macro 8
  261. Procedure HANDLE_WM_NOTIFY( hwnd : hwnd; wParam : cint;var _lParam : NMHDR ;fn :Pointer);
  262. // Macro 9
  263. Function FORWARD_WM_NOTIFY( hwnd : hwnd; idFrom : cint;var pnmhdr : NMHDR ; fn :pointer ):LRESULT;
  264. //====== Generic WM_NOTIFY notification codes =================================
  265. CONST
  266. NM_OUTOFMEMORY = (NM_FIRST-1);
  267. NM_CLICK = (NM_FIRST-2); // uses NMCLICK struct
  268. NM_DBLCLK = (NM_FIRST-3);
  269. NM_RETURN = (NM_FIRST-4);
  270. NM_RCLICK = (NM_FIRST-5); // uses NMCLICK struct
  271. NM_RDBLCLK = (NM_FIRST-6);
  272. NM_SETFOCUS = (NM_FIRST-7);
  273. NM_KILLFOCUS = (NM_FIRST-8);
  274. {$ifdef ie3plus}
  275. NM_CUSTOMDRAW = (NM_FIRST-12);
  276. NM_HOVER = (NM_FIRST-13);
  277. {$ENDIF}
  278. {$ifdef ie4plus}
  279. NM_NCHITTEST = (NM_FIRST-14); // uses NMMOUSE struct
  280. NM_KEYDOWN = (NM_FIRST-15); // uses NMKEY struct
  281. NM_RELEASEDCAPTURE = (NM_FIRST-16);
  282. NM_SETCURSOR = (NM_FIRST-17); // uses NMMOUSE struct
  283. NM_CHAR = (NM_FIRST-18); // uses NMCHAR struct
  284. {$ENDIF}
  285. {$ifdef ie401plus}
  286. NM_TOOLTIPSCREATED = (NM_FIRST-19); // notify of when the tooltips window is create
  287. {$ENDIF}
  288. {$ifdef ie5plus}
  289. NM_LDOWN = (NM_FIRST-20);
  290. NM_RDOWN = (NM_FIRST-21);
  291. NM_THEMECHANGED = (NM_FIRST-22);
  292. {$ENDIF}
  293. {$ifdef win32vista}
  294. NM_FONTCHANGED = (NM_FIRST-23);
  295. NM_CUSTOMTEXT = (NM_FIRST-24); // uses NMCUSTOMTEXT struct
  296. NM_TVSTATEIMAGECHANGING = (NM_FIRST-24); // uses NMTVSTATEIMAGECHANGING struct, defined after HTREEITEM
  297. {$endif}
  298. {$IFNDEF CCSIZEOF_STRUCT}
  299. // Macro 10
  300. // #define CCSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member))
  301. {$ENDIF}
  302. //====== Generic WM_NOTIFY notification structures ============================
  303. {$ifdef ie401plus}
  304. TYPE
  305. tagNMTOOLTIPSCREATED = Record
  306. hdr : NMHDR;
  307. hwndToolTips : HWND;
  308. END;
  309. NMTOOLTIPSCREATED = tagNMTOOLTIPSCREATED;
  310. LPNMTOOLTIPSCREATED = ^tagNMTOOLTIPSCREATED;
  311. TNMTOOLTIPSCREATED = tagNMTOOLTIPSCREATED;
  312. PNMTOOLTIPSCREATED = ^tagNMTOOLTIPSCREATED;
  313. {$ENDIF}
  314. {$ifdef ie4plus}
  315. Type
  316. tagNMMOUSE = Record
  317. hdr : NMHDR;
  318. dwItemSpec : DWORD_PTR;
  319. dwItemData : DWORD_PTR;
  320. pt : POINT;
  321. dwHitInfo : LPARAM; // any specifics about where on the item or control the mouse is
  322. END;
  323. NMMOUSE = tagNMMOUSE;
  324. LPNMMOUSE = ^tagNMMOUSE;
  325. TNMMOUSE = tagNMMOUSE;
  326. PNMMOUSE = ^tagNMMOUSE;
  327. NMCLICK = NMMOUSE;
  328. LPNMCLICK = LPNMMOUSE;
  329. // Generic structure to request an object of a specific type.
  330. tagNMOBJECTNOTIFY = Record
  331. hdr : NMHDR;
  332. iItem : cint;
  333. {$IFDEF __IID_DEFINED__}
  334. piid : PIID;
  335. {$ELSE}
  336. piid : Pointer;
  337. {$ENDIF}
  338. pObject : Pointer;
  339. hResult : HRESULT;
  340. dwFlags : DWORD; // control specific flags (hints as to where in iItem it hit)
  341. END;
  342. NMOBJECTNOTIFY = tagNMOBJECTNOTIFY;
  343. LPNMOBJECTNOTIFY = ^tagNMOBJECTNOTIFY;
  344. TNMOBJECTNOTIFY = tagNMOBJECTNOTIFY;
  345. PNMOBJECTNOTIFY = ^tagNMOBJECTNOTIFY;
  346. // Generic structure for a key
  347. tagNMKEY = Record
  348. hdr : NMHDR;
  349. nVKey : UINT;
  350. uFlags : UINT;
  351. END;
  352. NMKEY = tagNMKEY;
  353. LPNMKEY = ^tagNMKEY;
  354. TNMKEY = tagNMKEY;
  355. PNMKEY = ^tagNMKEY;
  356. // Generic structure for a character
  357. tagNMCHAR = Record
  358. hdr : NMHDR;
  359. ch : UINT;
  360. dwItemPrev : DWORD; // Item previously selected
  361. dwItemNext : DWORD; // Item to be selected
  362. END;
  363. NMCHAR = tagNMCHAR;
  364. LPNMCHAR = ^tagNMCHAR;
  365. TNMCHAR = tagNMCHAR;
  366. PNMCHAR = ^tagNMCHAR;
  367. {$ifdef win32vista}
  368. tagNMCUSTOMTEXT = Record
  369. hdr : NMHDR;
  370. hDC : HDC;
  371. lpString : LPCWSTR;
  372. nCount : cint;
  373. lpRect : LPRECT;
  374. uFormat : UINT;
  375. fLink : bool;
  376. end;
  377. NMCUSTOMTEXT = tagNMCUSTOMTEXT;
  378. LPNMCUSTOMTEXT = ^tagNMCUSTOMTEXT;
  379. TNMCUSTOMTEXT = tagNMCUSTOMTEXT;
  380. PNMCUSTOMTEXT = LPNMCUSTOMTEXT;
  381. {$endif}
  382. {$ENDIF} // _WIN32_IE >= 0x0400
  383. {$ifdef ie3plus}
  384. //==================== CUSTOM DRAW ==========================================
  385. // custom draw return flags
  386. // values under 0x00010000 are reserved for global custom draw values.
  387. // above that are for specific controls
  388. CONST
  389. CDRF_DODEFAULT = $00000000;
  390. CDRF_NEWFONT = $00000002;
  391. CDRF_SKIPDEFAULT = $00000004;
  392. CDRF_NOTIFYPOSTPAINT = $00000010;
  393. CDRF_NOTIFYITEMDRAW = $00000020;
  394. {$ifdef ie4plus}
  395. CDRF_NOTIFYSUBITEMDRAW = $00000020; // flags are the same, we can distinguish by context
  396. {$ENDIF}
  397. CDRF_NOTIFYPOSTERASE = $00000040;
  398. CDRF_NOTIFYITEMERASE = $00000080; // according to lazarus headers. Can't find in sdk 6.0 (Vista sdk)
  399. // drawstage flags
  400. // values under 0x00010000 are reserved for global custom draw values.
  401. // above that are for specific controls
  402. CDDS_PREPAINT = $00000001;
  403. CDDS_POSTPAINT = $00000002;
  404. CDDS_PREERASE = $00000003;
  405. CDDS_POSTERASE = $00000004;
  406. // the 0x000010000 bit means it's individual item specific
  407. CDDS_ITEM = $00010000;
  408. CDDS_ITEMPREPAINT = (CDDS_ITEM OR CDDS_PREPAINT);
  409. CDDS_ITEMPOSTPAINT = (CDDS_ITEM OR CDDS_POSTPAINT);
  410. CDDS_ITEMPREERASE = (CDDS_ITEM OR CDDS_PREERASE);
  411. CDDS_ITEMPOSTERASE = (CDDS_ITEM OR CDDS_POSTERASE);
  412. {$ifdef ie4plus}
  413. CDDS_SUBITEM = $00020000;
  414. {$ENDIF}
  415. // itemState flags
  416. CDIS_SELECTED = $0001;
  417. CDIS_GRAYED = $0002;
  418. CDIS_DISABLED = $0004;
  419. CDIS_CHECKED = $0008;
  420. CDIS_FOCUS = $0010;
  421. CDIS_DEFAULT = $0020;
  422. CDIS_HOT = $0040;
  423. CDIS_MARKED = $0080;
  424. CDIS_INDETERMINATE = $0100;
  425. {$ifdef win32xp}
  426. CDIS_SHOWKEYBOARDCUES = $0200;
  427. {$ENDIF}
  428. {$ifdef win32vista}
  429. CDIS_NEARHOT = $0400;
  430. CDIS_OTHERSIDEHOT = $0800;
  431. CDIS_DROPHILITED = $1000;
  432. {$endif}
  433. TYPE
  434. tagNMCUSTOMDRAWINFO = Record
  435. hdr : NMHDR;
  436. dwDrawStage : DWORD;
  437. hdc : HDC;
  438. rc : RECT;
  439. dwItemSpec : DWORD_PTR; // this is control specific, but it's how to specify an item. valid only with CDDS_ITEM bit set
  440. uItemState : UINT;
  441. lItemlParam : LPARAM;
  442. END;
  443. NMCUSTOMDRAW = tagNMCUSTOMDRAWINFO;
  444. LPNMCUSTOMDRAW = ^tagNMCUSTOMDRAWINFO;
  445. TNMCUSTOMDRAWINFO = tagNMCUSTOMDRAWINFO;
  446. PNMCUSTOMDRAWINFO = ^tagNMCUSTOMDRAWINFO;
  447. PNMCustomDraw = PNMCUSTOMDRAWINFO;
  448. TNMCustomDraw = tagNMCUSTOMDRAWINFO;
  449. tagNMTTCUSTOMDRAW = Record
  450. nmcd : NMCUSTOMDRAW;
  451. uDrawFlags : UINT;
  452. END;
  453. NMTTCUSTOMDRAW = tagNMTTCUSTOMDRAW;
  454. LPNMTTCUSTOMDRAW = ^tagNMTTCUSTOMDRAW;
  455. TNMTTCUSTOMDRAW = tagNMTTCUSTOMDRAW;
  456. PNMTTCUSTOMDRAW = ^tagNMTTCUSTOMDRAW;
  457. {$ENDIF} // _WIN32_IE >= 0x0300
  458. //====== IMAGE APIS ===========================================================
  459. {$IFNDEF NOIMAGEAPIS}
  460. CONST
  461. CLR_NONE = DWORD($FFFFFFFF);
  462. CLR_DEFAULT = DWORD($FF000000);
  463. {$IFNDEF IMAGELISTDRAWPARAMS}
  464. {$ifdef ie3plus}
  465. TYPE
  466. _IMAGELISTDRAWPARAMS = Record
  467. cbSize : DWORD;
  468. himl : HIMAGELIST;
  469. i : cint;
  470. hdcDst : HDC;
  471. x : cint;
  472. y : cint;
  473. cx : cint;
  474. cy : cint;
  475. xBitmap : cint; // x offest from the upperleft of bitmap
  476. yBitmap : cint; // y offset from the upperleft of bitmap
  477. rgbBk : COLORREF;
  478. rgbFg : COLORREF;
  479. fStyle : UINT;
  480. dwRop : DWORD;
  481. {$ifdef win32xp}
  482. fState : DWORD;
  483. Frame : DWORD;
  484. crEffect : COLORREF;
  485. {$ENDIF}
  486. END;
  487. tagIMAGELISTDRAWPARAMS = _IMAGELISTDRAWPARAMS;
  488. IMAGELISTDRAWPARAMS = _IMAGELISTDRAWPARAMS;
  489. LPIMAGELISTDRAWPARAMS = ^_IMAGELISTDRAWPARAMS;
  490. TIMAGELISTDRAWPARAMS = _IMAGELISTDRAWPARAMS;
  491. PIMAGELISTDRAWPARAMS = ^_IMAGELISTDRAWPARAMS;
  492. // #define IMAGELISTDRAWPARAMS_V3_SIZE CCSIZEOF_STRUCT(IMAGELISTDRAWPARAMS, dwRop)
  493. {$ENDIF} // _WIN32_IE >= 0x0300
  494. {$ENDIF}
  495. CONST
  496. ILC_MASK = $00000001;
  497. ILC_COLOR = $00000000;
  498. ILC_COLORDDB = $000000FE;
  499. ILC_COLOR4 = $00000004;
  500. ILC_COLOR8 = $00000008;
  501. ILC_COLOR16 = $00000010;
  502. ILC_COLOR24 = $00000018;
  503. ILC_COLOR32 = $00000020;
  504. ILC_PALETTE = $00000800; // (not implemented)
  505. {$ifdef win32xp}
  506. ILC_MIRROR = $00002000; // Mirror the icons contained, if the process is mirrored
  507. ILC_PERITEMMIRROR = $00008000; // Causes the mirroring code to mirror each item when inserting a set of images, verses the whole strip
  508. {$ENDIF}
  509. {$ifdef win32vista}
  510. ILC_ORIGINALSIZE = $00010000; // Imagelist should accept smaller than set images and apply OriginalSize based on image added
  511. ILC_HIGHQUALITYSCALE = $00020000; // Imagelist should enable use of the high quality scaler.
  512. {$endif}
  513. function ImageList_Create(cx:cint;cy:cint;flags:UINT;cInitial:cint;cGrow:cint):HIMAGELIST; stdcall; external commctrldll name 'ImageList_Create';
  514. function ImageList_Destroy(himl:HIMAGELIST):BOOL; stdcall; external commctrldll name 'ImageList_Destroy';
  515. function ImageList_GetImageCount(himl:HIMAGELIST):cint; stdcall; external commctrldll name 'ImageList_GetImageCount';
  516. {$ifdef ie3plus}
  517. function ImageList_SetImageCount(himl:HIMAGELIST;uNewCount:UINT):BOOL; stdcall; external commctrldll name 'ImageList_SetImageCount';
  518. {$ENDIF}
  519. function ImageList_Add(himl:HIMAGELIST;hbmImage:HBITMAP;hbmMask:HBITMAP):cint; stdcall; external commctrldll name 'ImageList_Add';
  520. function ImageList_ReplaceIcon(himl:HIMAGELIST;i:cint;hicon:HICON):cint; stdcall; external commctrldll name 'ImageList_ReplaceIcon';
  521. function ImageList_SetBkColor(himl:HIMAGELIST;clrBk:COLORREF):COLORREF; stdcall; external commctrldll name 'ImageList_SetBkColor';
  522. function ImageList_GetBkColor(himl:HIMAGELIST):COLORREF; stdcall; external commctrldll name 'ImageList_GetBkColor';
  523. function ImageList_SetOverlayImage(himl:HIMAGELIST;iImage:cint;iOverlay:cint):BOOL; stdcall; external commctrldll name 'ImageList_SetOverlayImage';
  524. // Macro 11
  525. Function ImageList_AddIcon(Himl:HIMAGELIST;hicon:HICON):cint;
  526. CONST
  527. ILD_NORMAL = $00000000;
  528. ILD_TRANSPARENT = $00000001;
  529. ILD_MASK = $00000010;
  530. ILD_IMAGE = $00000020;
  531. {$ifdef ie3plus}
  532. ILD_ROP = $00000040;
  533. {$ENDIF}
  534. ILD_BLEND25 = $00000002;
  535. ILD_BLEND50 = $00000004;
  536. ILD_OVERLAYMASK = $00000F00;
  537. // Macro 12
  538. // #define INDEXTOOVERLAYMASK(i) ((i) << 8)
  539. CONST
  540. ILD_PRESERVEALPHA = $00001000; // This preserves the alpha channel in dest
  541. ILD_SCALE = $00002000; // Causes the image to be scaled to cx, cy instead of clipped
  542. ILD_DPISCALE = $00004000;
  543. {$ifdef win32vista}
  544. ILD_ASYNC = $00008000;
  545. {$endif}
  546. ILD_SELECTED = ILD_BLEND50;
  547. ILD_FOCUS = ILD_BLEND25;
  548. ILD_BLEND = ILD_BLEND50;
  549. CLR_HILIGHT = CLR_DEFAULT;
  550. ILS_NORMAL = $00000000;
  551. ILS_GLOW = $00000001;
  552. ILS_SHADOW = $00000002;
  553. ILS_SATURATE = $00000004;
  554. ILS_ALPHA = $00000008;
  555. {$ifdef win32vista}
  556. ILGT_NORMAL = $00000000;
  557. ILGT_ASYNC = $00000001;
  558. {$endif}
  559. function ImageList_Draw(himl:HIMAGELIST;i:cint;hdcDst:HDC;x:cint;y:cint;fStyle:UINT):BOOL; stdcall; external commctrldll name 'ImageList_Draw';
  560. {$IFDEF _WIN32}
  561. {$ifdef win32vista}
  562. const
  563. HBITMAP_CALLBACK =HBITMAP(-1); // only for SparseImageList
  564. {$endif}
  565. function ImageList_Replace(himl:HIMAGELIST;i:cint;hbmImage:HBITMAP;hbmMask:HBITMAP):BOOL; stdcall; external commctrldll name 'ImageList_Replace';
  566. function ImageList_AddMasked(himl:HIMAGELIST;hbmImage:HBITMAP;crMask:COLORREF):cint; stdcall; external commctrldll name 'ImageList_AddMasked';
  567. function ImageList_DrawEx(himl:HIMAGELIST;i:cint;hdcDst:HDC;x:cint;y:cint;dx:cint;dy:cint;rgbBk:COLORREF;rgbFg:COLORREF;fStyle:UINT):BOOL; stdcall; external commctrldll name 'ImageList_DrawEx';
  568. {$ifdef ie3plus}
  569. function ImageList_DrawIndirect(pimldp:PIMAGELISTDRAWPARAMS):BOOL; stdcall; external commctrldll name 'ImageList_DrawIndirect';
  570. {$ENDIF}
  571. function ImageList_Remove(himl:HIMAGELIST;i:cint):BOOL; stdcall; external commctrldll name 'ImageList_Remove';
  572. function ImageList_GetIcon(himl:HIMAGELIST;i:cint;flags:UINT):HICON; stdcall; external commctrldll name 'ImageList_GetIcon';
  573. function ImageList_LoadImageA(hi:HINST;lpbmp:LPCSTR;cx:cint;cGrow:cint;crMask:COLORREF;uType:UINT;uFlags:UINT):HIMAGELIST; stdcall; external commctrldll name 'ImageList_LoadImageA';
  574. function ImageList_LoadImageW(hi:HINST;lpbmp:LPCWSTR;cx:cint;cGrow:cint;crMask:COLORREF;uType:UINT;uFlags:UINT):HIMAGELIST; stdcall; external commctrldll name 'ImageList_LoadImageW';
  575. function ImageList_LoadImage(hi:HINST;lpbmp:LPCSTR;cx:cint;cGrow:cint;crMask:COLORREF;uType:UINT;uFlags:UINT):HIMAGELIST; stdcall; external commctrldll name 'ImageList_LoadImageA';
  576. function ImageList_LoadImage(hi:HINST;lpbmp:LPCWSTR;cx:cint;cGrow:cint;crMask:COLORREF;uType:UINT;uFlags:UINT):HIMAGELIST; stdcall; external commctrldll name 'ImageList_LoadImageW';
  577. {$IFDEF UNICODE}
  578. // function ImageList_LoadImageW(hi:HINSTANCE;lpbmp:LPCWSTR;cx:cint;cGrow:cint;crMask:COLORREF;uType:UINT;uFlags:UINT):HIMAGELIST; external commctrldll name 'ImageList_LoadImageW';
  579. {$ELSE}
  580. // function ImageList_LoadImageA(hi:HINSTANCE;lpbmp:LPCSTR;cx:cint;cGrow:cint;crMask:COLORREF;uType:UINT;uFlags:UINT):HIMAGELIST; external commctrldll name 'ImageList_LoadImageA';
  581. {$ENDIF}
  582. {$ifdef ie3plus}
  583. CONST
  584. ILCF_MOVE = ($00000000);
  585. ILCF_SWAP = ($00000001);
  586. function ImageList_Copy(himlDst:HIMAGELIST;iDst:cint;himlSrc:HIMAGELIST;iSrc:cint;uFlags:UINT):BOOL; stdcall; external commctrldll name 'ImageList_Copy';
  587. {$ENDIF}
  588. function ImageList_BeginDrag(himlTrack:HIMAGELIST;iTrack:cint;dxHotspot:cint;dyHotspot:cint):BOOL; stdcall; external commctrldll name 'ImageList_BeginDrag';
  589. function ImageList_EndDrag:BOOL; stdcall; external commctrldll name 'ImageList_EndDrag';
  590. function ImageList_DragEnter(hwndLock:HWND;x:cint;y:cint):BOOL; stdcall; external commctrldll name 'ImageList_DragEnter';
  591. function ImageList_DragLeave(hwndLock:HWND):BOOL; stdcall; external commctrldll name 'ImageList_DragLeave';
  592. function ImageList_DragMove(x:cint;y:cint):BOOL; stdcall; external commctrldll name 'ImageList_DragMove';
  593. function ImageList_SetDragCursorImage(himlDrag:HIMAGELIST;iDrag:cint;dxHotspot:cint;dyHotspot:cint):BOOL; stdcall; external commctrldll name 'ImageList_SetDragCursorImage';
  594. function ImageList_DragShowNolock(fShow:BOOL):BOOL; stdcall; external commctrldll name 'ImageList_DragShowNolock';
  595. function ImageList_GetDragImage(ppt:PPOINT;pptHotspot:PPOINT):HIMAGELIST; stdcall; external commctrldll name 'ImageList_GetDragImage';
  596. // Macro 13
  597. Procedure ImageList_RemoveAll(himl:HIMAGELIST);
  598. // Macro 14
  599. function ImageList_ExtractIcon(hi:longint; himl:HIMAGELIST;i:longint):HICON;
  600. // Macro 15
  601. Procedure ImageList_LoadBitmap(hi:HInst;bmp:LPCTSTR;cx:cint;cGrow:cint;crMask:COLORREF);
  602. {$IFDEF __IStream_INTERFACE_DEFINED__}
  603. function ImageList_Read(pstm:ISTREAM):HIMAGELIST; stdcall; external commctrldll name 'ImageList_Read';
  604. function ImageList_Write(himl:HIMAGELIST;pstm:ISTREAM):BOOL; stdcall; external commctrldll name 'ImageList_Write';
  605. {$ifdef Win32XP}
  606. CONST
  607. ILP_NORMAL = 0; // Writes or reads the stream using new sematics for this version of comctl32
  608. ILP_DOWNLEVEL = 1; // Write or reads the stream using downlevel sematics.
  609. function ImageList_ReadEx(dwFlags:DWORD;pstm:ISTREAM;constref riid:REFIID;ppv:PPointer):HRESULT; stdcall; external commctrldll name 'ImageList_ReadEx';
  610. function ImageList_WriteEx(himl:HIMAGELIST;dwFlags:DWORD;pstm:ISTREAM):HRESULT; stdcall; external commctrldll name 'ImageList_WriteEx';
  611. {$ENDIF}
  612. {$ENDIF}
  613. {$IFNDEF IMAGEINFO}
  614. TYPE
  615. _IMAGEINFO = Record
  616. hbmImage : HBITMAP;
  617. hbmMask : HBITMAP;
  618. Unused1 : cint;
  619. Unused2 : cint;
  620. rcImage : RECT;
  621. END;
  622. IMAGEINFO = _IMAGEINFO;
  623. LPIMAGEINFO = ^_IMAGEINFO;
  624. TIMAGEINFO = _IMAGEINFO;
  625. PIMAGEINFO = ^_IMAGEINFO;
  626. {$ENDIF}
  627. function ImageList_GetIconSize(himl:HIMAGELIST;cx:Pint;cy:Pint):BOOL; stdcall; external commctrldll name 'ImageList_GetIconSize';
  628. function ImageList_GetIconSize(himl:HIMAGELIST;var cx:cint;var cy:cint):BOOL; stdcall; external commctrldll name 'ImageList_GetIconSize';
  629. function ImageList_SetIconSize(himl:HIMAGELIST;cx:cint;cy:cint):BOOL; stdcall; external commctrldll name 'ImageList_SetIconSize';
  630. function ImageList_GetImageInfo(himl:HIMAGELIST;i:cint;pImageInfo:PIMAGEINFO):BOOL; stdcall; external commctrldll name 'ImageList_GetImageInfo';
  631. function ImageList_GetImageInfo(himl:HIMAGELIST;i:cint;var pImageInfo:_IMAGEINFO):BOOL; stdcall; external commctrldll name 'ImageList_GetImageInfo';
  632. function ImageList_Merge(himl1:HIMAGELIST;i1:cint;himl2:HIMAGELIST;i2:cint;dx:cint;dy:cint):HIMAGELIST; stdcall; external commctrldll name 'ImageList_Merge';
  633. {$ifdef ie4plus}
  634. function ImageList_Duplicate(himl:HIMAGELIST):HIMAGELIST; stdcall; external commctrldll name 'ImageList_Duplicate';
  635. {$ENDIF}
  636. {$ENDIF}
  637. {$ENDIF}
  638. //====== HEADER CONTROL =======================================================
  639. {$IFNDEF NOHEADER}
  640. {$IFDEF _WIN32}
  641. // L'xx' translates to 'xx'#$0000 because that forces a wide literal in FPC.
  642. CONST
  643. WC_HEADERA = 'SysHeader32';
  644. WC_HEADERW = {L}'SysHeader32'#$0000;
  645. {$IFDEF UNICODE}
  646. WC_HEADER = WC_HEADERW;
  647. {$ELSE}
  648. WC_HEADER = WC_HEADERA;
  649. {$ENDIF}
  650. {$ELSE}
  651. CONST
  652. WC_HEADER = 'SysHeader';
  653. {$ENDIF}
  654. CONST
  655. // begin_r_commctrl
  656. HDS_HORZ = $0000;
  657. HDS_BUTTONS = $0002;
  658. {$ifdef ie3plus}
  659. HDS_HOTTRACK = $0004;
  660. {$ENDIF}
  661. HDS_HIDDEN = $0008;
  662. {$ifdef ie3plus}
  663. HDS_DRAGDROP = $0040;
  664. HDS_FULLDRAG = $0080;
  665. {$ENDIF}
  666. {$ifdef ie5plus}
  667. HDS_FILTERBAR = $0100;
  668. {$ENDIF}
  669. {$ifdef win32xp}
  670. HDS_FLAT = $0200;
  671. {$ENDIF}
  672. {$ifdef win32vista}
  673. HDS_CHECKBOXES = $0400;
  674. HDS_NOSIZING = $0800;
  675. HDS_OVERFLOW = $1000;
  676. {$endif}
  677. // end_r_commctrl
  678. {$ifdef ie5plus}
  679. HDFT_ISSTRING = $0000; // HD_ITEM.pvFilter points to a HD_TEXTFILTER
  680. HDFT_ISNUMBER = $0001; // HD_ITEM.pvFilter points to a INT
  681. HDFT_HASNOVALUE = $8000; // clear the filter, by setting this bit
  682. TYPE
  683. _HD_TEXTFILTERA = Record
  684. pszText : LPSTR; // [in] pointer to the buffer containing the filter (ANSI)
  685. cchTextMax : cint; // [in] max size of buffer/edit control buffer
  686. END;
  687. HD_TEXTFILTERA = _HD_TEXTFILTERA;
  688. LPHD_TEXTFILTERA = ^_HD_TEXTFILTERA;
  689. THD_TEXTFILTERA = _HD_TEXTFILTERA;
  690. PHD_TEXTFILTERA = ^_HD_TEXTFILTERA;
  691. _HD_TEXTFILTERW = Record
  692. pszText : LPWSTR; // [in] pointer to the buffer contiaining the filter (UNICODE)
  693. cchTextMax : cint; // [in] max size of buffer/edit control buffer
  694. END;
  695. HD_TEXTFILTERW = _HD_TEXTFILTERW;
  696. LPHD_TEXTFILTERW = ^_HD_TEXTFILTERW;
  697. THD_TEXTFILTERW = _HD_TEXTFILTERW;
  698. PHD_TEXTFILTERW = ^_HD_TEXTFILTERW;
  699. {$IFDEF UNICODE}
  700. HD_TEXTFILTER = HD_TEXTFILTERW;
  701. HDTEXTFILTER = HD_TEXTFILTERW;
  702. LPHD_TEXTFILTER = LPHD_TEXTFILTERW;
  703. LPHDTEXTFILTER = LPHD_TEXTFILTERW;
  704. {$ELSE}
  705. HD_TEXTFILTER = HD_TEXTFILTERA;
  706. HDTEXTFILTER = HD_TEXTFILTERA;
  707. LPHD_TEXTFILTER = LPHD_TEXTFILTERA;
  708. LPHDTEXTFILTER = LPHD_TEXTFILTERA;
  709. {$ENDIF}
  710. {$ENDIF} // _WIN32_IE >= 0x0500
  711. TYPE
  712. _HD_ITEMA = Record
  713. mask : UINT;
  714. cxy : cint;
  715. pszText : LPSTR;
  716. hbm : HBITMAP;
  717. cchTextMax : cint;
  718. fmt : cint;
  719. lParam : LPARAM;
  720. {$ifdef ie3plus}
  721. iImage : cint; // index of bitmap in ImageList
  722. iOrder : cint; // where to draw this item
  723. {$ENDIF}
  724. {$ifdef ie5plus}
  725. _type : UINT; // [in] filter type (defined what pvFilter is a pointer to)
  726. pvFilter : Pointer; // [in] fillter data see above
  727. {$ENDIF}
  728. {$ifdef win32vista}
  729. state : UINT;
  730. {$endif}
  731. END;
  732. HDITEMA = _HD_ITEMA;
  733. pHDITEMA = ^_HD_ITEMA;
  734. LPHDITEMA = ^_HD_ITEMA;
  735. THD_ITEMA = _HD_ITEMA;
  736. PHD_ITEMA = ^_HD_ITEMA;
  737. THDItem = THD_ITEMA;
  738. PHDItem = PHD_ITEMA;
  739. // #define HDITEMA_V1_SIZE CCSIZEOF_STRUCT(HDITEMA, lParam)
  740. // #define HDITEMW_V1_SIZE CCSIZEOF_STRUCT(HDITEMW, lParam)
  741. _HD_ITEMW = Record
  742. mask : UINT;
  743. cxy : cint;
  744. pszText : LPWSTR;
  745. hbm : HBITMAP;
  746. cchTextMax : cint;
  747. fmt : cint;
  748. lParam : LPARAM;
  749. {$ifdef ie3plus}
  750. iImage : cint; // index of bitmap in ImageList
  751. iOrder : cint;
  752. {$ENDIF}
  753. {$ifdef ie5plus}
  754. _type : UINT; // [in] filter type (defined what pvFilter is a pointer to)
  755. pvFilter : Pointer; // [in] fillter data see above
  756. {$ENDIF}
  757. {$ifdef win32vista}
  758. state : UINT;
  759. {$endif}
  760. END;
  761. HDITEMW = _HD_ITEMW;
  762. pHDITEMW = ^_HD_ITEMW;
  763. LPHDITEMW = ^_HD_ITEMW;
  764. THD_ITEMW = _HD_ITEMW;
  765. PHD_ITEMW = ^_HD_ITEMW;
  766. TYPE
  767. {$IFDEF UNICODE}
  768. HDITEM = HDITEMW;
  769. LPHDITEM = LPHDITEMW;
  770. // HDITEM_V1_SIZE = HDITEMW_V1_SIZE;
  771. {$ELSE}
  772. HDITEM = HDITEMA;
  773. LPHDITEM = LPHDITEMA;
  774. // HDITEM_V1_SIZE = HDITEMA_V1_SIZE;
  775. {$ENDIF}
  776. HD_ITEM = HDITEM;
  777. CONST
  778. HDI_WIDTH = $0001;
  779. HDI_HEIGHT = HDI_WIDTH;
  780. HDI_TEXT = $0002;
  781. HDI_FORMAT = $0004;
  782. HDI_LPARAM = $0008;
  783. HDI_BITMAP = $0010;
  784. {$ifdef ie3plus}
  785. HDI_IMAGE = $0020;
  786. HDI_DI_SETITEM = $0040;
  787. HDI_ORDER = $0080;
  788. {$ENDIF}
  789. {$ifdef ie5plus}
  790. HDI_FILTER = $0100;
  791. {$ENDIF}
  792. {$ifdef win32vista}
  793. HDI_STATE = $0200;
  794. {$endif}
  795. HDF_LEFT = $0000;
  796. HDF_RIGHT = $0001;
  797. HDF_CENTER = $0002;
  798. HDF_JUSTIFYMASK = $0003;
  799. HDF_RTLREADING = $0004;
  800. HDF_OWNERDRAW = $8000;
  801. HDF_STRING = $4000;
  802. HDF_BITMAP = $2000;
  803. {$ifdef ie3plus}
  804. HDF_BITMAP_ON_RIGHT = $1000;
  805. HDF_IMAGE = $0800;
  806. {$ENDIF}
  807. {$ifdef win32xp}
  808. HDF_SORTUP = $0400;
  809. HDF_SORTDOWN = $0200;
  810. {$ENDIF}
  811. {$ifdef win32vista}
  812. HDF_CHECKBOX = $0040;
  813. HDF_CHECKED = $0080;
  814. HDF_FIXEDWIDTH = $0100; // Can't resize the column; same as LVCFMT_FIXED_WIDTH
  815. HDF_SPLITBUTTON = $1000000; // Column is a split button; same as LVCFMT_SPLITBUTTON
  816. {$endif}
  817. {$ifdef win32vista}
  818. HDIS_FOCUSED = $00000001;
  819. {$endif}
  820. HDM_GETITEMCOUNT = (HDM_FIRST + 0);
  821. // Macro 16
  822. Function Header_GetItemCount( hwndHD : hwnd):cint;
  823. CONST
  824. HDM_INSERTITEMA = (HDM_FIRST + 1);
  825. HDM_INSERTITEMW = (HDM_FIRST + 10);
  826. {$IFDEF UNICODE}
  827. HDM_INSERTITEM = HDM_INSERTITEMW;
  828. {$ELSE}
  829. HDM_INSERTITEM = HDM_INSERTITEMA;
  830. {$ENDIF}
  831. // Macro 17
  832. Function Header_InsertItem( hwndHD : hwnd; i : cint;const phdi : HD_ITEM ):cint;
  833. CONST
  834. HDM_DELETEITEM = (HDM_FIRST + 2);
  835. // Macro 18
  836. Function Header_DeleteItem( hwndHD : hwnd; i : cint):BOOL;
  837. CONST
  838. HDM_GETITEMA = (HDM_FIRST + 3);
  839. HDM_GETITEMW = (HDM_FIRST + 11);
  840. {$IFDEF UNICODE}
  841. HDM_GETITEM = HDM_GETITEMW;
  842. {$ELSE}
  843. HDM_GETITEM = HDM_GETITEMA;
  844. {$ENDIF}
  845. // Macro 19
  846. Function Header_GetItem( hwndHD : hwnd; i : cint;var phdi : HD_ITEM ):BOOL;
  847. CONST
  848. HDM_SETITEMA = (HDM_FIRST + 4);
  849. HDM_SETITEMW = (HDM_FIRST + 12);
  850. {$IFDEF UNICODE}
  851. HDM_SETITEM = HDM_SETITEMW;
  852. {$ELSE}
  853. HDM_SETITEM = HDM_SETITEMA;
  854. {$ENDIF}
  855. // Macro 20
  856. Function Header_SetItem( hwndHD : hwnd; i : cint;const phdi : HD_ITEM ):BOOL;
  857. TYPE
  858. _HD_LAYOUT = Record
  859. prc : PRECT;
  860. pwpos : PWINDOWPOS;
  861. END;
  862. HDLAYOUT = _HD_LAYOUT;
  863. LPHDLAYOUT = ^_HD_LAYOUT;
  864. THD_LAYOUT = _HD_LAYOUT;
  865. PHD_LAYOUT = ^_HD_LAYOUT;
  866. CONST
  867. HDM_LAYOUT = (HDM_FIRST + 5);
  868. {$ifdef ie3plus}
  869. TYPE
  870. HD_LAYOUT = HDLAYOUT;
  871. {$ELSE}
  872. // HDLAYOUT = HD_LAYOUT;
  873. {$ENDIF}
  874. // Macro 21
  875. Function Header_Layout( hwndHD : hwnd;var playout : HD_LAYOUT ):BOOL;
  876. CONST
  877. HHT_NOWHERE = $0001;
  878. HHT_ONHEADER = $0002;
  879. HHT_ONDIVIDER = $0004;
  880. HHT_ONDIVOPEN = $0008;
  881. {$ifdef ie5plus}
  882. HHT_ONFILTER = $0010;
  883. HHT_ONFILTERBUTTON = $0020;
  884. {$ENDIF}
  885. HHT_ABOVE = $0100;
  886. HHT_BELOW = $0200;
  887. HHT_TORIGHT = $0400;
  888. HHT_TOLEFT = $0800;
  889. {$ifdef win32vista}
  890. HHT_ONITEMSTATEICON = $1000;
  891. HHT_ONDROPDOWN = $2000;
  892. HHT_ONOVERFLOW = $4000;
  893. {$endif}
  894. TYPE
  895. _HD_HITTESTINFO = Record
  896. case integer of
  897. 1: (pt : POINT;flags : UINT;iItem : cint);
  898. { delphi }
  899. 2: (point : POINT;dummyflags : UINT;Item : cint);
  900. END;
  901. HDHITTESTINFO = _HD_HITTESTINFO;
  902. HD_HITTESTINFO = _HD_HITTESTINFO;
  903. LPHDHITTESTINFO = ^_HD_HITTESTINFO;
  904. THD_HITTESTINFO = _HD_HITTESTINFO;
  905. PHD_HITTESTINFO = ^_HD_HITTESTINFO;
  906. THDHitTestInfo = THD_HITTESTINFO;
  907. PHDHitTestInfo = LPHDHITTESTINFO;
  908. CONST
  909. HDM_HITTEST = (HDM_FIRST + 6);
  910. {$ifdef ie3plus}
  911. HDM_GETITEMRECT = (HDM_FIRST + 7);
  912. // Macro 22
  913. Function Header_GetItemRect( hwnd : hwnd; iItem : WPARAM; lprc : LPARAM):BOOL;
  914. CONST
  915. HDM_SETIMAGELIST = (HDM_FIRST + 8);
  916. // Macro 23
  917. Function Header_SetImageList( hwnd : hwnd; himl : LPARAM):HIMAGELIST;
  918. CONST
  919. HDM_GETIMAGELIST = (HDM_FIRST + 9);
  920. // Macro 24
  921. Function Header_GetImageList( hwnd : hwnd):HIMAGELIST;
  922. CONST
  923. HDM_ORDERTOINDEX = (HDM_FIRST + 15);
  924. // Macro 25
  925. Function Header_OrderToIndex( hwnd : hwnd; i : WPARAM):cint;
  926. CONST
  927. HDM_CREATEDRAGIMAGE = (HDM_FIRST + 16); // wparam = which item (by index)
  928. // Macro 26
  929. Function Header_CreateDragImage( hwnd : hwnd; i : WPARAM):HIMAGELIST;
  930. CONST
  931. HDM_GETORDERARRAY = (HDM_FIRST + 17);
  932. // Macro 27
  933. Function Header_GetOrderArray( hwnd : hwnd; iCount : WPARAM; lpi : LPARAM):BOOL;
  934. CONST
  935. HDM_SETORDERARRAY = (HDM_FIRST + 18);
  936. // Macro 28
  937. Function Header_SetOrderArray( hwnd : hwnd; iCount : WPARAM; lpi : PInteger):BOOL;inline;
  938. // lparam = int array of size HDM_GETITEMCOUNT
  939. // the array specifies the order that all items should be displayed.
  940. // e.g. { 2, 0, 1}
  941. // says the index 2 item should be shown in the 0ths position
  942. // index 0 should be shown in the 1st position
  943. // index 1 should be shown in the 2nd position
  944. CONST
  945. HDM_SETHOTDIVIDER = (HDM_FIRST + 19);
  946. // Macro 29
  947. Function Header_SetHotDivider( hwnd : hwnd; fPos : WPARAM; dw : LPARAM):cint;
  948. // convenience message for external dragdrop
  949. // wParam = BOOL specifying whether the lParam is a dwPos of the cursor
  950. // position or the index of which divider to hotlight
  951. // lParam = depends on wParam (-1 and wParm = FALSE turns off hotlight)
  952. {$ENDIF} // _WIN32_IE >= 0x0300
  953. {$ifdef ie5plus}
  954. CONST
  955. HDM_SETBITMAPMARGIN = (HDM_FIRST + 20);
  956. // Macro 30
  957. Function Header_SetBitmapMargin( hwnd : hwnd; iWidth : WPARAM):cint;
  958. CONST
  959. HDM_GETBITMAPMARGIN = (HDM_FIRST + 21);
  960. // Macro 31
  961. Function Header_GetBitmapMargin( hwnd : hwnd):cint;
  962. {$ENDIF}
  963. {$ifdef ie4plus}
  964. CONST
  965. HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  966. // Macro 32
  967. Function Header_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
  968. CONST
  969. HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  970. // Macro 33
  971. Function Header_GetUnicodeFormat( hwnd : hwnd):BOOL;
  972. {$ENDIF}
  973. {$ifdef ie5plus}
  974. CONST
  975. HDM_SETFILTERCHANGETIMEOUT = (HDM_FIRST+22);
  976. // Macro 34
  977. Function Header_SetFilterChangeTimeout( hwnd : hwnd; i : LPARAM):cint;
  978. CONST
  979. HDM_EDITFILTER = (HDM_FIRST+23);
  980. // Macro 35
  981. Function Header_EditFilter( hwnd : hwnd; i : WPARAM; fDiscardChanges :cint ):cint;
  982. // Clear filter takes -1 as a column value to indicate that all
  983. // the filter should be cleared. When this happens you will
  984. // only receive a single filter changed notification.
  985. CONST
  986. HDM_CLEARFILTER = (HDM_FIRST+24);
  987. // Macro 36
  988. Function Header_ClearFilter( hwnd : hwnd; i : WPARAM):cint;
  989. // Macro 37
  990. Function Header_ClearAllFilters( hwnd : hwnd):cint;
  991. {$ENDIF}
  992. {$ifdef win32vista}
  993. // HDM_TRANSLATEACCELERATOR = CCM_TRANSLATEACCELERATOR; // CCM_* not defined anywhere yet in w7 sdk
  994. const
  995. HDM_GETITEMDROPDOWNRECT = (HDM_FIRST+25);
  996. HDM_GETOVERFLOWRECT = (HDM_FIRST+26);
  997. HDM_GETFOCUSEDITEM = (HDM_FIRST+27);
  998. HDM_SETFOCUSEDITEM = (HDM_FIRST+28);
  999. // macro 37a through 37d
  1000. function Header_GetItemDropDownRect(hwnd : hwnd;iItem:cint; lprc:lprect):bool;
  1001. function Header_GetOverflowRect( hwnd : hwnd; lprc:lprect):bool;
  1002. function Header_GetFocusedItem (hwnd : hwnd):cint;
  1003. function Header_SetFocusedItem (hwnd:hwnd; iItem:cint):BOOL;
  1004. {$endif}
  1005. CONST
  1006. HDN_ITEMCHANGINGA = (HDN_FIRST-0);
  1007. HDN_ITEMCHANGINGW = (HDN_FIRST-20);
  1008. HDN_ITEMCHANGEDA = (HDN_FIRST-1);
  1009. HDN_ITEMCHANGEDW = (HDN_FIRST-21);
  1010. HDN_ITEMCLICKA = (HDN_FIRST-2);
  1011. HDN_ITEMCLICKW = (HDN_FIRST-22);
  1012. HDN_ITEMDBLCLICKA = (HDN_FIRST-3);
  1013. HDN_ITEMDBLCLICKW = (HDN_FIRST-23);
  1014. HDN_DIVIDERDBLCLICKA = (HDN_FIRST-5);
  1015. HDN_DIVIDERDBLCLICKW = (HDN_FIRST-25);
  1016. HDN_BEGINTRACKA = (HDN_FIRST-6);
  1017. HDN_BEGINTRACKW = (HDN_FIRST-26);
  1018. HDN_ENDTRACKA = (HDN_FIRST-7);
  1019. HDN_ENDTRACKW = (HDN_FIRST-27);
  1020. HDN_TRACKA = (HDN_FIRST-8);
  1021. HDN_TRACKW = (HDN_FIRST-28);
  1022. {$ifdef ie3plus}
  1023. HDN_GETDISPINFOA = (HDN_FIRST-9);
  1024. HDN_GETDISPINFOW = (HDN_FIRST-29);
  1025. HDN_BEGINDRAG = (HDN_FIRST-10);
  1026. HDN_ENDDRAG = (HDN_FIRST-11);
  1027. {$ENDIF}
  1028. {$ifdef ie5plus}
  1029. HDN_FILTERCHANGE = (HDN_FIRST-12);
  1030. HDN_FILTERBTNCLICK = (HDN_FIRST-13);
  1031. {$ENDIF}
  1032. {$ifdef win32vista}
  1033. HDN_BEGINFILTEREDIT = (HDN_FIRST-14);
  1034. HDN_ENDFILTEREDIT = (HDN_FIRST-15);
  1035. HDN_ITEMSTATEICONCLICK = (HDN_FIRST-16);
  1036. HDN_ITEMKEYDOWN = (HDN_FIRST-17);
  1037. HDN_DROPDOWN = (HDN_FIRST-18);
  1038. HDN_OVERFLOWCLICK = (HDN_FIRST-19);
  1039. {$endif}
  1040. {$IFDEF UNICODE}
  1041. HDN_ITEMCHANGING = HDN_ITEMCHANGINGW;
  1042. HDN_ITEMCHANGED = HDN_ITEMCHANGEDW;
  1043. HDN_ITEMCLICK = HDN_ITEMCLICKW;
  1044. HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKW;
  1045. HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKW;
  1046. HDN_BEGINTRACK = HDN_BEGINTRACKW;
  1047. HDN_ENDTRACK = HDN_ENDTRACKW;
  1048. HDN_TRACK = HDN_TRACKW;
  1049. {$ifdef ie3plus}
  1050. HDN_GETDISPINFO = HDN_GETDISPINFOW;
  1051. {$ENDIF}
  1052. {$ELSE}
  1053. HDN_ITEMCHANGING = HDN_ITEMCHANGINGA;
  1054. HDN_ITEMCHANGED = HDN_ITEMCHANGEDA;
  1055. HDN_ITEMCLICK = HDN_ITEMCLICKA;
  1056. HDN_ITEMDBLCLICK = HDN_ITEMDBLCLICKA;
  1057. HDN_DIVIDERDBLCLICK = HDN_DIVIDERDBLCLICKA;
  1058. HDN_BEGINTRACK = HDN_BEGINTRACKA;
  1059. HDN_ENDTRACK = HDN_ENDTRACKA;
  1060. HDN_TRACK = HDN_TRACKA;
  1061. {$ifdef ie3plus}
  1062. HDN_GETDISPINFO = HDN_GETDISPINFOA;
  1063. {$ENDIF}
  1064. {$ENDIF}
  1065. TYPE
  1066. tagNMHEADERA = Record
  1067. hdr : NMHDR;
  1068. case integer of
  1069. 1: (iItem : cint;iButton : cint;pitem : PHDITEMA);
  1070. { delphi: }
  1071. 2: (Item : cint;Button : cint);
  1072. END;
  1073. NMHEADERA = tagNMHEADERA;
  1074. LPNMHEADERA = ^tagNMHEADERA;
  1075. TNMHEADERA = tagNMHEADERA;
  1076. PNMHEADERA = ^tagNMHEADERA;
  1077. tagNMHEADERW = Record
  1078. hdr : NMHDR;
  1079. iItem : cint;
  1080. iButton : cint;
  1081. pitem : PHDITEMW;
  1082. END;
  1083. NMHEADERW = tagNMHEADERW;
  1084. LPNMHEADERW = ^tagNMHEADERW;
  1085. TNMHEADERW = tagNMHEADERW;
  1086. PNMHEADERW = ^tagNMHEADERW;
  1087. {$IFDEF UNICODE}
  1088. NMHEADER = NMHEADERW;
  1089. LPNMHEADER = LPNMHEADERW;
  1090. {$ELSE}
  1091. NMHEADER = NMHEADERA;
  1092. LPNMHEADER = LPNMHEADERA;
  1093. {$ENDIF}
  1094. {$ifdef ie3plus}
  1095. HD_NOTIFYA = NMHEADERA;
  1096. HD_NOTIFYW = NMHEADERW;
  1097. {$ELSE}
  1098. // tagNMHEADERA = _HD_NOTIFY;
  1099. // NMHEADERA = HD_NOTIFYA;
  1100. // tagHMHEADERW = _HD_NOTIFYW;
  1101. // NMHEADERW = HD_NOTIFYW;
  1102. {$ENDIF}
  1103. HD_NOTIFY = NMHEADER;
  1104. THDNotify = HD_NOTIFY;
  1105. PHDNotify = ^HD_NOTIFY;
  1106. tagNMHDDISPINFOW = Record
  1107. hdr : NMHDR;
  1108. iItem : cint;
  1109. mask : UINT;
  1110. pszText : LPWSTR;
  1111. cchTextMax : cint;
  1112. iImage : cint;
  1113. lParam : LPARAM;
  1114. END;
  1115. NMHDDISPINFOW = tagNMHDDISPINFOW;
  1116. LPNMHDDISPINFOW = ^tagNMHDDISPINFOW;
  1117. TNMHDDISPINFOW = tagNMHDDISPINFOW;
  1118. PNMHDDISPINFOW = ^tagNMHDDISPINFOW;
  1119. tagNMHDDISPINFOA = Record
  1120. hdr : NMHDR;
  1121. iItem : cint;
  1122. mask : UINT;
  1123. pszText : LPSTR;
  1124. cchTextMax : cint;
  1125. iImage : cint;
  1126. lParam : LPARAM;
  1127. END;
  1128. NMHDDISPINFOA = tagNMHDDISPINFOA;
  1129. LPNMHDDISPINFOA = ^tagNMHDDISPINFOA;
  1130. TNMHDDISPINFOA = tagNMHDDISPINFOA;
  1131. PNMHDDISPINFOA = ^tagNMHDDISPINFOA;
  1132. {$IFDEF UNICODE}
  1133. NMHDDISPINFO = NMHDDISPINFOW;
  1134. LPNMHDDISPINFO = LPNMHDDISPINFOW;
  1135. {$ELSE}
  1136. NMHDDISPINFO = NMHDDISPINFOA;
  1137. LPNMHDDISPINFO = LPNMHDDISPINFOA;
  1138. {$ENDIF}
  1139. {$ifdef ie5plus}
  1140. tagNMHDFILTERBTNCLICK = Record
  1141. hdr : NMHDR;
  1142. iItem : cint;
  1143. rc : RECT;
  1144. END;
  1145. NMHDFILTERBTNCLICK = tagNMHDFILTERBTNCLICK;
  1146. LPNMHDFILTERBTNCLICK = ^tagNMHDFILTERBTNCLICK;
  1147. TNMHDFILTERBTNCLICK = tagNMHDFILTERBTNCLICK;
  1148. PNMHDFILTERBTNCLICK = ^tagNMHDFILTERBTNCLICK;
  1149. {$ENDIF}
  1150. {$ENDIF} // NOHEADER
  1151. //====== TOOLBAR CONTROL ======================================================
  1152. {$IFNDEF NOTOOLBAR}
  1153. {$IFDEF _WIN32}
  1154. CONST
  1155. TOOLBARCLASSNAMEW = {L}'ToolbarWindow32'#$0000;
  1156. TOOLBARCLASSNAMEA = 'ToolbarWindow32';
  1157. {$IFDEF UNICODE}
  1158. TOOLBARCLASSNAME = TOOLBARCLASSNAMEW;
  1159. {$ELSE}
  1160. TOOLBARCLASSNAME = TOOLBARCLASSNAMEA;
  1161. {$ENDIF}
  1162. {$ELSE}
  1163. CONST
  1164. TOOLBARCLASSNAME = 'ToolbarWindow';
  1165. {$ENDIF}
  1166. TYPE
  1167. _TBBUTTON = Record
  1168. iBitmap : cint;
  1169. idCommand : cint;
  1170. fsState : BYTE;
  1171. fsStyle : BYTE;
  1172. {$IFDEF _WIN64}
  1173. bReserved : ARRAY[0..5] OF BYTE; // padding for alignment
  1174. {$ELSE}
  1175. {$IFDEF _WIN32}
  1176. bReserved : ARRAY[0..1] OF BYTE; // padding for alignment
  1177. {$ENDIF}
  1178. {$ENDIF}
  1179. dwData : DWORD_PTR;
  1180. iString : INT_PTR;
  1181. END;
  1182. TBBUTTON = _TBBUTTON;
  1183. PTBBUTTON = {NEAR} ^_TBBUTTON; // ???
  1184. LPTBBUTTON = ^_TBBUTTON;
  1185. TTBBUTTON = _TBBUTTON;
  1186. // PTBBUTTON = ^_TBBUTTON;
  1187. LPCTBBUTTON = {const} ^TBBUTTON;
  1188. _COLORMAP = Record
  1189. xfrom : COLORREF;
  1190. xto : COLORREF;
  1191. END;
  1192. COLORMAP = _COLORMAP;
  1193. LPCOLORMAP = ^_COLORMAP;
  1194. TCOLORMAP = _COLORMAP;
  1195. PCOLORMAP = ^_COLORMAP;
  1196. function CreateToolbarEx(hwnd:HWND;ws:DWORD;wID:UINT;nBitmaps:cint;
  1197. hBMInst:HINST;
  1198. wBMID:UINT_PTR;lpButtons:LPCTBBUTTON;iNumButtons:cint;dxButton:cint;
  1199. dyButton:cint;dxBitmap:cint;dyBitmap:cint;uStructSize:UINT):HWND; stdcall; external commctrldll name 'CreateToolbarEx';
  1200. function CreateMappedBitmap(hInstance:HINST;idBitmap:INT_PTR;wFlags:UINT;lpColorMap:LPCOLORMAP;iNumMaps:cint):HBITMAP; stdcall; external commctrldll name 'CreateMappedBitmap';
  1201. CONST
  1202. CMB_MASKED = $02;
  1203. TBSTATE_CHECKED = $01;
  1204. TBSTATE_PRESSED = $02;
  1205. TBSTATE_ENABLED = $04;
  1206. TBSTATE_HIDDEN = $08;
  1207. TBSTATE_INDETERMINATE = $10;
  1208. TBSTATE_WRAP = $20;
  1209. {$ifdef ie3plus}
  1210. TBSTATE_ELLIPSES = $40;
  1211. {$ENDIF}
  1212. {$ifdef ie4plus}
  1213. TBSTATE_MARKED = $80;
  1214. {$ENDIF}
  1215. TBSTYLE_BUTTON = $0000; // obsolete; use BTNS_BUTTON instead
  1216. TBSTYLE_SEP = $0001; // obsolete; use BTNS_SEP instead
  1217. TBSTYLE_CHECK = $0002; // obsolete; use BTNS_CHECK instead
  1218. TBSTYLE_GROUP = $0004; // obsolete; use BTNS_GROUP instead
  1219. TBSTYLE_CHECKGROUP = (TBSTYLE_GROUP OR TBSTYLE_CHECK);// obsolete; use BTNS_CHECKGROUP instead
  1220. {$ifdef ie3plus}
  1221. TBSTYLE_DROPDOWN = $0008; // obsolete; use BTNS_DROPDOWN instead
  1222. {$ENDIF}
  1223. {$ifdef ie4plus}
  1224. TBSTYLE_AUTOSIZE = $0010; // obsolete; use BTNS_AUTOSIZE instead
  1225. TBSTYLE_NOPREFIX = $0020; // obsolete; use BTNS_NOPREFIX instead
  1226. {$ENDIF}
  1227. TBSTYLE_TOOLTIPS = $0100;
  1228. TBSTYLE_WRAPABLE = $0200;
  1229. TBSTYLE_ALTDRAG = $0400;
  1230. {$ifdef ie3plus}
  1231. TBSTYLE_FLAT = $0800;
  1232. TBSTYLE_LIST = $1000;
  1233. TBSTYLE_CUSTOMERASE = $2000;
  1234. {$ENDIF}
  1235. {$ifdef ie4plus}
  1236. TBSTYLE_REGISTERDROP = $4000;
  1237. TBSTYLE_TRANSPARENT = $8000;
  1238. TBSTYLE_EX_DRAWDDARROWS = $00000001;
  1239. {$ENDIF}
  1240. {$ifdef ie5plus}
  1241. BTNS_BUTTON = TBSTYLE_BUTTON; // 0x0000
  1242. BTNS_SEP = TBSTYLE_SEP; // 0x0001
  1243. BTNS_CHECK = TBSTYLE_CHECK; // 0x0002
  1244. BTNS_GROUP = TBSTYLE_GROUP; // 0x0004
  1245. BTNS_CHECKGROUP = TBSTYLE_CHECKGROUP; // (TBSTYLE_GROUP | TBSTYLE_CHECK)
  1246. BTNS_DROPDOWN = TBSTYLE_DROPDOWN; // 0x0008
  1247. BTNS_AUTOSIZE = TBSTYLE_AUTOSIZE; // 0x0010; automatically calculate the cx of the button
  1248. BTNS_NOPREFIX = TBSTYLE_NOPREFIX; // 0x0020; this button should not have accel prefix
  1249. {$ifdef ie501plus}
  1250. BTNS_SHOWTEXT = $0040; // ignored unless TBSTYLE_EX_MIXEDBUTTONS is set
  1251. {$ENDIF} // 0x0501
  1252. BTNS_WHOLEDROPDOWN = $0080; // draw drop-down arrow, but without split arrow section
  1253. {$ENDIF}
  1254. {$ifdef ie501plus}
  1255. TBSTYLE_EX_MIXEDBUTTONS = $00000008;
  1256. TBSTYLE_EX_HIDECLIPPEDBUTTONS = $00000010; // don't show partially obscured buttons
  1257. {$ENDIF} // 0x0501
  1258. {$ifdef win32xp}
  1259. TBSTYLE_EX_DOUBLEBUFFER = $00000080; // Double Buffer the toolbar
  1260. {$ENDIF}
  1261. {$ifdef ie4plus}
  1262. // Custom Draw Structure
  1263. TYPE
  1264. _NMTBCUSTOMDRAW = Record
  1265. nmcd : NMCUSTOMDRAW;
  1266. hbrMonoDither : HBRUSH;
  1267. hbrLines : HBRUSH; // For drawing lines on buttons
  1268. hpenLines : HPEN; // For drawing lines on buttons
  1269. clrText : COLORREF; // Color of text
  1270. clrMark : COLORREF; // Color of text bk when marked. (only if TBSTATE_MARKED)
  1271. clrTextHighlight : COLORREF; // Color of text when highlighted
  1272. clrBtnFace : COLORREF; // Background of the button
  1273. clrBtnHighlight : COLORREF; // 3D highlight
  1274. clrHighlightHotTrack : COLORREF; // In conjunction with fHighlightHotTrack
  1275. rcText : RECT; // Rect for text
  1276. nStringBkMode : cint;
  1277. nHLStringBkMode : cint;
  1278. {$ifdef win32xp}
  1279. iListGap : cint;
  1280. {$ENDIF}
  1281. END;
  1282. NMTBCUSTOMDRAW = _NMTBCUSTOMDRAW;
  1283. LPNMTBCUSTOMDRAW = ^_NMTBCUSTOMDRAW;
  1284. TNMTBCUSTOMDRAW = _NMTBCUSTOMDRAW;
  1285. PNMTBCUSTOMDRAW = ^_NMTBCUSTOMDRAW;
  1286. // Toolbar custom draw return flags
  1287. CONST
  1288. TBCDRF_NOEDGES = $00010000; // Don't draw button edges
  1289. TBCDRF_HILITEHOTTRACK = $00020000; // Use color of the button bk when hottracked
  1290. TBCDRF_NOOFFSET = $00040000; // Don't offset button if pressed
  1291. TBCDRF_NOMARK = $00080000; // Don't draw default highlight of image/text for TBSTATE_MARKED
  1292. TBCDRF_NOETCHEDEFFECT = $00100000; // Don't draw etched effect for disabled items
  1293. {$ENDIF}
  1294. {$ifdef ie5plus}
  1295. TBCDRF_BLENDICON = $00200000; // Use ILD_BLEND50 on the icon image
  1296. TBCDRF_NOBACKGROUND = $00400000; // Use ILD_BLEND50 on the icon image
  1297. {$ENDIF}
  1298. {$ifdef win32vista}
  1299. TBCDRF_USECDCOLORS = $00800000; // Use CustomDrawColors to RenderText regardless of VisualStyle
  1300. {$endif}
  1301. CONST
  1302. TB_ENABLEBUTTON = (WM_USER + 1);
  1303. TB_CHECKBUTTON = (WM_USER + 2);
  1304. TB_PRESSBUTTON = (WM_USER + 3);
  1305. TB_HIDEBUTTON = (WM_USER + 4);
  1306. TB_INDETERMINATE = (WM_USER + 5);
  1307. {$ifdef ie4plus}
  1308. TB_MARKBUTTON = (WM_USER + 6);
  1309. {$ENDIF}
  1310. TB_ISBUTTONENABLED = (WM_USER + 9);
  1311. TB_ISBUTTONCHECKED = (WM_USER + 10);
  1312. TB_ISBUTTONPRESSED = (WM_USER + 11);
  1313. TB_ISBUTTONHIDDEN = (WM_USER + 12);
  1314. TB_ISBUTTONINDETERMINATE = (WM_USER + 13);
  1315. {$ifdef ie4plus}
  1316. TB_ISBUTTONHIGHLIGHTED = (WM_USER + 14);
  1317. {$ENDIF}
  1318. TB_SETSTATE = (WM_USER + 17);
  1319. TB_GETSTATE = (WM_USER + 18);
  1320. TB_ADDBITMAP = (WM_USER + 19);
  1321. {$IFDEF _WIN32}
  1322. TYPE
  1323. tagTBADDBITMAP = Record
  1324. hInst : HINST;
  1325. nID : UINT_PTR;
  1326. END;
  1327. TBADDBITMAP = tagTBADDBITMAP;
  1328. LPTBADDBITMAP = ^tagTBADDBITMAP;
  1329. TTBADDBITMAP = tagTBADDBITMAP;
  1330. PTBADDBITMAP = ^tagTBADDBITMAP;
  1331. CONST
  1332. HINST_COMMCTRL = HINST(-1);
  1333. IDB_STD_SMALL_COLOR = 0;
  1334. IDB_STD_LARGE_COLOR = 1;
  1335. IDB_VIEW_SMALL_COLOR = 4;
  1336. IDB_VIEW_LARGE_COLOR = 5;
  1337. {$ifdef ie3plus}
  1338. IDB_HIST_SMALL_COLOR = 8;
  1339. IDB_HIST_LARGE_COLOR = 9;
  1340. {$ENDIF}
  1341. {$ifdef win32vista}
  1342. IDB_HIST_NORMAL = 12;
  1343. IDB_HIST_HOT = 13;
  1344. IDB_HIST_DISABLED = 14;
  1345. IDB_HIST_PRESSED = 15;
  1346. {$endif}
  1347. // icon indexes for standard bitmap
  1348. STD_CUT = 0;
  1349. STD_COPY = 1;
  1350. STD_PASTE = 2;
  1351. STD_UNDO = 3;
  1352. STD_REDOW = 4;
  1353. STD_DELETE = 5;
  1354. STD_FILENEW = 6;
  1355. STD_FILEOPEN = 7;
  1356. STD_FILESAVE = 8;
  1357. STD_PRINTPRE = 9;
  1358. STD_PROPERTIES = 10;
  1359. STD_HELP = 11;
  1360. STD_FIND = 12;
  1361. STD_REPLACE = 13;
  1362. STD_PRINT = 14;
  1363. // icon indexes for standard view bitmap
  1364. VIEW_LARGEICONS = 0;
  1365. VIEW_SMALLICONS = 1;
  1366. VIEW_LIST = 2;
  1367. VIEW_DETAILS = 3;
  1368. VIEW_SORTNAME = 4;
  1369. VIEW_SORTSIZE = 5;
  1370. VIEW_SORTDATE = 6;
  1371. VIEW_SORTTYPE = 7;
  1372. VIEW_PARENTFOLDER = 8;
  1373. VIEW_NETCONNECT = 9;
  1374. VIEW_NETDISCONNECT = 10;
  1375. VIEW_NEWFOLDER = 11;
  1376. {$ifdef ie4plus}
  1377. VIEW_VIEWMENU = 12;
  1378. {$ENDIF}
  1379. {$ifdef ie3plus}
  1380. HIST_BACK = 0;
  1381. HIST_FORWARD = 1;
  1382. HIST_FAVORITES = 2;
  1383. HIST_ADDTOFAVORITES = 3;
  1384. HIST_VIEWTREE = 4;
  1385. {$ENDIF}
  1386. {$ENDIF}
  1387. {$ifdef ie4plus}
  1388. TB_ADDBUTTONSA = (WM_USER + 20);
  1389. TB_INSERTBUTTONA = (WM_USER + 21);
  1390. {$ELSE}
  1391. TB_ADDBUTTONS = (WM_USER + 20);
  1392. TB_INSERTBUTTON = (WM_USER + 21);
  1393. {$ENDIF}
  1394. TB_DELETEBUTTON = (WM_USER + 22);
  1395. TB_GETBUTTON = (WM_USER + 23);
  1396. TB_BUTTONCOUNT = (WM_USER + 24);
  1397. TB_COMMANDTOINDEX = (WM_USER + 25);
  1398. {$IFDEF _WIN32}
  1399. TYPE
  1400. tagTBSAVEPARAMSA = Record
  1401. hkr : HKEY;
  1402. pszSubKey : LPCSTR;
  1403. pszValueName : LPCSTR;
  1404. END;
  1405. TBSAVEPARAMSA = tagTBSAVEPARAMSA;
  1406. LPTBSAVEPARAMSA = ^tagTBSAVEPARAMSA;
  1407. TTBSAVEPARAMSA = tagTBSAVEPARAMSA;
  1408. PTBSAVEPARAMSA = ^tagTBSAVEPARAMSA;
  1409. tagTBSAVEPARAMSW = Record
  1410. hkr : HKEY;
  1411. pszSubKey : LPCWSTR;
  1412. pszValueName : LPCWSTR;
  1413. END;
  1414. TBSAVEPARAMSW = tagTBSAVEPARAMSW;
  1415. LPTBSAVEPARAMSW = ^tagTBSAVEPARAMSW;
  1416. TTBSAVEPARAMSW = tagTBSAVEPARAMSW;
  1417. PTBSAVEPARAMSW = ^tagTBSAVEPARAMSW;
  1418. {$IFDEF UNICODE}
  1419. TBSAVEPARAMS = TBSAVEPARAMSW;
  1420. LPTBSAVEPARAMS = LPTBSAVEPARAMSW;
  1421. {$ELSE}
  1422. TBSAVEPARAMS = TBSAVEPARAMSA;
  1423. LPTBSAVEPARAMS = LPTBSAVEPARAMSA;
  1424. {$ENDIF}
  1425. {$ENDIF} // _WIN32
  1426. CONST
  1427. TB_SAVERESTOREA = (WM_USER + 26);
  1428. TB_SAVERESTOREW = (WM_USER + 76);
  1429. TB_CUSTOMIZE = (WM_USER + 27);
  1430. TB_ADDSTRINGA = (WM_USER + 28);
  1431. TB_ADDSTRINGW = (WM_USER + 77);
  1432. TB_GETITEMRECT = (WM_USER + 29);
  1433. TB_BUTTONSTRUCTSIZE = (WM_USER + 30);
  1434. TB_SETBUTTONSIZE = (WM_USER + 31);
  1435. TB_SETBITMAPSIZE = (WM_USER + 32);
  1436. TB_AUTOSIZE = (WM_USER + 33);
  1437. TB_GETTOOLTIPS = (WM_USER + 35);
  1438. TB_SETTOOLTIPS = (WM_USER + 36);
  1439. TB_SETPARENT = (WM_USER + 37);
  1440. TB_SETROWS = (WM_USER + 39);
  1441. TB_GETROWS = (WM_USER + 40);
  1442. TB_SETCMDID = (WM_USER + 42);
  1443. TB_CHANGEBITMAP = (WM_USER + 43);
  1444. TB_GETBITMAP = (WM_USER + 44);
  1445. TB_GETBUTTONTEXTA = (WM_USER + 45);
  1446. TB_GETBUTTONTEXTW = (WM_USER + 75);
  1447. TB_REPLACEBITMAP = (WM_USER + 46);
  1448. {$ifdef ie3plus}
  1449. TB_SETINDENT = (WM_USER + 47);
  1450. TB_SETIMAGELIST = (WM_USER + 48);
  1451. TB_GETIMAGELIST = (WM_USER + 49);
  1452. TB_LOADIMAGES = (WM_USER + 50);
  1453. TB_GETRECT = (WM_USER + 51); // wParam is the Cmd instead of index
  1454. TB_SETHOTIMAGELIST = (WM_USER + 52);
  1455. TB_GETHOTIMAGELIST = (WM_USER + 53);
  1456. TB_SETDISABLEDIMAGELIST = (WM_USER + 54);
  1457. TB_GETDISABLEDIMAGELIST = (WM_USER + 55);
  1458. TB_SETSTYLE = (WM_USER + 56);
  1459. TB_GETSTYLE = (WM_USER + 57);
  1460. TB_GETBUTTONSIZE = (WM_USER + 58);
  1461. TB_SETBUTTONWIDTH = (WM_USER + 59);
  1462. TB_SETMAXTEXTROWS = (WM_USER + 60);
  1463. TB_GETTEXTROWS = (WM_USER + 61);
  1464. {$ENDIF} // _WIN32_IE >= 0x0300
  1465. CONST
  1466. {$IFDEF UNICODE}
  1467. TB_SAVERESTORE = TB_SAVERESTOREW;
  1468. TB_ADDSTRING = TB_ADDSTRINGW;
  1469. {$ELSE}
  1470. TB_GETBUTTONTEXT = TB_GETBUTTONTEXTA;
  1471. TB_SAVERESTORE = TB_SAVERESTOREA;
  1472. TB_ADDSTRING = TB_ADDSTRINGA;
  1473. {$ENDIF}
  1474. {$ifdef ie4plus}
  1475. CONST
  1476. TB_GETOBJECT = (WM_USER + 62); // wParam == IID, lParam void **ppv
  1477. TB_GETHOTITEM = (WM_USER + 71);
  1478. TB_SETHOTITEM = (WM_USER + 72); // wParam == iHotItem
  1479. TB_SETANCHORHIGHLIGHT = (WM_USER + 73); // wParam == TRUE/FALSE
  1480. TB_GETANCHORHIGHLIGHT = (WM_USER + 74);
  1481. TB_MAPACCELERATORA = (WM_USER + 78); // wParam == ch, lParam int * pidBtn
  1482. TYPE
  1483. TBINSERTMARK = Record
  1484. iButton : cint;
  1485. dwFlags : DWORD;
  1486. END;
  1487. LPTBINSERTMARK = ^TBINSERTMARK;
  1488. TTBINSERTMARK = TBINSERTMARK;
  1489. PTBINSERTMARK = ^TBINSERTMARK;
  1490. CONST
  1491. TBIMHT_AFTER = $00000001; // TRUE = insert After iButton, otherwise before
  1492. TBIMHT_BACKGROUND = $00000002; // TRUE iff missed buttons completely
  1493. TB_GETINSERTMARK = (WM_USER + 79); // lParam == LPTBINSERTMARK
  1494. TB_SETINSERTMARK = (WM_USER + 80); // lParam == LPTBINSERTMARK
  1495. TB_INSERTMARKHITTEST = (WM_USER + 81); // wParam == LPPOINT lParam == LPTBINSERTMARK
  1496. TB_MOVEBUTTON = (WM_USER + 82);
  1497. TB_GETMAXSIZE = (WM_USER + 83); // lParam == LPSIZE
  1498. TB_SETEXTENDEDSTYLE = (WM_USER + 84); // For TBSTYLE_EX_*
  1499. TB_GETEXTENDEDSTYLE = (WM_USER + 85); // For TBSTYLE_EX_*
  1500. TB_GETPADDING = (WM_USER + 86);
  1501. TB_SETPADDING = (WM_USER + 87);
  1502. TB_SETINSERTMARKCOLOR = (WM_USER + 88);
  1503. TB_GETINSERTMARKCOLOR = (WM_USER + 89);
  1504. TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME; // lParam is color scheme
  1505. TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME; // fills in COLORSCHEME pointed to by lParam
  1506. TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  1507. TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  1508. TB_MAPACCELERATORW = (WM_USER + 90); // wParam == ch, lParam int * pidBtn
  1509. CONST
  1510. {$IFDEF UNICODE}
  1511. TB_MAPACCELERATOR = TB_MAPACCELERATORW;
  1512. {$ELSE}
  1513. TB_MAPACCELERATOR = TB_MAPACCELERATORA;
  1514. {$ENDIF}
  1515. {$ENDIF} // _WIN32_IE >= 0x0400
  1516. TYPE
  1517. TBREPLACEBITMAP = Record
  1518. hInstOld : HINST;
  1519. nIDOld : UINT_PTR;
  1520. hInstNew : HINST;
  1521. nIDNew : UINT_PTR;
  1522. nButtons : cint;
  1523. END;
  1524. LPTBREPLACEBITMAP = ^TBREPLACEBITMAP;
  1525. TTBREPLACEBITMAP = TBREPLACEBITMAP;
  1526. PTBREPLACEBITMAP = ^TBREPLACEBITMAP;
  1527. {$IFDEF _WIN32}
  1528. CONST
  1529. TBBF_LARGE = $0001;
  1530. TB_GETBITMAPFLAGS = (WM_USER + 41);
  1531. {$ifdef ie4plus}
  1532. TBIF_IMAGE = $00000001;
  1533. TBIF_TEXT = $00000002;
  1534. TBIF_STATE = $00000004;
  1535. TBIF_STYLE = $00000008;
  1536. TBIF_LPARAM = $00000010;
  1537. TBIF_COMMAND = $00000020;
  1538. TBIF_SIZE = $00000040;
  1539. {$ifdef ie5plus}
  1540. TBIF_BYINDEX = $80000000; // this specifies that the wparam in Get/SetButtonInfo is an index, not id
  1541. {$ENDIF}
  1542. TYPE
  1543. TBBUTTONINFOA = Record
  1544. cbSize : UINT;
  1545. dwMask : DWORD;
  1546. idCommand : cint;
  1547. iImage : cint;
  1548. fsState : BYTE;
  1549. fsStyle : BYTE;
  1550. cx : WORD;
  1551. lParam : DWORD_PTR;
  1552. pszText : LPSTR;
  1553. cchText : cint;
  1554. END;
  1555. LPTBBUTTONINFOA = ^TBBUTTONINFOA;
  1556. TTBBUTTONINFOA = TBBUTTONINFOA;
  1557. PTBBUTTONINFOA = ^TBBUTTONINFOA;
  1558. TBBUTTONINFOW = Record
  1559. cbSize : UINT;
  1560. dwMask : DWORD;
  1561. idCommand : cint;
  1562. iImage : cint;
  1563. fsState : BYTE;
  1564. fsStyle : BYTE;
  1565. cx : WORD;
  1566. lParam : DWORD_PTR;
  1567. pszText : LPWSTR;
  1568. cchText : cint;
  1569. END;
  1570. LPTBBUTTONINFOW = ^TBBUTTONINFOW;
  1571. TTBBUTTONINFOW= TBBUTTONINFOW;
  1572. PTBBUTTONINFOW= ^TBBUTTONINFOW;
  1573. {$IFDEF UNICODE}
  1574. TBBUTTONINFO = TBBUTTONINFOW;
  1575. LPTBBUTTONINFO = LPTBBUTTONINFOW;
  1576. {$ELSE}
  1577. TBBUTTONINFO = TBBUTTONINFOA;
  1578. LPTBBUTTONINFO = LPTBBUTTONINFOA;
  1579. {$ENDIF}
  1580. TTBButtonInfo = TBBUTTONINFO;
  1581. PTBButtonInfo = LPTBBUTTONINFO;
  1582. // BUTTONINFO APIs do NOT support the string pool.
  1583. CONST
  1584. TB_GETBUTTONINFOW = (WM_USER + 63);
  1585. TB_SETBUTTONINFOW = (WM_USER + 64);
  1586. TB_GETBUTTONINFOA = (WM_USER + 65);
  1587. TB_SETBUTTONINFOA = (WM_USER + 66);
  1588. {$IFDEF UNICODE}
  1589. CONST
  1590. TB_GETBUTTONINFO = TB_GETBUTTONINFOW;
  1591. TB_SETBUTTONINFO = TB_SETBUTTONINFOW;
  1592. {$ELSE}
  1593. CONST
  1594. TB_GETBUTTONINFO = TB_GETBUTTONINFOA;
  1595. TB_SETBUTTONINFO = TB_SETBUTTONINFOA;
  1596. {$ENDIF}
  1597. CONST
  1598. TB_INSERTBUTTONW = (WM_USER + 67);
  1599. TB_ADDBUTTONSW = (WM_USER + 68);
  1600. TB_HITTEST = (WM_USER + 69);
  1601. // New post Win95/NT4 for InsertButton and AddButton. if iString member
  1602. // is a pointer to a string, it will be handled as a string like listview
  1603. // (although LPSTR_TEXTCALLBACK is not supported).
  1604. {$IFDEF UNICODE}
  1605. CONST
  1606. TB_INSERTBUTTON = TB_INSERTBUTTONW;
  1607. TB_ADDBUTTONS = TB_ADDBUTTONSW;
  1608. {$ELSE}
  1609. CONST
  1610. TB_INSERTBUTTON = TB_INSERTBUTTONA;
  1611. TB_ADDBUTTONS = TB_ADDBUTTONSA;
  1612. {$ENDIF}
  1613. CONST
  1614. TB_SETDRAWTEXTFLAGS = (WM_USER + 70); // wParam == mask lParam == bit values
  1615. {$ENDIF} // _WIN32_IE >= 0x0400
  1616. {$ifdef ie5plus}
  1617. TB_GETSTRINGW = (WM_USER + 91);
  1618. TB_GETSTRINGA = (WM_USER + 92);
  1619. {$IFDEF UNICODE}
  1620. TB_GETSTRING = TB_GETSTRINGW;
  1621. {$ELSE}
  1622. TB_GETSTRING = TB_GETSTRINGA;
  1623. {$ENDIF}
  1624. {$ENDIF} // _WIN32_IE >= 0x0500
  1625. {$ifdef win32xp}
  1626. CONST
  1627. TBMF_PAD = $00000001;
  1628. TBMF_BARPAD = $00000002;
  1629. TBMF_BUTTONSPACING = $00000004;
  1630. TYPE
  1631. TBMETRICS = Record
  1632. cbSize : UINT;
  1633. dwMask : DWORD;
  1634. cxPad : cint; // PAD
  1635. cyPad : cint;
  1636. cxBarPad : cint; // BARPAD
  1637. cyBarPad : cint;
  1638. cxButtonSpacing : cint; // BUTTONSPACING
  1639. cyButtonSpacing : cint;
  1640. END;
  1641. LPTBMETRICS = ^TBMETRICS;
  1642. TTBMETRICS = TBMETRICS;
  1643. PTBMETRICS = ^TBMETRICS;
  1644. CONST
  1645. TB_GETMETRICS = (WM_USER + 101);
  1646. TB_SETMETRICS = (WM_USER + 102);
  1647. {$ENDIF}
  1648. {$ifdef win32vista}
  1649. TB_SETPRESSEDIMAGELIST = (WM_USER + 104);
  1650. TB_GETPRESSEDIMAGELIST = (WM_USER + 105);
  1651. {$endif}
  1652. {$ifdef win32xp}
  1653. TB_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
  1654. {$ENDIF}
  1655. TBN_GETBUTTONINFOA = (TBN_FIRST-0);
  1656. TBN_BEGINDRAG = (TBN_FIRST-1);
  1657. TBN_ENDDRAG = (TBN_FIRST-2);
  1658. TBN_BEGINADJUST = (TBN_FIRST-3);
  1659. TBN_ENDADJUST = (TBN_FIRST-4);
  1660. TBN_RESET = (TBN_FIRST-5);
  1661. TBN_QUERYINSERT = (TBN_FIRST-6);
  1662. TBN_QUERYDELETE = (TBN_FIRST-7);
  1663. TBN_TOOLBARCHANGE = (TBN_FIRST-8);
  1664. TBN_CUSTHELP = (TBN_FIRST-9);
  1665. {$ifdef ie3plus}
  1666. TBN_DROPDOWN = (TBN_FIRST - 10);
  1667. {$ENDIF}
  1668. {$ifdef ie4plus}
  1669. TBN_GETOBJECT = (TBN_FIRST - 12);
  1670. // Structure for TBN_HOTITEMCHANGE notification
  1671. //
  1672. TYPE
  1673. tagNMTBHOTITEM = Record
  1674. hdr : NMHDR;
  1675. idOld : cint;
  1676. idNew : cint;
  1677. dwFlags : DWORD; // HICF_*
  1678. END;
  1679. NMTBHOTITEM = tagNMTBHOTITEM;
  1680. LPNMTBHOTITEM = ^tagNMTBHOTITEM;
  1681. TNMTBHOTITEM = tagNMTBHOTITEM;
  1682. PNMTBHOTITEM = ^tagNMTBHOTITEM;
  1683. // Hot item change flags
  1684. CONST
  1685. HICF_OTHER = $00000000;
  1686. HICF_MOUSE = $00000001; // Triggered by mouse
  1687. HICF_ARROWKEYS = $00000002; // Triggered by arrow keys
  1688. HICF_ACCELERATOR = $00000004; // Triggered by accelerator
  1689. HICF_DUPACCEL = $00000008; // This accelerator is not unique
  1690. HICF_ENTERING = $00000010; // idOld is invalid
  1691. HICF_LEAVING = $00000020; // idNew is invalid
  1692. HICF_RESELECT = $00000040; // hot item reselected
  1693. HICF_LMOUSE = $00000080; // left mouse button selected
  1694. HICF_TOGGLEDROPDOWN = $00000100; // Toggle button's dropdown state
  1695. TBN_HOTITEMCHANGE = (TBN_FIRST - 13);
  1696. TBN_DRAGOUT = (TBN_FIRST - 14); // this is sent when the user clicks down on a button then drags off the button
  1697. TBN_DELETINGBUTTON = (TBN_FIRST - 15); // uses TBNOTIFY
  1698. TBN_GETDISPINFOA = (TBN_FIRST - 16); // This is sent when the toolbar needs some display information
  1699. TBN_GETDISPINFOW = (TBN_FIRST - 17); // This is sent when the toolbar needs some display information
  1700. TBN_GETINFOTIPA = (TBN_FIRST - 18);
  1701. TBN_GETINFOTIPW = (TBN_FIRST - 19);
  1702. TBN_GETBUTTONINFOW = (TBN_FIRST - 20);
  1703. {$ifdef ie5plus}
  1704. TBN_RESTORE = (TBN_FIRST - 21);
  1705. TBN_SAVE = (TBN_FIRST - 22);
  1706. TBN_INITCUSTOMIZE = (TBN_FIRST - 23);
  1707. TBNRF_HIDEHELP = $00000001;
  1708. TBNRF_ENDCUSTOMIZE = $00000002;
  1709. {$ENDIF} // (_WIN32_IE >= 0x0500)
  1710. {$ifdef ie5plus}
  1711. TYPE
  1712. tagNMTBSAVE = Record
  1713. hdr : NMHDR;
  1714. pData : PDWORD;
  1715. pCurrent : PDWORD;
  1716. cbData : UINT;
  1717. iItem : cint;
  1718. cButtons : cint;
  1719. tbButton : TBBUTTON;
  1720. END;
  1721. NMTBSAVE = tagNMTBSAVE;
  1722. LPNMTBSAVE = ^tagNMTBSAVE;
  1723. TNMTBSAVE = tagNMTBSAVE;
  1724. PNMTBSAVE = ^tagNMTBSAVE;
  1725. tagNMTBRESTORE = Record
  1726. hdr : NMHDR;
  1727. pData : PDWORD;
  1728. pCurrent : PDWORD;
  1729. cbData : UINT;
  1730. iItem : cint;
  1731. cButtons : cint;
  1732. cbBytesPerRecord : cint;
  1733. tbButton : TBBUTTON;
  1734. END;
  1735. NMTBRESTORE = tagNMTBRESTORE;
  1736. LPNMTBRESTORE = ^tagNMTBRESTORE;
  1737. TNMTBRESTORE = tagNMTBRESTORE;
  1738. PNMTBRESTORE = ^tagNMTBRESTORE;
  1739. {$ENDIF} // (_WIN32_IE >= 0x0500)
  1740. tagNMTBGETINFOTIPA = Record
  1741. hdr : NMHDR;
  1742. pszText : LPSTR;
  1743. cchTextMax : cint;
  1744. iItem : cint;
  1745. lParam : LPARAM;
  1746. END;
  1747. NMTBGETINFOTIPA = tagNMTBGETINFOTIPA;
  1748. LPNMTBGETINFOTIPA = ^tagNMTBGETINFOTIPA;
  1749. TNMTBGETINFOTIPA = tagNMTBGETINFOTIPA;
  1750. PNMTBGETINFOTIPA = ^tagNMTBGETINFOTIPA;
  1751. tagNMTBGETINFOTIPW = Record
  1752. hdr : NMHDR;
  1753. pszText : LPWSTR;
  1754. cchTextMax : cint;
  1755. iItem : cint;
  1756. lParam : LPARAM;
  1757. END;
  1758. NMTBGETINFOTIPW = tagNMTBGETINFOTIPW;
  1759. LPNMTBGETINFOTIPW = ^tagNMTBGETINFOTIPW;
  1760. TNMTBGETINFOTIPW = tagNMTBGETINFOTIPW;
  1761. PNMTBGETINFOTIPW = ^tagNMTBGETINFOTIPW;
  1762. {$IFDEF UNICODE}
  1763. CONST
  1764. TBN_GETINFOTIP = TBN_GETINFOTIPW;
  1765. TYPE
  1766. NMTBGETINFOTIP = NMTBGETINFOTIPW;
  1767. LPNMTBGETINFOTIP = LPNMTBGETINFOTIPW;
  1768. {$ELSE}
  1769. CONST
  1770. TBN_GETINFOTIP = TBN_GETINFOTIPA;
  1771. TYPE
  1772. NMTBGETINFOTIP = NMTBGETINFOTIPA;
  1773. LPNMTBGETINFOTIP = LPNMTBGETINFOTIPA;
  1774. {$ENDIF}
  1775. CONST
  1776. TBNF_IMAGE = $00000001;
  1777. TBNF_TEXT = $00000002;
  1778. TBNF_DI_SETITEM = $10000000;
  1779. TYPE
  1780. NMTBDISPINFOA = Record
  1781. hdr : NMHDR;
  1782. dwMask : DWORD; // [in] Specifies the values requested .[out] Client ask the data to be set for future use
  1783. idCommand : cint; // [in] id of button we're requesting info for
  1784. lParam : DWORD_PTR; // [in] lParam of button
  1785. iImage : cint; // [out] image index
  1786. pszText : LPSTR; // [out] new text for item
  1787. cchText : cint; // [in] size of buffer pointed to by pszText
  1788. END;
  1789. LPNMTBDISPINFOA = ^NMTBDISPINFOA;
  1790. TNMTBDISPINFOA = NMTBDISPINFOA;
  1791. PNMTBDISPINFOA = ^NMTBDISPINFOA;
  1792. NMTBDISPINFOW = Record
  1793. hdr : NMHDR;
  1794. dwMask : DWORD; //[in] Specifies the values requested .[out] Client ask the data to be set for future use
  1795. idCommand : cint; // [in] id of button we're requesting info for
  1796. lParam : DWORD_PTR; // [in] lParam of button
  1797. iImage : cint; // [out] image index
  1798. pszText : LPWSTR; // [out] new text for item
  1799. cchText : cint; // [in] size of buffer pointed to by pszText
  1800. END;
  1801. LPNMTBDISPINFOW = ^NMTBDISPINFOW;
  1802. TNMTBDISPINFOW = NMTBDISPINFOW;
  1803. PNMTBDISPINFOW = ^NMTBDISPINFOW;
  1804. {$IFDEF UNICODE}
  1805. CONST
  1806. TBN_GETDISPINFO = TBN_GETDISPINFOW;
  1807. TYPE
  1808. NMTBDISPINFO = NMTBDISPINFOW;
  1809. LPNMTBDISPINFO = LPNMTBDISPINFOW;
  1810. {$ELSE}
  1811. CONST
  1812. TBN_GETDISPINFO = TBN_GETDISPINFOA;
  1813. TYPE
  1814. NMTBDISPINFO = NMTBDISPINFOA;
  1815. LPNMTBDISPINFO = LPNMTBDISPINFOA;
  1816. {$ENDIF}
  1817. // Return codes for TBN_DROPDOWN
  1818. CONST
  1819. TBDDRET_DEFAULT = 0;
  1820. TBDDRET_NODEFAULT = 1;
  1821. TBDDRET_TREATPRESSED = 2; // Treat as a standard press button
  1822. {$ENDIF}
  1823. {$IFDEF UNICODE}
  1824. TBN_GETBUTTONINFO = TBN_GETBUTTONINFOW;
  1825. {$ELSE}
  1826. TBN_GETBUTTONINFO = TBN_GETBUTTONINFOA;
  1827. {$ENDIF}
  1828. TYPE
  1829. {$ifdef ie3plus}
  1830. tagNMTOOLBARA = Record
  1831. hdr : NMHDR;
  1832. iItem : cint;
  1833. tbButton : TBBUTTON;
  1834. cchText : cint;
  1835. pszText : LPSTR;
  1836. {$ifdef ie5plus}
  1837. rcButton : RECT;
  1838. {$ENDIF}
  1839. END;
  1840. NMTOOLBARA = tagNMTOOLBARA;
  1841. LPNMTOOLBARA = ^tagNMTOOLBARA;
  1842. {$ifndef unicode}
  1843. LPNMTOOLBAR = LPNMTOOLBARA;
  1844. {$endif}
  1845. TNMTOOLBARA = tagNMTOOLBARA;
  1846. PNMTOOLBARA = LPNMTOOLBARA;
  1847. {$ENDIF}
  1848. LPTBNOTIFY = LPNMTOOLBARA;
  1849. TBNOTIFYA = NMTOOLBARA;
  1850. {$ifdef ie3plus}
  1851. tagNMTOOLBARW = Record
  1852. hdr : NMHDR;
  1853. iItem : cint;
  1854. tbButton : TBBUTTON;
  1855. cchText : cint;
  1856. pszText : LPWSTR;
  1857. {$ifdef ie5plus}
  1858. rcButton : RECT;
  1859. {$ENDIF}
  1860. END;
  1861. NMTOOLBARW = tagNMTOOLBARW;
  1862. LPNMTOOLBARW = ^tagNMTOOLBARW;
  1863. TNMTOOLBARW = tagNMTOOLBARW;
  1864. PNMTOOLBARW = ^tagNMTOOLBARW;
  1865. {$ENDIF}
  1866. {$ifdef ie3plus}
  1867. TBNOTIFYW = NMTOOLBARW;
  1868. LPTBNOTIFYA = LPNMTOOLBARA;
  1869. {$ELSE}
  1870. tagNMTOOLBARA = tagTBNOTIFYA;
  1871. NMTOOLBARA = TBNOTIFYA;
  1872. LPNMTOOLBARA = LPTBNOTIFYA;
  1873. tagNMTOOLBARW = tagTBNOTIFYW;
  1874. NMTOOLBARW = TBNOTIFYW;
  1875. LPNMTOOLBARW = LPTBNOTIFYW;
  1876. {$ENDIF}
  1877. {$IFDEF UNICODE}
  1878. NMTOOLBAR = NMTOOLBARW;
  1879. LPNMTOOLBAR = LPNMTOOLBARW;
  1880. {$ELSE}
  1881. NMTOOLBAR = NMTOOLBARA;
  1882. TNMTOOLBAR = NMTOOLBARA;
  1883. PNMTOOLBAR = LPNMTOOLBARA;
  1884. {$ENDIF}
  1885. TBNOTIFY = NMTOOLBAR;
  1886. {$ENDIF}
  1887. {$ENDIF} // NOTOOLBAR
  1888. LPTBNOTIFYW = LPNMTOOLBARW;
  1889. {$ifdef ie3plus}
  1890. //====== REBAR CONTROL ========================================================
  1891. {$IFNDEF NOREBAR}
  1892. {$IFDEF _WIN32}
  1893. CONST
  1894. REBARCLASSNAMEW = {L}'ReBarWindow32'#$0000;
  1895. REBARCLASSNAMEA = 'ReBarWindow32';
  1896. {$IFDEF UNICODE}
  1897. REBARCLASSNAME = REBARCLASSNAMEW;
  1898. {$ELSE}
  1899. REBARCLASSNAME = REBARCLASSNAMEA;
  1900. {$ENDIF}
  1901. {$ELSE}
  1902. CONST
  1903. REBARCLASSNAME = 'ReBarWindow';
  1904. {$ENDIF}
  1905. CONST
  1906. RBIM_IMAGELIST = $00000001;
  1907. // begin_r_commctrl
  1908. {$ifdef ie4plus}
  1909. RBS_TOOLTIPS = $0100;
  1910. RBS_VARHEIGHT = $0200;
  1911. RBS_BANDBORDERS = $0400;
  1912. RBS_FIXEDORDER = $0800;
  1913. RBS_REGISTERDROP = $1000;
  1914. RBS_AUTOSIZE = $2000;
  1915. RBS_VERTICALGRIPPER = $4000; // this always has the vertical gripper (default for horizontal mode)
  1916. RBS_DBLCLKTOGGLE = $8000;
  1917. {$ELSE}
  1918. RBS_TOOLTIPS = $00000100;
  1919. RBS_VARHEIGHT = $00000200;
  1920. RBS_BANDBORDERS = $00000400;
  1921. RBS_FIXEDORDER = $00000800;
  1922. {$ENDIF} // _WIN32_IE >= 0x0400
  1923. // end_r_commctrl
  1924. TYPE
  1925. tagREBARINFO = Record
  1926. cbSize : UINT;
  1927. fMask : UINT;
  1928. {$IFNDEF NOIMAGEAPIS}
  1929. himl : HIMAGELIST;
  1930. {$ELSE}
  1931. himl : HANDLE;
  1932. {$ENDIF}
  1933. END;
  1934. REBARINFO = tagREBARINFO;
  1935. LPREBARINFO = ^tagREBARINFO;
  1936. TREBARINFO = tagREBARINFO;
  1937. PREBARINFO = ^tagREBARINFO;
  1938. CONST
  1939. RBBS_BREAK = $00000001; // break to new line
  1940. RBBS_FIXEDSIZE = $00000002; // band can't be sized
  1941. RBBS_CHILDEDGE = $00000004; // edge around top & bottom of child window
  1942. RBBS_HIDDEN = $00000008; // don't show
  1943. RBBS_NOVERT = $00000010; // don't show when vertical
  1944. RBBS_FIXEDBMP = $00000020; // bitmap doesn't move during band resize
  1945. {$ifdef ie4plus }
  1946. RBBS_VARIABLEHEIGHT = $00000040; // allow autosizing of this child vertically
  1947. RBBS_GRIPPERALWAYS = $00000080; // always show the gripper
  1948. RBBS_NOGRIPPER = $00000100; // never show the gripper
  1949. {$ifdef ie5plus}
  1950. RBBS_USECHEVRON = $00000200; // display drop-down button for this band if it's sized smaller than ideal width
  1951. {$ifdef IE501plus}
  1952. RBBS_HIDETITLE = $00000400; // keep band title hidden
  1953. RBBS_TOPALIGN = $00000800; // keep band title hidden
  1954. {$ENDIF} // 0x0501 //
  1955. {$ENDIF} // 0x0500 //
  1956. {$ENDIF} // 0x0400 //
  1957. RBBIM_STYLE = $00000001;
  1958. RBBIM_COLORS = $00000002;
  1959. RBBIM_TEXT = $00000004;
  1960. RBBIM_IMAGE = $00000008;
  1961. RBBIM_CHILD = $00000010;
  1962. RBBIM_CHILDSIZE = $00000020;
  1963. RBBIM_SIZE = $00000040;
  1964. RBBIM_BACKGROUND = $00000080;
  1965. RBBIM_ID = $00000100;
  1966. {$ifdef ie4plus}
  1967. RBBIM_IDEALSIZE = $00000200;
  1968. RBBIM_LPARAM = $00000400;
  1969. RBBIM_HEADERSIZE = $00000800; // control the size of the header
  1970. {$ENDIF}
  1971. {$ifdef win32vista}
  1972. RBBIM_CHEVRONLOCATION = $00001000;
  1973. RBBIM_CHEVRONSTATE = $00002000;
  1974. {$endif}
  1975. TYPE
  1976. tagREBARBANDINFOA = Record
  1977. cbSize : UINT;
  1978. fMask : UINT;
  1979. fStyle : UINT;
  1980. clrFore : COLORREF;
  1981. clrBack : COLORREF;
  1982. lpText : LPSTR;
  1983. cch : UINT;
  1984. iImage : cint;
  1985. hwndChild : HWND;
  1986. cxMinChild : UINT;
  1987. cyMinChild : UINT;
  1988. cx : UINT;
  1989. hbmBack : HBITMAP;
  1990. wID : UINT;
  1991. {$ifdef ie4plus}
  1992. cyChild : UINT;
  1993. cyMaxChild : UINT;
  1994. cyIntegral : UINT;
  1995. cxIdeal : UINT;
  1996. lParam : LPARAM;
  1997. cxHeader : UINT;
  1998. {$ENDIF}
  1999. {$ifdef win32vista}
  2000. rcChevronLocation : RECT; // the rect is in client co-ord wrt hwndChild
  2001. uChevronState : cUINT; // STATE_SYSTEM_*
  2002. {$endif}
  2003. END;
  2004. REBARBANDINFOA = tagREBARBANDINFOA;
  2005. LPREBARBANDINFOA = ^tagREBARBANDINFOA;
  2006. TREBARBANDINFOA = tagREBARBANDINFOA;
  2007. PREBARBANDINFOA = ^tagREBARBANDINFOA;
  2008. LPCREBARBANDINFOA = ^REBARBANDINFOA;
  2009. tagREBARBANDINFOW = Record
  2010. cbSize : UINT;
  2011. fMask : UINT;
  2012. fStyle : UINT;
  2013. clrFore : COLORREF;
  2014. clrBack : COLORREF;
  2015. lpText : LPWSTR;
  2016. cch : UINT;
  2017. iImage : cint;
  2018. hwndChild : HWND;
  2019. cxMinChild : UINT;
  2020. cyMinChild : UINT;
  2021. cx : UINT;
  2022. hbmBack : HBITMAP;
  2023. wID : UINT;
  2024. {$ifdef ie4plus}
  2025. cyChild : UINT;
  2026. cyMaxChild : UINT;
  2027. cyIntegral : UINT;
  2028. cxIdeal : UINT;
  2029. lParam : LPARAM;
  2030. cxHeader : UINT;
  2031. {$ENDIF}
  2032. {$ifdef win32vista}
  2033. rcChevronLocation : RECT; // the rect is in client co-ord wrt hwndChild
  2034. uChevronState : cUINT; // STATE_SYSTEM_*
  2035. {$endif}
  2036. END;
  2037. REBARBANDINFOW = tagREBARBANDINFOW;
  2038. LPREBARBANDINFOW = ^tagREBARBANDINFOW;
  2039. TREBARBANDINFOW = tagREBARBANDINFOW;
  2040. PREBARBANDINFOW = ^tagREBARBANDINFOW;
  2041. LPCREBARBANDINFOW = {const} ^REBARBANDINFOW;
  2042. Const
  2043. REBARBANDINFOA_V3_SIZE = SIZEOF(REBARBANDINFOA);
  2044. REBARBANDINFOW_V3_SIZE = SIZEOF(REBARBANDINFOW);
  2045. Type
  2046. {$IFDEF UNICODE}
  2047. REBARBANDINFO = REBARBANDINFOW;
  2048. LPREBARBANDINFO = LPREBARBANDINFOW;
  2049. LPCREBARBANDINFO = LPCREBARBANDINFOW;
  2050. {$ELSE}
  2051. REBARBANDINFO = REBARBANDINFOA;
  2052. LPREBARBANDINFO = LPREBARBANDINFOA;
  2053. LPCREBARBANDINFO = LPCREBARBANDINFOA;
  2054. TRebarBandInfo = REBARBANDINFO;
  2055. PRebarBandInfo = ^LPREBARBANDINFO;
  2056. {$ENDIF}
  2057. CONST
  2058. {$IFDEF UNICODE}
  2059. REBARBANDINFO_V3_SIZE = REBARBANDINFOW_V3_SIZE;
  2060. {$ELSE}
  2061. REBARBANDINFO_V3_SIZE = REBARBANDINFOA_V3_SIZE;
  2062. {$ENDIF}
  2063. RB_INSERTBANDA = (WM_USER + 1);
  2064. RB_DELETEBAND = (WM_USER + 2);
  2065. RB_GETBARINFO = (WM_USER + 3);
  2066. RB_SETBARINFO = (WM_USER + 4);
  2067. {$ifdef IE4plus}
  2068. RB_GETBANDINFO = (WM_USER + 5);
  2069. RB_GETBANDINFO_PRE_IE4 = (WM_USER + 5);
  2070. {$ENDIF}
  2071. RB_SETBANDINFOA = (WM_USER + 6);
  2072. RB_SETPARENT = (WM_USER + 7);
  2073. {$ifdef ie4plus}
  2074. RB_HITTEST = (WM_USER + 8);
  2075. RB_GETRECT = (WM_USER + 9);
  2076. {$ENDIF}
  2077. RB_INSERTBANDW = (WM_USER + 10);
  2078. RB_SETBANDINFOW = (WM_USER + 11);
  2079. RB_GETBANDCOUNT = (WM_USER + 12);
  2080. RB_GETROWCOUNT = (WM_USER + 13);
  2081. RB_GETROWHEIGHT = (WM_USER + 14);
  2082. {$ifdef ie4plus}
  2083. RB_IDTOINDEX = (WM_USER + 16); // wParam == id
  2084. RB_GETTOOLTIPS = (WM_USER + 17);
  2085. RB_SETTOOLTIPS = (WM_USER + 18);
  2086. RB_SETBKCOLOR = (WM_USER + 19); // sets the default BK color
  2087. RB_GETBKCOLOR = (WM_USER + 20); // defaults to CLR_NONE
  2088. RB_SETTEXTCOLOR = (WM_USER + 21);
  2089. RB_GETTEXTCOLOR = (WM_USER + 22); // defaults to 0x00000000
  2090. {$ifdef Win32XP}
  2091. RBSTR_CHANGERECT = $0001; // flags for RB_SIZETORECT
  2092. {$ENDIF}
  2093. RB_SIZETORECT = (WM_USER + 23); // resize the rebar/break bands and such to this rect (lparam)
  2094. {$ENDIF} // _WIN32_IE >= 0x0400
  2095. RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME; // lParam is color scheme
  2096. RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME; // fills in COLORSCHEME pointed to by lParam
  2097. {$IFDEF UNICODE}
  2098. RB_INSERTBAND = RB_INSERTBANDW;
  2099. RB_SETBANDINFO = RB_SETBANDINFOW;
  2100. {$ELSE}
  2101. RB_INSERTBAND = RB_INSERTBANDA;
  2102. RB_SETBANDINFO = RB_SETBANDINFOA;
  2103. {$ENDIF}
  2104. {$ifdef ie4plus}
  2105. // for manual drag control
  2106. // lparam == cursor pos
  2107. // -1 means do it yourself.
  2108. // -2 means use what you had saved before
  2109. CONST
  2110. RB_BEGINDRAG = (WM_USER + 24);
  2111. RB_ENDDRAG = (WM_USER + 25);
  2112. RB_DRAGMOVE = (WM_USER + 26);
  2113. RB_GETBARHEIGHT = (WM_USER + 27);
  2114. RB_GETBANDINFOW = (WM_USER + 28);
  2115. RB_GETBANDINFOA = (WM_USER + 29);
  2116. //TYPE
  2117. {$IFDEF UNICODE}
  2118. // RB_GETBANDINFO = RB_GETBANDINFOW;
  2119. {$ELSE}
  2120. // RB_GETBANDINFO = RB_GETBANDINFOA;
  2121. {$ENDIF}
  2122. CONST
  2123. RB_MINIMIZEBAND = (WM_USER + 30);
  2124. RB_MAXIMIZEBAND = (WM_USER + 31);
  2125. RB_GETDROPTARGET = (CCM_GETDROPTARGET);
  2126. RB_GETBANDBORDERS = (WM_USER + 34); // returns in lparam = lprc the amount of edges added to band wparam
  2127. RB_SHOWBAND = (WM_USER + 35); // show/hide band
  2128. RB_SETPALETTE = (WM_USER + 37);
  2129. RB_GETPALETTE = (WM_USER + 38);
  2130. RB_MOVEBAND = (WM_USER + 39);
  2131. RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  2132. RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  2133. {$ENDIF} // _WIN32_IE >= 0x0400
  2134. {$ifdef win32xp}
  2135. RB_GETBANDMARGINS = (WM_USER + 40);
  2136. RB_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
  2137. {$ENDIF}
  2138. {$ifdef win32vista}
  2139. RB_SETEXTENDEDSTYLE = (WM_USER + 41);
  2140. RB_GETEXTENDEDSTYLE = (WM_USER + 42);
  2141. {$endif}
  2142. {$ifdef ie5plus}
  2143. RB_PUSHCHEVRON = (WM_USER + 43);
  2144. {$ENDIF} // _WIN32_IE >= 0x0500
  2145. {$ifdef win32vista}
  2146. RB_SETBANDWIDTH = (WM_USER + 44); // set width for docked band
  2147. {$endif}
  2148. RBN_HEIGHTCHANGE = (RBN_FIRST - 0);
  2149. {$ifdef ie4plus}
  2150. RBN_GETOBJECT = (RBN_FIRST - 1);
  2151. RBN_LAYOUTCHANGED = (RBN_FIRST - 2);
  2152. RBN_AUTOSIZE = (RBN_FIRST - 3);
  2153. RBN_BEGINDRAG = (RBN_FIRST - 4);
  2154. RBN_ENDDRAG = (RBN_FIRST - 5);
  2155. RBN_DELETINGBAND = (RBN_FIRST - 6); // Uses NMREBAR
  2156. RBN_DELETEDBAND = (RBN_FIRST - 7); // Uses NMREBAR
  2157. RBN_CHILDSIZE = (RBN_FIRST - 8);
  2158. {$ifdef ie5plus}
  2159. RBN_CHEVRONPUSHED = (RBN_FIRST - 10);
  2160. {$ENDIF} // _WIN32_IE >= 0x0500
  2161. {$ifdef win32vista}
  2162. RBN_SPLITTERDRAG = (RBN_FIRST - 11);
  2163. {$endif}
  2164. {$ifdef ie5plus}
  2165. RBN_MINMAX = (RBN_FIRST - 21);
  2166. {$ENDIF}
  2167. {$ifdef Win32XP}
  2168. RBN_AUTOBREAK = (RBN_FIRST - 22);
  2169. {$ENDIF}
  2170. TYPE
  2171. tagNMREBARCHILDSIZE = Record
  2172. hdr : NMHDR;
  2173. uBand : UINT;
  2174. wID : UINT;
  2175. rcChild : RECT;
  2176. rcBand : RECT;
  2177. END;
  2178. NMREBARCHILDSIZE = tagNMREBARCHILDSIZE;
  2179. LPNMREBARCHILDSIZE = ^tagNMREBARCHILDSIZE;
  2180. TNMREBARCHILDSIZE = tagNMREBARCHILDSIZE;
  2181. PNMREBARCHILDSIZE = ^tagNMREBARCHILDSIZE;
  2182. tagNMREBAR = Record
  2183. hdr : NMHDR;
  2184. dwMask : DWORD; // RBNM_*
  2185. uBand : UINT;
  2186. fStyle : UINT;
  2187. wID : UINT;
  2188. lParam : LPARAM;
  2189. END;
  2190. NMREBAR = tagNMREBAR;
  2191. LPNMREBAR = ^tagNMREBAR;
  2192. TNMREBAR = tagNMREBAR;
  2193. PNMREBAR = ^tagNMREBAR;
  2194. // Mask flags for NMREBAR
  2195. CONST
  2196. RBNM_ID = $00000001;
  2197. RBNM_STYLE = $00000002;
  2198. RBNM_LPARAM = $00000004;
  2199. TYPE
  2200. tagNMRBAUTOSIZE = Record
  2201. hdr : NMHDR;
  2202. fChanged : BOOL;
  2203. rcTarget : RECT;
  2204. rcActual : RECT;
  2205. END;
  2206. NMRBAUTOSIZE = tagNMRBAUTOSIZE;
  2207. LPNMRBAUTOSIZE = ^tagNMRBAUTOSIZE;
  2208. TNMRBAUTOSIZE = tagNMRBAUTOSIZE;
  2209. PNMRBAUTOSIZE = ^tagNMRBAUTOSIZE;
  2210. {$ifdef ie5plus}
  2211. tagNMREBARCHEVRON = Record
  2212. hdr : NMHDR;
  2213. uBand : UINT;
  2214. wID : UINT;
  2215. lParam : LPARAM;
  2216. rc : RECT;
  2217. lParamNM : LPARAM;
  2218. END;
  2219. NMREBARCHEVRON = tagNMREBARCHEVRON;
  2220. LPNMREBARCHEVRON = ^tagNMREBARCHEVRON;
  2221. TNMREBARCHEVRON = tagNMREBARCHEVRON;
  2222. PNMREBARCHEVRON = ^tagNMREBARCHEVRON;
  2223. {$ENDIF}
  2224. {$ifdef win32vista}
  2225. tagNMREBARSPLITTER = record
  2226. hdr: NMHDR;
  2227. rcSizing: RECT;
  2228. end;
  2229. NMREBARSPLITTER = tagNMREBARSPLITTER;
  2230. LPNMREBARSPLITTER = ^tagNMREBARSPLITTER;
  2231. TNMREBARSPLITTER = tagNMREBARSPLITTER;
  2232. PNMREBARSPLITTER = LPNMREBARSPLITTER;
  2233. {$endif}
  2234. {$ifdef Win32XP}
  2235. CONST
  2236. RBAB_AUTOSIZE = $0001; // These are not flags and are all mutually exclusive
  2237. RBAB_ADDBAND = $0002;
  2238. TYPE
  2239. tagNMREBARAUTOBREAK = Record
  2240. hdr : NMHDR;
  2241. uBand : UINT;
  2242. wID : UINT;
  2243. lParam : LPARAM;
  2244. uMsg : UINT;
  2245. fStyleCurrent : UINT;
  2246. fAutoBreak : BOOL;
  2247. END;
  2248. NMREBARAUTOBREAK = tagNMREBARAUTOBREAK;
  2249. LPNMREBARAUTOBREAK = ^tagNMREBARAUTOBREAK;
  2250. TNMREBARAUTOBREAK = tagNMREBARAUTOBREAK;
  2251. PNMREBARAUTOBREAK = ^tagNMREBARAUTOBREAK;
  2252. {$ENDIF}
  2253. CONST
  2254. RBHT_NOWHERE = $0001;
  2255. RBHT_CAPTION = $0002;
  2256. RBHT_CLIENT = $0003;
  2257. RBHT_GRABBER = $0004;
  2258. {$ifdef ie5plus}
  2259. RBHT_CHEVRON = $0008;
  2260. {$ENDIF}
  2261. {$ifdef win32vista}
  2262. RBHT_SPLITTER = $0010;
  2263. {$endif}
  2264. TYPE
  2265. _RB_HITTESTINFO = Record
  2266. pt : POINT;
  2267. flags : UINT;
  2268. iBand : cint;
  2269. END;
  2270. RBHITTESTINFO = _RB_HITTESTINFO;
  2271. LPRBHITTESTINFO = ^_RB_HITTESTINFO;
  2272. TRB_HITTESTINFO = _RB_HITTESTINFO;
  2273. PRB_HITTESTINFO = ^_RB_HITTESTINFO;
  2274. PRBHitTestInfo = PRB_HITTESTINFO;
  2275. TRBHitTestInfo = TRB_HITTESTINFO;
  2276. {$ENDIF} // _WIN32_IE >= 0x0400
  2277. {$ENDIF} // NOREBAR
  2278. {$ENDIF} // _WIN32_IE >= 0x0300
  2279. //====== TOOLTIPS CONTROL =====================================================
  2280. {$IFNDEF NOTOOLTIPS}
  2281. {$IFDEF _WIN32}
  2282. CONST
  2283. TOOLTIPS_CLASSW = {L}'tooltips_class32'#$0000;
  2284. TOOLTIPS_CLASSA = 'tooltips_class32';
  2285. {$IFDEF UNICODE}
  2286. TOOLTIPS_CLASS = TOOLTIPS_CLASSW;
  2287. {$ELSE}
  2288. TOOLTIPS_CLASS = TOOLTIPS_CLASSA;
  2289. {$ENDIF}
  2290. {$ELSE}
  2291. CONST
  2292. TOOLTIPS_CLASS = 'tooltips_class';
  2293. {$ENDIF}
  2294. TYPE
  2295. tagTOOLINFOA = Record
  2296. cbSize : UINT;
  2297. uFlags : UINT;
  2298. hwnd : HWND;
  2299. uId : UINT_PTR;
  2300. rect : RECT;
  2301. hinst : HINST;
  2302. lpszText : LPSTR;
  2303. {$ifdef ie3plus}
  2304. lParam : LPARAM;
  2305. {$ENDIF}
  2306. {$ifdef Win32XP}
  2307. lpReserved : Pointer;
  2308. {$ENDIF}
  2309. END;
  2310. TTTOOLINFOA = tagTOOLINFOA;
  2311. PTOOLINFOA = {near} ^tagTOOLINFOA;
  2312. LPTTTOOLINFOA = ^tagTOOLINFOA;
  2313. TTOOLINFOA = tagTOOLINFOA;
  2314. LPTOOLINFOA = ^tagTOOLINFOA;
  2315. tagTOOLINFOW = Record
  2316. cbSize : UINT;
  2317. uFlags : UINT;
  2318. hwnd : HWND;
  2319. uId : UINT_PTR;
  2320. rect : RECT;
  2321. hinst : HINST;
  2322. lpszText : LPWSTR;
  2323. {$ifdef ie3plus}
  2324. lParam : LPARAM;
  2325. {$ENDIF}
  2326. {$ifdef Win32XP}
  2327. lpReserved : Pointer;
  2328. {$ENDIF}
  2329. END;
  2330. TTTOOLINFOW = tagTOOLINFOW;
  2331. PTOOLINFOW = {near} ^tagTOOLINFOW;
  2332. LPTTTOOLINFOW = ^tagTOOLINFOW;
  2333. TTOOLINFOW = tagTOOLINFOW;
  2334. LPTOOLINFOW = ^tagTOOLINFOW;
  2335. {$IFDEF UNICODE}
  2336. TTTOOLINFO = TTTOOLINFOW;
  2337. PTOOLINFO = PTOOLINFOW;
  2338. LPTTTOOLINFO = LPTTTOOLINFOW;
  2339. // TTTOOLINFO_V1_SIZE = TTTOOLINFOW_V1_SIZE;
  2340. {$ELSE}
  2341. PTOOLINFO = PTOOLINFOA;
  2342. TTTOOLINFO = TTTOOLINFOA;
  2343. LPTTTOOLINFO = LPTTTOOLINFOA;
  2344. // TTTOOLINFO_V1_SIZE = TTTOOLINFOA_V1_SIZE;
  2345. {$ENDIF}
  2346. TYPE
  2347. {$ifdef ie3plus}
  2348. // LPTOOLINFOA = LPTTTOOLINFOA;
  2349. // LPTOOLINFOW = LPTTTOOLINFOW;
  2350. TOOLINFOA = TTTOOLINFOA;
  2351. TOOLINFOW = TTTOOLINFOW;
  2352. {$ELSE}
  2353. // TTTOOLINFOA = TOOLINFOA;
  2354. // LPTTTOOLINFOA = LPTOOLINFOA;
  2355. // TTTOOLINFOW = TOOLINFOW;
  2356. // LPTTTOOLINFOW = LPTOOLINFOW;
  2357. {$ENDIF}
  2358. LPTOOLINFO = LPTTTOOLINFO;
  2359. TOOLINFO = TTTOOLINFO;
  2360. // #define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText)
  2361. // #define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText)
  2362. // #define TTTOOLINFOA_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lParam)
  2363. // #define TTTOOLINFOW_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lParam)
  2364. // #define TTTOOLINFOA_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpReserved)
  2365. // #define TTTOOLINFOW_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpReserved)
  2366. CONST
  2367. // begin_r_commctrl
  2368. TTS_ALWAYSTIP = $01;
  2369. TTS_NOPREFIX = $02;
  2370. {$ifdef ie5plus}
  2371. TTS_NOANIMATE = $10;
  2372. TTS_NOFADE = $20;
  2373. TTS_BALLOON = $40;
  2374. TTS_CLOSE = $80;
  2375. {$ENDIF}
  2376. {$ifdef win32vista}
  2377. TTS_USEVISUALSTYLE = $100; // Use themed hyperlinks
  2378. {$endif}
  2379. // end_r_commctrl
  2380. TTF_IDISHWND = $0001;
  2381. // Use this to center around trackpoint in trackmode
  2382. // -OR- to center around tool in normal mode.
  2383. // Use TTF_ABSOLUTE to place the tip exactly at the track coords when
  2384. // in tracking mode. TTF_ABSOLUTE can be used in conjunction with TTF_CENTERTIP
  2385. // to center the tip absolutely about the track point.
  2386. TTF_CENTERTIP = $0002;
  2387. TTF_RTLREADING = $0004;
  2388. TTF_SUBCLASS = $0010;
  2389. {$ifdef ie3plus}
  2390. TTF_TRACK = $0020;
  2391. TTF_ABSOLUTE = $0080;
  2392. TTF_TRANSPARENT = $0100;
  2393. {$ifdef ie501plus}
  2394. TTF_PARSELINKS = $1000;
  2395. {$ENDIF} // _WIN32_IE >= 0x0501
  2396. TTF_DI_SETITEM = $8000; // valid only on the TTN_NEEDTEXT callback
  2397. {$ENDIF} // _WIN32_IE >= 0x0300
  2398. TTDT_AUTOMATIC = 0;
  2399. TTDT_RESHOW = 1;
  2400. TTDT_AUTOPOP = 2;
  2401. TTDT_INITIAL = 3;
  2402. // ToolTip Icons (Set with TTM_SETTITLE)
  2403. TTI_NONE = 0;
  2404. TTI_INFO = 1;
  2405. TTI_WARNING = 2;
  2406. TTI_ERROR = 3;
  2407. {$ifdef win32vista}
  2408. TTI_INFO_LARGE = 4;
  2409. TTI_WARNING_LARGE = 5;
  2410. TTI_ERROR_LARGE = 6;
  2411. {$endif}
  2412. // Tool Tip Messages
  2413. TTM_ACTIVATE = (WM_USER + 1);
  2414. TTM_SETDELAYTIME = (WM_USER + 3);
  2415. TTM_ADDTOOLA = (WM_USER + 4);
  2416. TTM_ADDTOOLW = (WM_USER + 50);
  2417. TTM_DELTOOLA = (WM_USER + 5);
  2418. TTM_DELTOOLW = (WM_USER + 51);
  2419. TTM_NEWTOOLRECTA = (WM_USER + 6);
  2420. TTM_NEWTOOLRECTW = (WM_USER + 52);
  2421. TTM_RELAYEVENT = (WM_USER + 7);
  2422. TTM_GETTOOLINFOA = (WM_USER + 8);
  2423. TTM_GETTOOLINFOW = (WM_USER + 53);
  2424. TTM_SETTOOLINFOA = (WM_USER + 9);
  2425. TTM_SETTOOLINFOW = (WM_USER + 54);
  2426. TTM_HITTESTA = (WM_USER + 10);
  2427. TTM_HITTESTW = (WM_USER + 55);
  2428. TTM_GETTEXTA = (WM_USER + 11);
  2429. TTM_GETTEXTW = (WM_USER + 56);
  2430. TTM_UPDATETIPTEXTA = (WM_USER + 12);
  2431. TTM_UPDATETIPTEXTW = (WM_USER + 57);
  2432. TTM_GETTOOLCOUNT = (WM_USER + 13);
  2433. TTM_ENUMTOOLSA = (WM_USER + 14);
  2434. TTM_ENUMTOOLSW = (WM_USER + 58);
  2435. TTM_GETCURRENTTOOLA = (WM_USER + 15);
  2436. TTM_GETCURRENTTOOLW = (WM_USER + 59);
  2437. TTM_WINDOWFROMPOINT = (WM_USER + 16);
  2438. {$ifdef ie3plus}
  2439. TTM_TRACKACTIVATE = (WM_USER + 17); // wParam = TRUE/FALSE start end lparam = LPTOOLINFO
  2440. TTM_TRACKPOSITION = (WM_USER + 18); // lParam = dwPos
  2441. TTM_SETTIPBKCOLOR = (WM_USER + 19);
  2442. TTM_SETTIPTEXTCOLOR = (WM_USER + 20);
  2443. TTM_GETDELAYTIME = (WM_USER + 21);
  2444. TTM_GETTIPBKCOLOR = (WM_USER + 22);
  2445. TTM_GETTIPTEXTCOLOR = (WM_USER + 23);
  2446. TTM_SETMAXTIPWIDTH = (WM_USER + 24);
  2447. TTM_GETMAXTIPWIDTH = (WM_USER + 25);
  2448. TTM_SETMARGIN = (WM_USER + 26); // lParam = lprc
  2449. TTM_GETMARGIN = (WM_USER + 27); // lParam = lprc
  2450. TTM_POP = (WM_USER + 28);
  2451. {$ENDIF}
  2452. {$ifdef ie4plus}
  2453. TTM_UPDATE = (WM_USER + 29);
  2454. {$ENDIF}
  2455. {$ifdef ie5plus}
  2456. TTM_GETBUBBLESIZE = (WM_USER + 30);
  2457. TTM_ADJUSTRECT = (WM_USER + 31);
  2458. TTM_SETTITLEA = (WM_USER + 32); // wParam = TTI_*, lParam = char* szTitle
  2459. TTM_SETTITLEW = (WM_USER + 33); // wParam = TTI_*, lParam = wchar* szTitle
  2460. {$ENDIF}
  2461. {$ifdef Win32XP}
  2462. TTM_POPUP = (WM_USER + 34);
  2463. TTM_GETTITLE = (WM_USER + 35); // wParam = 0, lParam = TTGETTITLE*
  2464. TYPE
  2465. _TTGETTITLE = Record
  2466. dwSize : DWORD;
  2467. uTitleBitmap : UINT;
  2468. cch : UINT;
  2469. pszTitle : PWCHAR;
  2470. END;
  2471. TTGETTITLE = _TTGETTITLE;
  2472. PTTGETTITLE = ^_TTGETTITLE;
  2473. TTTGETTITLE = _TTGETTITLE;
  2474. PTTTGETTITLE = ^TTTGETTITLE;
  2475. {$ENDIF}
  2476. const
  2477. {$IFDEF UNICODE}
  2478. TTM_ADDTOOL = TTM_ADDTOOLW;
  2479. TTM_DELTOOL = TTM_DELTOOLW;
  2480. TTM_NEWTOOLRECT = TTM_NEWTOOLRECTW;
  2481. TTM_GETTOOLINFO = TTM_GETTOOLINFOW;
  2482. TTM_SETTOOLINFO = TTM_SETTOOLINFOW;
  2483. TTM_HITTEST = TTM_HITTESTW;
  2484. TTM_GETTEXT = TTM_GETTEXTW;
  2485. TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTW;
  2486. TTM_ENUMTOOLS = TTM_ENUMTOOLSW;
  2487. TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLW;
  2488. {$ifdef ie5plus}
  2489. TTM_SETTITLE = TTM_SETTITLEW;
  2490. {$ENDIF}
  2491. {$ELSE}
  2492. TTM_ADDTOOL = TTM_ADDTOOLA;
  2493. TTM_DELTOOL = TTM_DELTOOLA;
  2494. TTM_NEWTOOLRECT = TTM_NEWTOOLRECTA;
  2495. TTM_GETTOOLINFO = TTM_GETTOOLINFOA;
  2496. TTM_SETTOOLINFO = TTM_SETTOOLINFOA;
  2497. TTM_HITTEST = TTM_HITTESTA;
  2498. TTM_GETTEXT = TTM_GETTEXTA;
  2499. TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTA;
  2500. TTM_ENUMTOOLS = TTM_ENUMTOOLSA;
  2501. TTM_GETCURRENTTOOL = TTM_GETCURRENTTOOLA;
  2502. {$ifdef ie5plus}
  2503. TTM_SETTITLE = TTM_SETTITLEA;
  2504. {$ENDIF}
  2505. {$ENDIF}
  2506. {$ifdef win32xp}
  2507. CONST
  2508. TTM_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
  2509. {$ENDIF}
  2510. TYPE
  2511. _TT_HITTESTINFOA = Record
  2512. hwnd : HWND;
  2513. pt : POINT;
  2514. ti : TTTOOLINFOA;
  2515. END;
  2516. TTHITTESTINFOA = _TT_HITTESTINFOA;
  2517. LPTTHITTESTINFOA = ^_TT_HITTESTINFOA;
  2518. TTT_HITTESTINFOA = _TT_HITTESTINFOA;
  2519. PTT_HITTESTINFOA = ^_TT_HITTESTINFOA;
  2520. _TT_HITTESTINFOW = Record
  2521. hwnd : HWND;
  2522. pt : POINT;
  2523. ti : TTTOOLINFOW;
  2524. END;
  2525. TTHITTESTINFOW = _TT_HITTESTINFOW;
  2526. LPTTHITTESTINFOW = ^_TT_HITTESTINFOW;
  2527. TTT_HITTESTINFOW = _TT_HITTESTINFOW;
  2528. PTT_HITTESTINFOW = ^_TT_HITTESTINFOW;
  2529. {$IFDEF UNICODE}
  2530. TTHITTESTINFO = TTHITTESTINFOW;
  2531. LPTTHITTESTINFO = LPTTHITTESTINFOW;
  2532. {$ELSE}
  2533. TTHITTESTINFO = TTHITTESTINFOA;
  2534. LPTTHITTESTINFO = LPTTHITTESTINFOA;
  2535. {$ENDIF}
  2536. LPHITTESTINFO = LPTTHITTESTINFO;
  2537. {$ifdef ie3plus}
  2538. LPHITTESTINFOW = LPTTHITTESTINFOW;
  2539. LPHITTESTINFOA = LPTTHITTESTINFOA;
  2540. {$ELSE}
  2541. // LPTTHITTESTINFOA = LPHITTESTINFOA;
  2542. // LPTTHITTESTINFOW = LPHITTESTINFOW;
  2543. {$ENDIF}
  2544. CONST
  2545. TTN_GETDISPINFOA = (TTN_FIRST - 0);
  2546. TTN_GETDISPINFOW = (TTN_FIRST - 10);
  2547. TTN_SHOW = (TTN_FIRST - 1);
  2548. TTN_POP = (TTN_FIRST - 2);
  2549. TTN_LINKCLICK = (TTN_FIRST - 3);
  2550. CONST
  2551. {$IFDEF UNICODE}
  2552. TTN_GETDISPINFO = TTN_GETDISPINFOW;
  2553. {$ELSE}
  2554. TTN_GETDISPINFO = TTN_GETDISPINFOA;
  2555. {$ENDIF}
  2556. CONST
  2557. TTN_NEEDTEXT = TTN_GETDISPINFO;
  2558. TTN_NEEDTEXTA = TTN_GETDISPINFOA;
  2559. TTN_NEEDTEXTW = TTN_GETDISPINFOW;
  2560. TYPE
  2561. // #define NMTTDISPINFOA_V1_SIZE CCSIZEOF_STRUCT(NMTTDISPINFOA, uFlags)
  2562. // #define NMTTDISPINFOW_V1_SIZE CCSIZEOF_STRUCT(NMTTDISPINFOW, uFlags)
  2563. tagNMTTDISPINFOA = Record
  2564. hdr : NMHDR;
  2565. lpszText : LPSTR;
  2566. szText : Array[0..79] of char;
  2567. hinst : HINST;
  2568. uFlags : UINT;
  2569. {$ifdef ie3plus}
  2570. lParam : LPARAM;
  2571. {$ENDIF}
  2572. END;
  2573. NMTTDISPINFOA = tagNMTTDISPINFOA;
  2574. LPNMTTDISPINFOA = ^tagNMTTDISPINFOA;
  2575. TNMTTDISPINFOA = tagNMTTDISPINFOA;
  2576. PNMTTDISPINFOA = ^tagNMTTDISPINFOA;
  2577. tagNMTTDISPINFOW = Record
  2578. hdr : NMHDR;
  2579. lpszText : LPWSTR;
  2580. szText : Array[0..79] of WCHAR;
  2581. hinst : HINST;
  2582. uFlags : UINT;
  2583. {$ifdef ie3plus}
  2584. lParam : LPARAM;
  2585. {$ENDIF}
  2586. END;
  2587. NMTTDISPINFOW = tagNMTTDISPINFOW;
  2588. LPNMTTDISPINFOW = ^tagNMTTDISPINFOW;
  2589. TNMTTDISPINFOW = tagNMTTDISPINFOW;
  2590. PNMTTDISPINFOW = ^tagNMTTDISPINFOW;
  2591. {$ifdef ie3plus}
  2592. TOOLTIPTEXTW = NMTTDISPINFOW;
  2593. TOOLTIPTEXTA = NMTTDISPINFOA;
  2594. LPTOOLTIPTEXTA = LPNMTTDISPINFOA;
  2595. LPTOOLTIPTEXTW = LPNMTTDISPINFOW;
  2596. TTOOLTIPTEXTW = NMTTDISPINFOW;
  2597. PTOOLTIPTEXTW = LPNMTTDISPINFOW;
  2598. {$ELSE}
  2599. // tagNMTTDISPINFOA = tagTOOLTIPTEXTA;
  2600. NMTTDISPINFOA = TOOLTIPTEXTA;
  2601. // LPNMTTDISPINFOA = LPTOOLTIPTEXTA;
  2602. tagNMTTDISPINFOW = tagTOOLTIPTEXTW;
  2603. NMTTDISPINFOW = TOOLTIPTEXTW;
  2604. LPNMTTDISPINFOW = LPTOOLTIPTEXTW;
  2605. {$ENDIF}
  2606. TYPE
  2607. {$IFDEF UNICODE}
  2608. NMTTDISPINFO = NMTTDISPINFOW;
  2609. LPNMTTDISPINFO = LPNMTTDISPINFOW;
  2610. // NMTTDISPINFO_V1_SIZE = NMTTDISPINFOW_V1_SIZE;
  2611. {$ELSE}
  2612. NMTTDISPINFO = NMTTDISPINFOA;
  2613. LPNMTTDISPINFO = LPNMTTDISPINFOA;
  2614. // NMTTDISPINFO_V1_SIZE = NMTTDISPINFOA_V1_SIZE;
  2615. {$ENDIF}
  2616. TOOLTIPTEXT = NMTTDISPINFO;
  2617. LPTOOLTIPTEXT = LPNMTTDISPINFO;
  2618. {$ENDIF} // NOTOOLTIPS
  2619. //====== STATUS BAR CONTROL ===================================================
  2620. {$IFNDEF NOSTATUSBAR}
  2621. // begin_r_commctrl
  2622. CONST
  2623. SBARS_SIZEGRIP = $0100;
  2624. {$ifdef ie5plus}
  2625. SBARS_TOOLTIPS = $0800;
  2626. {$ENDIF}
  2627. {$ifdef ie4plus}
  2628. // this is a status bar flag, preference to SBARS_TOOLTIPS
  2629. SBT_TOOLTIPS = $0800;
  2630. {$ENDIF}
  2631. // end_r_commctrl
  2632. procedure DrawStatusTextA(hDC:HDC;lprc:LPRECT;pszText:LPCSTR;uFlags:UINT); stdcall; external commctrldll name 'DrawStatusTextA';
  2633. Procedure DrawStatusTextW(hDC:HDC;lprc:LPRECT;pszText:LPCWSTR;uFlags:UINT); stdcall; external commctrldll name 'DrawStatusTextW';
  2634. function CreateStatusWindowA(style:LONG;lpszText:LPCSTR;hwndParent:HWND;wID:UINT):HWND; stdcall; external commctrldll name 'CreateStatusWindowA';
  2635. function CreateStatusWindowW(style:LONG;lpszText:LPCWSTR;hwndParent:HWND;wID:UINT):HWND; stdcall; external commctrldll name 'CreateStatusWindowW';
  2636. function CreateStatusWindow(style:LONG;lpszText:LPCSTR;hwndParent:HWND;wID:UINT):HWND; stdcall; external commctrldll name 'CreateStatusWindowA';
  2637. procedure DrawStatusText(hDC:HDC;lprc:LPRECT;pszText:LPCSTR;uFlags:UINT); stdcall; external commctrldll name 'DrawStatusTextA';
  2638. function CreateStatusWindow(style:LONG;lpszText:LPCWSTR;hwndParent:HWND;wID:UINT):HWND; stdcall; external commctrldll name 'CreateStatusWindowW';
  2639. Procedure DrawStatusText(hDC:HDC;lprc:LPRECT;pszText:LPCWSTR;uFlags:UINT); stdcall; external commctrldll name 'DrawStatusTextW';
  2640. CONST
  2641. {$IFDEF _WIN32}
  2642. STATUSCLASSNAMEW = {L}'msctls_statusbar32'#$0000;
  2643. STATUSCLASSNAMEA = 'msctls_statusbar32';
  2644. {$IFDEF UNICODE}
  2645. STATUSCLASSNAME = STATUSCLASSNAMEW;
  2646. {$ELSE}
  2647. STATUSCLASSNAME = STATUSCLASSNAMEA;
  2648. {$ENDIF}
  2649. {$ELSE}
  2650. STATUSCLASSNAME = 'msctls_statusbar';
  2651. {$ENDIF}
  2652. SB_SETTEXTA = (WM_USER+1);
  2653. SB_SETTEXTW = (WM_USER+11);
  2654. SB_GETTEXTA = (WM_USER+2);
  2655. SB_GETTEXTW = (WM_USER+13);
  2656. SB_GETTEXTLENGTHA = (WM_USER+3);
  2657. SB_GETTEXTLENGTHW = (WM_USER+12);
  2658. SB_SETPARTS = (WM_USER+4);
  2659. SB_GETPARTS = (WM_USER+6);
  2660. SB_GETBORDERS = (WM_USER+7);
  2661. SB_SETMINHEIGHT = (WM_USER+8);
  2662. SB_SIMPLE = (WM_USER+9);
  2663. SB_GETRECT = (WM_USER+10);
  2664. {$ifdef ie3plus}
  2665. SB_ISSIMPLE = (WM_USER+14);
  2666. {$ENDIF}
  2667. {$ifdef ie4plus}
  2668. SB_SETICON = (WM_USER+15);
  2669. SB_SETTIPTEXTA = (WM_USER+16);
  2670. SB_SETTIPTEXTW = (WM_USER+17);
  2671. SB_GETTIPTEXTA = (WM_USER+18);
  2672. SB_GETTIPTEXTW = (WM_USER+19);
  2673. SB_GETICON = (WM_USER+20);
  2674. SB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  2675. SB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  2676. {$ENDIF}
  2677. {$IFDEF UNICODE}
  2678. SB_GETTEXT = SB_GETTEXTW;
  2679. SB_SETTEXT = SB_SETTEXTW;
  2680. SB_GETTEXTLENGTH = SB_GETTEXTLENGTHW;
  2681. {$ifdef ie4plus}
  2682. SB_SETTIPTEXT = SB_SETTIPTEXTW;
  2683. SB_GETTIPTEXT = SB_GETTIPTEXTW;
  2684. {$ENDIF}
  2685. {$ELSE}
  2686. SB_GETTEXT = SB_GETTEXTA;
  2687. SB_SETTEXT = SB_SETTEXTA;
  2688. SB_GETTEXTLENGTH = SB_GETTEXTLENGTHA;
  2689. {$ifdef ie4plus}
  2690. SB_SETTIPTEXT = SB_SETTIPTEXTA;
  2691. SB_GETTIPTEXT = SB_GETTIPTEXTA;
  2692. {$ENDIF}
  2693. {$ENDIF}
  2694. SBT_OWNERDRAW = $1000;
  2695. SBT_NOBORDERS = $0100;
  2696. SBT_POPOUT = $0200;
  2697. SBT_RTLREADING = $0400;
  2698. {$ifdef ie5plus}
  2699. SBT_NOTABPARSING = $0800;
  2700. {$ENDIF}
  2701. SB_SETBKCOLOR = CCM_SETBKCOLOR; // lParam = bkColor
  2702. /// status bar notifications
  2703. {$ifdef ie4plus}
  2704. SBN_SIMPLEMODECHANGE = (SBN_FIRST - 0);
  2705. {$ENDIF}
  2706. {$ifdef ie5plus}
  2707. // refers to the data saved for simple mode
  2708. SB_SIMPLEID = $00ff;
  2709. {$ENDIF}
  2710. {$ENDIF} // NOSTATUSBAR
  2711. //====== MENU HELP ============================================================
  2712. {$IFNDEF NOMENUHELP}
  2713. Procedure MenuHelp(uMsg:UINT;wParam:WPARAM;lParam:LPARAM;hMainMenu:HMENU;hInst:HINST;hwndStatus:HWND;lpwIDs:PUINT); stdcall; external commctrldll name 'MenuHelp';
  2714. function ShowHideMenuCtl(hWnd:HWND;uFlags:UINT_PTR;lpInfo:LPINT):BOOL; stdcall; external commctrldll name 'ShowHideMenuCtl';
  2715. Procedure GetEffectiveClientRect(hWnd:HWND;lprc:LPRECT;lpInfo:LPINT); stdcall; external commctrldll name 'GetEffectiveClientRect';
  2716. CONST
  2717. MINSYSCOMMAND = SC_SIZE;
  2718. {$ENDIF}
  2719. //====== TRACKBAR CONTROL =====================================================
  2720. {$IFNDEF NOTRACKBAR}
  2721. CONST
  2722. {$IFDEF _WIN32}
  2723. TRACKBAR_CLASSA = 'msctls_trackbar32';
  2724. TRACKBAR_CLASSW = {L}'msctls_trackbar32'#$0000;
  2725. {$IFDEF UNICODE}
  2726. TRACKBAR_CLASS = TRACKBAR_CLASSW;
  2727. {$ELSE}
  2728. TRACKBAR_CLASS = TRACKBAR_CLASSA;
  2729. {$ENDIF}
  2730. {$ELSE}
  2731. TRACKBAR_CLASS = 'msctls_trackbar';
  2732. {$ENDIF}
  2733. // begin_r_commctrl
  2734. TBS_AUTOTICKS = $0001;
  2735. TBS_VERT = $0002;
  2736. TBS_HORZ = $0000;
  2737. TBS_TOP = $0004;
  2738. TBS_BOTTOM = $0000;
  2739. TBS_LEFT = $0004;
  2740. TBS_RIGHT = $0000;
  2741. TBS_BOTH = $0008;
  2742. TBS_NOTICKS = $0010;
  2743. TBS_ENABLESELRANGE = $0020;
  2744. TBS_FIXEDLENGTH = $0040;
  2745. TBS_NOTHUMB = $0080;
  2746. {$ifdef ie3plus}
  2747. TBS_TOOLTIPS = $0100;
  2748. {$ENDIF}
  2749. {$ifdef ie5plus}
  2750. TBS_REVERSED = $0200; // Accessibility hint: the smaller number (usually the min value) means "high" and the larger number (usually the max value) means "low"
  2751. {$ENDIF}
  2752. {$ifdef ie501plus}
  2753. TBS_DOWNISLEFT = $0400; // Down=Left and Up=Right (default is Down=Right and Up=Left)
  2754. {$ENDIF}
  2755. {$ifdef win32vista}
  2756. TBS_NOTIFYBEFOREMOVE = $0800; // Trackbar should notify parent before repositioning the slider due to user action (enables snapping)
  2757. {$endif}
  2758. {$ifdef NTDDI_VISTA}
  2759. TBS_TRANSPARENTBKGND = $1000; // Background is painted by the parent via WM_PRINTCLIENT
  2760. {$endif}
  2761. // end_r_commctrl
  2762. TBM_GETPOS = (WM_USER);
  2763. TBM_GETRANGEMIN = (WM_USER+1);
  2764. TBM_GETRANGEMAX = (WM_USER+2);
  2765. TBM_GETTIC = (WM_USER+3);
  2766. TBM_SETTIC = (WM_USER+4);
  2767. TBM_SETPOS = (WM_USER+5);
  2768. TBM_SETRANGE = (WM_USER+6);
  2769. TBM_SETRANGEMIN = (WM_USER+7);
  2770. TBM_SETRANGEMAX = (WM_USER+8);
  2771. TBM_CLEARTICS = (WM_USER+9);
  2772. TBM_SETSEL = (WM_USER+10);
  2773. TBM_SETSELSTART = (WM_USER+11);
  2774. TBM_SETSELEND = (WM_USER+12);
  2775. TBM_GETPTICS = (WM_USER+14);
  2776. TBM_GETTICPOS = (WM_USER+15);
  2777. TBM_GETNUMTICS = (WM_USER+16);
  2778. TBM_GETSELSTART = (WM_USER+17);
  2779. TBM_GETSELEND = (WM_USER+18);
  2780. TBM_CLEARSEL = (WM_USER+19);
  2781. TBM_SETTICFREQ = (WM_USER+20);
  2782. TBM_SETPAGESIZE = (WM_USER+21);
  2783. TBM_GETPAGESIZE = (WM_USER+22);
  2784. TBM_SETLINESIZE = (WM_USER+23);
  2785. TBM_GETLINESIZE = (WM_USER+24);
  2786. TBM_GETTHUMBRECT = (WM_USER+25);
  2787. TBM_GETCHANNELRECT = (WM_USER+26);
  2788. TBM_SETTHUMBLENGTH = (WM_USER+27);
  2789. TBM_GETTHUMBLENGTH = (WM_USER+28);
  2790. {$ifdef ie3plus}
  2791. TBM_SETTOOLTIPS = (WM_USER+29);
  2792. TBM_GETTOOLTIPS = (WM_USER+30);
  2793. TBM_SETTIPSIDE = (WM_USER+31);
  2794. // TrackBar Tip Side flags
  2795. TBTS_TOP = 0;
  2796. TBTS_LEFT = 1;
  2797. TBTS_BOTTOM = 2;
  2798. TBTS_RIGHT = 3;
  2799. TBM_SETBUDDY = (WM_USER+32); // wparam = BOOL fLeft; (or right)
  2800. TBM_GETBUDDY = (WM_USER+33); // wparam = BOOL fLeft; (or right)
  2801. {$ENDIF}
  2802. {$ifdef ie4plus}
  2803. TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  2804. TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  2805. {$ENDIF}
  2806. TB_LINEUP = 0;
  2807. TB_LINEDOWN = 1;
  2808. TB_PAGEUP = 2;
  2809. TB_PAGEDOWN = 3;
  2810. TB_THUMBPOSITION = 4;
  2811. TB_THUMBTRACK = 5;
  2812. TB_TOP = 6;
  2813. TB_BOTTOM = 7;
  2814. TB_ENDTRACK = 8;
  2815. {$ifdef ie3plus}
  2816. // custom draw item specs
  2817. TBCD_TICS = $0001;
  2818. TBCD_THUMB = $0002;
  2819. TBCD_CHANNEL = $0003;
  2820. {$ENDIF}
  2821. {$ifdef win32vista}
  2822. TRBN_THUMBPOSCHANGING = (TRBN_FIRST-1);
  2823. {$endif}
  2824. {$ENDIF} // trackbar
  2825. //====== DRAG LIST CONTROL ====================================================
  2826. {$IFNDEF NODRAGLIST}
  2827. TYPE
  2828. tagDRAGLISTINFO = Record
  2829. uNotification : UINT;
  2830. hWnd : HWND;
  2831. ptCursor : POINT;
  2832. END;
  2833. DRAGLISTINFO = tagDRAGLISTINFO;
  2834. LPDRAGLISTINFO = ^tagDRAGLISTINFO;
  2835. TDRAGLISTINFO = tagDRAGLISTINFO;
  2836. PDRAGLISTINFO = ^tagDRAGLISTINFO;
  2837. CONST
  2838. DL_BEGINDRAG = (WM_USER+133);
  2839. DL_DRAGGING = (WM_USER+134);
  2840. DL_DROPPED = (WM_USER+135);
  2841. DL_CANCELDRAG = (WM_USER+136);
  2842. DL_CURSORSET = 0;
  2843. DL_STOPCURSOR = 1;
  2844. DL_COPYCURSOR = 2;
  2845. DL_MOVECURSOR = 3;
  2846. DRAGLISTMSGSTRING = 'commctrl_DragListMsg'; // TEXT("commctrl_DragListMsg");
  2847. function MakeDragList(hLB:HWND):BOOL; stdcall; external commctrldll name 'MakeDragList';
  2848. Procedure DrawInsert(handParent:HWND;hLB:HWND;nItem:cint); stdcall; external commctrldll name 'DrawInsert';
  2849. function LBItemFromPt(hLB:HWND;pt:POINT;bAutoScroll:BOOL):cint; stdcall; external commctrldll name 'LBItemFromPt';
  2850. {$ENDIF}
  2851. //====== UPDOWN CONTROL =======================================================
  2852. {$IFNDEF NOUPDOWN}
  2853. CONST
  2854. {$IFDEF _WIN32}
  2855. UPDOWN_CLASSA = 'msctls_updown32';
  2856. UPDOWN_CLASSW = {L}'msctls_updown32'#$0000;
  2857. {$IFDEF UNICODE}
  2858. UPDOWN_CLASS = UPDOWN_CLASSW;
  2859. {$ELSE}
  2860. UPDOWN_CLASS = UPDOWN_CLASSA;
  2861. {$ENDIF}
  2862. {$ELSE}
  2863. UPDOWN_CLASS = 'msctls_updown';
  2864. {$ENDIF}
  2865. TYPE
  2866. _UDACCEL = Record
  2867. nSec : UINT;
  2868. nInc : UINT;
  2869. END;
  2870. UDACCEL = _UDACCEL;
  2871. LPUDACCEL = ^_UDACCEL;
  2872. TUDACCEL = _UDACCEL;
  2873. PUDACCEL = ^_UDACCEL;
  2874. CONST
  2875. UD_MAXVAL = $7fff;
  2876. UD_MINVAL = (-UD_MAXVAL);
  2877. // begin_r_commctrl
  2878. UDS_WRAP = $0001;
  2879. UDS_SETBUDDYINT = $0002;
  2880. UDS_ALIGNRIGHT = $0004;
  2881. UDS_ALIGNLEFT = $0008;
  2882. UDS_AUTOBUDDY = $0010;
  2883. UDS_ARROWKEYS = $0020;
  2884. UDS_HORZ = $0040;
  2885. UDS_NOTHOUSANDS = $0080;
  2886. {$ifdef ie3plus}
  2887. UDS_HOTTRACK = $0100;
  2888. {$ENDIF}
  2889. // end_r_commctrl
  2890. UDM_SETRANGE = (WM_USER+101);
  2891. UDM_GETRANGE = (WM_USER+102);
  2892. UDM_SETPOS = (WM_USER+103);
  2893. UDM_GETPOS = (WM_USER+104);
  2894. UDM_SETBUDDY = (WM_USER+105);
  2895. UDM_GETBUDDY = (WM_USER+106);
  2896. UDM_SETACCEL = (WM_USER+107);
  2897. UDM_GETACCEL = (WM_USER+108);
  2898. UDM_SETBASE = (WM_USER+109);
  2899. UDM_GETBASE = (WM_USER+110);
  2900. {$ifdef ie4plus}
  2901. UDM_SETRANGE32 = (WM_USER+111);
  2902. UDM_GETRANGE32 = (WM_USER+112); // wParam & lParam are LPINT
  2903. UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  2904. UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  2905. {$ENDIF}
  2906. {$ifdef ie5plus}
  2907. UDM_SETPOS32 = (WM_USER+113);
  2908. UDM_GETPOS32 = (WM_USER+114);
  2909. {$ENDIF}
  2910. function CreateUpDownControl(dwStyle:DWORD;x:cint;y:cint;cx:cint;cy:cint;hParent:HWND;nID:cint;hInst:HINST;hBuddy:HWND;nUpper:cint;nLower:cint;nPos:cint):HWND; stdcall; external commctrldll name 'CreateUpDownControl';
  2911. TYPE
  2912. _NM_UPDOWN = Record
  2913. hdr : NMHDR;
  2914. iPos : cint;
  2915. iDelta : cint;
  2916. END;
  2917. NMUPDOWN = _NM_UPDOWN;
  2918. LPNMUPDOWN = ^_NM_UPDOWN;
  2919. TNM_UPDOWN = _NM_UPDOWN;
  2920. PNM_UPDOWN = ^_NM_UPDOWN;
  2921. {$ifdef ie3plus}
  2922. NM_UPDOWN = NMUPDOWN;
  2923. LPNM_UPDOWN = LPNMUPDOWN;
  2924. {$ELSE}
  2925. NMUPDOWN = NM_UPDOWN;
  2926. LPNMUPDOWN = LPNM_UPDOWN;
  2927. {$ENDIF}
  2928. CONST
  2929. UDN_DELTAPOS = (UDN_FIRST - 1);
  2930. {$ENDIF} // NOUPDOWN
  2931. //====== PROGRESS CONTROL =====================================================
  2932. {$IFNDEF NOPROGRESS}
  2933. CONST
  2934. {$IFDEF _WIN32}
  2935. PROGRESS_CLASSA = 'msctls_progress32';
  2936. PROGRESS_CLASSW = {L}'msctls_progress32'#$0000;
  2937. {$IFDEF UNICODE}
  2938. PROGRESS_CLASS = PROGRESS_CLASSW;
  2939. {$ELSE}
  2940. PROGRESS_CLASS = PROGRESS_CLASSA;
  2941. {$ENDIF}
  2942. {$ELSE}
  2943. PROGRESS_CLASS = 'msctls_progress';
  2944. {$ENDIF}
  2945. // begin_r_commctrl
  2946. {$ifdef ie3plus}
  2947. PBS_SMOOTH = $01;
  2948. PBS_VERTICAL = $04;
  2949. {$ENDIF}
  2950. // end_r_commctrl
  2951. PBM_SETRANGE = (WM_USER+1);
  2952. PBM_SETPOS = (WM_USER+2);
  2953. PBM_DELTAPOS = (WM_USER+3);
  2954. PBM_SETSTEP = (WM_USER+4);
  2955. PBM_STEPIT = (WM_USER+5);
  2956. {$ifdef ie3plus}
  2957. PBM_SETRANGE32 = (WM_USER+6); // lParam = high, wParam = low
  2958. TYPE
  2959. PBRANGE = Record
  2960. iLow : cint;
  2961. iHigh : cint;
  2962. END;
  2963. PPBRANGE = ^PBRANGE;
  2964. TPBRANGE = PBRANGE;
  2965. // PPBRANGE = ^PBRANGE;
  2966. CONST
  2967. PBM_GETRANGE = (WM_USER+7); // wParam = return (TRUE ? low : high). lParam = PPBRANGE or NULL
  2968. PBM_GETPOS = (WM_USER+8);
  2969. {$ifdef ie4plus}
  2970. PBM_SETBARCOLOR = (WM_USER+9); // lParam = bar color
  2971. {$ENDIF} // _WIN32_IE >= 0x0400
  2972. PBM_SETBKCOLOR = CCM_SETBKCOLOR; // lParam = bkColor
  2973. {$ENDIF} // _WIN32_IE >= 0x0300
  2974. {$ifdef win32xp} //_WIN32_WINNT >= 0x0501
  2975. PBS_MARQUEE = $08;
  2976. PBM_SETMARQUEE = (WM_USER+10);
  2977. {$endif} //_WIN32_WINNT >= 0x0501
  2978. {$ifdef win32vista}
  2979. PBS_SMOOTHREVERSE = $10;
  2980. {$endif}
  2981. {$ifdef win32vista}
  2982. PBM_GETSTEP = (WM_USER+13);
  2983. PBM_GETBKCOLOR = (WM_USER+14);
  2984. PBM_GETBARCOLOR = (WM_USER+15);
  2985. PBM_SETSTATE = (WM_USER+16); // wParam = PBST_[State] (NORMAL, ERROR, PAUSED)
  2986. PBM_GETSTATE = (WM_USER+17);
  2987. PBST_NORMAL = $0001;
  2988. PBST_ERROR = $0002;
  2989. PBST_PAUSED = $0003;
  2990. {$endif}
  2991. // end_r_commctrl
  2992. {$ENDIF} // NOPROGRESS
  2993. //====== HOTKEY CONTROL =======================================================
  2994. {$IFNDEF NOHOTKEY}
  2995. HOTKEYF_SHIFT = $01;
  2996. HOTKEYF_CONTROL = $02;
  2997. HOTKEYF_ALT = $04;
  2998. {$IFDEF _MAC}
  2999. HOTKEYF_EXT = $80;
  3000. {$ELSE}
  3001. HOTKEYF_EXT = $08;
  3002. {$ENDIF}
  3003. HKCOMB_NONE = $0001;
  3004. HKCOMB_S = $0002;
  3005. HKCOMB_C = $0004;
  3006. HKCOMB_A = $0008;
  3007. HKCOMB_SC = $0010;
  3008. HKCOMB_SA = $0020;
  3009. HKCOMB_CA = $0040;
  3010. HKCOMB_SCA = $0080;
  3011. HKM_SETHOTKEY = (WM_USER+1);
  3012. HKM_GETHOTKEY = (WM_USER+2);
  3013. HKM_SETRULES = (WM_USER+3);
  3014. {$IFDEF _WIN32}
  3015. HOTKEY_CLASSA = 'msctls_hotkey32';
  3016. HOTKEY_CLASSW = widestring('msctls_hotkey32');
  3017. {$IFDEF UNICODE}
  3018. HOTKEY_CLASS = HOTKEY_CLASSW;
  3019. {$ELSE}
  3020. HOTKEY_CLASS = HOTKEY_CLASSA;
  3021. {$ENDIF}
  3022. {$ELSE}
  3023. HOTKEY_CLASS = 'msctls_hotkey';
  3024. {$ENDIF}
  3025. {$ENDIF} // NOHOTKEY
  3026. HOTKEYCLASS = HOTKEY_CLASSA;
  3027. // begin_r_commctrl
  3028. //====== COMMON CONTROL STYLES ================================================
  3029. CCS_TOP = DWORD($00000001){L};
  3030. CCS_NOMOVEY = DWORD($00000002){L};
  3031. CCS_BOTTOM = DWORD($00000003){L};
  3032. CCS_NORESIZE = DWORD($00000004){L};
  3033. CCS_NOPARENTALIGN = DWORD($00000008){L};
  3034. CCS_ADJUSTABLE = DWORD($00000020){L};
  3035. CCS_NODIVIDER = DWORD($00000040){L};
  3036. {$ifdef ie3plus}
  3037. CCS_VERT = DWORD($00000080){L};
  3038. CCS_LEFT = (CCS_VERT OR CCS_TOP);
  3039. CCS_RIGHT = (CCS_VERT OR CCS_BOTTOM);
  3040. CCS_NOMOVEX = (CCS_VERT OR CCS_NOMOVEY);
  3041. {$ENDIF}
  3042. // end_r_commctrl
  3043. //====== LISTVIEW CONTROL =====================================================
  3044. {$IFNDEF NOLISTVIEW}
  3045. {$IFDEF _WIN32}
  3046. WC_LISTVIEWA = 'SysListView32';
  3047. WC_LISTVIEWW = {L}'SysListView32'#$0000;
  3048. {$IFDEF UNICODE}
  3049. WC_LISTVIEW = WC_LISTVIEWW;
  3050. {$ELSE}
  3051. WC_LISTVIEW = WC_LISTVIEWA;
  3052. {$ENDIF}
  3053. {$ELSE}
  3054. WC_LISTVIEW = 'SysListView';
  3055. {$ENDIF}
  3056. // begin_r_commctrl
  3057. LVS_ICON = $0000;
  3058. LVS_REPORT = $0001;
  3059. LVS_SMALLICON = $0002;
  3060. LVS_LIST = $0003;
  3061. LVS_TYPEMASK = $0003;
  3062. LVS_SINGLESEL = $0004;
  3063. LVS_SHOWSELALWAYS = $0008;
  3064. LVS_SORTASCENDING = $0010;
  3065. LVS_SORTDESCENDING = $0020;
  3066. LVS_SHAREIMAGELISTS = $0040;
  3067. LVS_NOLABELWRAP = $0080;
  3068. LVS_AUTOARRANGE = $0100;
  3069. LVS_EDITLABELS = $0200;
  3070. {$ifdef ie3plus}
  3071. LVS_OWNERDATA = $1000;
  3072. {$ENDIF}
  3073. LVS_NOSCROLL = $2000;
  3074. LVS_TYPESTYLEMASK = $fc00;
  3075. LVS_ALIGNTOP = $0000;
  3076. LVS_ALIGNLEFT = $0800;
  3077. LVS_ALIGNMASK = $0c00;
  3078. LVS_OWNERDRAWFIXED = $0400;
  3079. LVS_NOCOLUMNHEADER = $4000;
  3080. LVS_NOSORTHEADER = $8000;
  3081. // end_r_commctrl
  3082. {$ifdef ie4plus}
  3083. LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  3084. // Macro 38
  3085. Function ListView_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
  3086. CONST
  3087. LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  3088. // Macro 39
  3089. Function ListView_GetUnicodeFormat( hwnd : hwnd):BOOL;
  3090. {$ENDIF}
  3091. CONST
  3092. LVM_GETBKCOLOR = (LVM_FIRST + 0);
  3093. // Macro 40
  3094. Function ListView_GetBkColor( hwnd : hwnd):COLORREF;
  3095. CONST
  3096. LVM_SETBKCOLOR = (LVM_FIRST + 1);
  3097. // Macro 41
  3098. Function ListView_SetBkColor( hwnd : hwnd; clrBk : COLORREF):BOOL;
  3099. CONST
  3100. LVM_GETIMAGELIST = (LVM_FIRST + 2);
  3101. // Macro 42
  3102. Function ListView_GetImageList( hwnd : hwnd; iImageList : CINT):HIMAGELIST;
  3103. CONST
  3104. LVSIL_NORMAL = 0;
  3105. LVSIL_SMALL = 1;
  3106. LVSIL_STATE = 2;
  3107. LVSIL_GROUPHEADER = 3;
  3108. LVM_SETIMAGELIST = (LVM_FIRST + 3);
  3109. // Macro 43
  3110. Function ListView_SetImageList( hwnd : hwnd; himl : HIMAGELIST; iImageList : WPARAM):HIMAGELIST;
  3111. CONST
  3112. LVM_GETITEMCOUNT = (LVM_FIRST + 4);
  3113. // Macro 44
  3114. Function ListView_GetItemCount( hwnd : hwnd):cint;
  3115. CONST
  3116. LVIF_TEXT = $0001;
  3117. LVIF_IMAGE = $0002;
  3118. LVIF_PARAM = $0004;
  3119. LVIF_STATE = $0008;
  3120. {$ifdef ie3plus}
  3121. LVIF_INDENT = $0010;
  3122. LVIF_NORECOMPUTE = $0800;
  3123. {$ENDIF}
  3124. {$ifdef win32xp}
  3125. LVIF_GROUPID = $0100;
  3126. LVIF_COLUMNS = $0200;
  3127. {$ENDIF}
  3128. {$ifdef win32vista}
  3129. LVIF_COLFMT = $00010000; // The piColFmt member is valid in addition to puColumns
  3130. {$endif}
  3131. LVIS_FOCUSED = $0001;
  3132. LVIS_SELECTED = $0002;
  3133. LVIS_CUT = $0004;
  3134. LVIS_DROPHILITED = $0008;
  3135. LVIS_GLOW = $0010;
  3136. LVIS_ACTIVATING = $0020;
  3137. LVIS_OVERLAYMASK = $0F00;
  3138. LVIS_STATEIMAGEMASK = $F000;
  3139. // Macro 45
  3140. // #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
  3141. CONST
  3142. I_INDENTCALLBACK = (-1);
  3143. {$ENDIF}
  3144. {$ifdef win32xp}
  3145. CONST
  3146. I_GROUPIDCALLBACK = (-1);
  3147. I_GROUPIDNONE = (-2);
  3148. {$ENDIF}
  3149. // #define LVITEMA_V1_SIZE CCSIZEOF_STRUCT(LVITEMA, lParam)
  3150. // #define LVITEMW_V1_SIZE CCSIZEOF_STRUCT(LVITEMW, lParam)
  3151. TYPE
  3152. tagLVITEMA = Record
  3153. mask : UINT;
  3154. iItem : cint;
  3155. iSubItem : cint;
  3156. state : UINT;
  3157. stateMask : UINT;
  3158. pszText : LPSTR;
  3159. cchTextMax : cint;
  3160. iImage : cint;
  3161. lParam : LPARAM;
  3162. {$ifdef ie3plus}
  3163. iIndent : cint;
  3164. {$ENDIF}
  3165. {$ifdef win32xp}
  3166. iGroupId : cint;
  3167. cColumns : UINT; // tile view columns
  3168. puColumns : PUINT;
  3169. {$ENDIF}
  3170. {$ifdef win32vista}
  3171. piColFmt : pcint;
  3172. iGroup : cint; // readonly. only valid for owner data.
  3173. {$endif}
  3174. END;
  3175. LVITEMA = tagLVITEMA;
  3176. LPLVITEMA = ^tagLVITEMA;
  3177. TLVITEMA = tagLVITEMA;
  3178. PLVITEMA = ^tagLVITEMA;
  3179. tagLVITEMW = Record
  3180. mask : UINT;
  3181. iItem : cint;
  3182. iSubItem : cint;
  3183. state : UINT;
  3184. stateMask : UINT;
  3185. pszText : LPWSTR;
  3186. cchTextMax : cint;
  3187. iImage : cint;
  3188. lParam : LPARAM;
  3189. {$ifdef ie3plus}
  3190. iIndent : cint;
  3191. {$ENDIF}
  3192. {$ifdef win32xp}
  3193. iGroupId : cint;
  3194. cColumns : UINT; // tile view columns
  3195. puColumns : PUINT;
  3196. {$ENDIF}
  3197. {$ifdef win32vista}
  3198. piColFmt : pcint;
  3199. iGroup : cint; // readonly. only valid for owner data.
  3200. {$endif}
  3201. END;
  3202. LVITEMW = tagLVITEMW;
  3203. LPLVITEMW = ^tagLVITEMW;
  3204. TLVITEMW = tagLVITEMW;
  3205. PLVITEMW = ^tagLVITEMW;
  3206. {$IFDEF UNICODE}
  3207. LVITEM = LVITEMW;
  3208. LPLVITEM = LPLVITEMW;
  3209. // LVITEM_V1_SIZE = LVITEMW_V1_SIZE;
  3210. {$ELSE}
  3211. TYPE
  3212. LVITEM = LVITEMA;
  3213. LPLVITEM = LPLVITEMA;
  3214. // LVITEM_V1_SIZE = LVITEMA_V1_SIZE;
  3215. {$ENDIF}
  3216. Type
  3217. {$ifdef ie3plus}
  3218. LV_ITEMA = LVITEMA;
  3219. LV_ITEMW = LVITEMW;
  3220. {$ELSE}
  3221. tagLVITEMA = _LV_ITEMA;
  3222. LVITEMA = LV_ITEMA;
  3223. tagLVITEMW = _LV_ITEMW;
  3224. LVITEMW = LV_ITEMW;
  3225. {$ENDIF}
  3226. LV_ITEM = LVITEM;
  3227. TLVItem = LVITEM;
  3228. PLVItem = LPLVITEM;
  3229. TLV_ITEM = LVITEM;
  3230. PLV_ITEM = PLVITEM;
  3231. CONST
  3232. LPSTR_TEXTCALLBACKW = LPWSTR(-1);
  3233. LPSTR_TEXTCALLBACKA = LPSTR (-1);
  3234. {$IFDEF UNICODE}
  3235. LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKW;
  3236. {$ELSE}
  3237. LPSTR_TEXTCALLBACK = LPSTR_TEXTCALLBACKA;
  3238. {$ENDIF}
  3239. CONST
  3240. I_IMAGECALLBACK = (-1);
  3241. {$ifdef ie501plus}
  3242. I_IMAGENONE = (-2);
  3243. {$ENDIF} // 0x0501
  3244. {$ifdef win32xp}
  3245. // For tileview
  3246. I_COLUMNSCALLBACK = UINT(-1);
  3247. {$ENDIF}
  3248. LVM_GETITEMA = (LVM_FIRST + 5);
  3249. LVM_GETITEMW = (LVM_FIRST + 75);
  3250. {$IFDEF UNICODE}
  3251. LVM_GETITEM = LVM_GETITEMW;
  3252. {$ELSE}
  3253. LVM_GETITEM = LVM_GETITEMA;
  3254. {$ENDIF}
  3255. // Macro 46
  3256. Function ListView_GetItem( hwnd : hwnd;var pitem : LV_ITEM ):BOOL;
  3257. CONST
  3258. LVM_SETITEMA = (LVM_FIRST + 6);
  3259. LVM_SETITEMW = (LVM_FIRST + 76);
  3260. {$IFDEF UNICODE}
  3261. LVM_SETITEM = LVM_SETITEMW;
  3262. {$ELSE}
  3263. LVM_SETITEM = LVM_SETITEMA;
  3264. {$ENDIF}
  3265. // Macro 47
  3266. Function ListView_SetItem( hwnd : hwnd;const pitem : LV_ITEM ):BOOL;
  3267. CONST
  3268. LVM_INSERTITEMA = (LVM_FIRST + 7);
  3269. LVM_INSERTITEMW = (LVM_FIRST + 77);
  3270. {$IFDEF UNICODE}
  3271. LVM_INSERTITEM = LVM_INSERTITEMW;
  3272. {$ELSE}
  3273. LVM_INSERTITEM = LVM_INSERTITEMA;
  3274. {$ENDIF}
  3275. // Macro 48
  3276. Function ListView_InsertItem( hwnd : hwnd;Const pitem : LV_ITEM ):cint;
  3277. CONST
  3278. LVM_DELETEITEM = (LVM_FIRST + 8);
  3279. // Macro 49
  3280. Function ListView_DeleteItem( hwnd : hwnd; i : cint):BOOL;
  3281. CONST
  3282. LVM_DELETEALLITEMS = (LVM_FIRST + 9);
  3283. // Macro 50
  3284. Function ListView_DeleteAllItems( hwnd : hwnd):BOOL;
  3285. CONST
  3286. LVM_GETCALLBACKMASK = (LVM_FIRST + 10);
  3287. // Macro 51
  3288. Function ListView_GetCallbackMask( hwnd : hwnd):BOOL;
  3289. CONST
  3290. LVM_SETCALLBACKMASK = (LVM_FIRST + 11);
  3291. // Macro 52
  3292. Function ListView_SetCallbackMask( hwnd : hwnd; mask : UINT):BOOL;
  3293. CONST
  3294. LVNI_ALL = $0000;
  3295. LVNI_FOCUSED = $0001;
  3296. LVNI_SELECTED = $0002;
  3297. LVNI_CUT = $0004;
  3298. LVNI_DROPHILITED = $0008;
  3299. LVNI_ABOVE = $0100;
  3300. LVNI_BELOW = $0200;
  3301. LVNI_TOLEFT = $0400;
  3302. LVNI_TORIGHT = $0800;
  3303. LVM_GETNEXTITEM = (LVM_FIRST + 12);
  3304. // Macro 53
  3305. Function ListView_GetNextItem( hwnd : hwnd; i : cint; flags : cint ):cint;
  3306. CONST
  3307. LVFI_PARAM = $0001;
  3308. LVFI_STRING = $0002;
  3309. LVFI_PARTIAL = $0008;
  3310. LVFI_WRAP = $0020;
  3311. LVFI_NEARESTXY = $0040;
  3312. TYPE
  3313. tagLVFINDINFOA = Record
  3314. flags : UINT;
  3315. psz : LPCSTR;
  3316. lParam : LPARAM;
  3317. pt : POINT;
  3318. vkDirection : UINT;
  3319. END;
  3320. LVFINDINFOA = tagLVFINDINFOA;
  3321. LPFINDINFOA = ^tagLVFINDINFOA;
  3322. TLVFINDINFOA = tagLVFINDINFOA;
  3323. PLVFINDINFOA = ^tagLVFINDINFOA;
  3324. tagLVFINDINFOW = Record
  3325. flags : UINT;
  3326. psz : LPCWSTR;
  3327. lParam : LPARAM;
  3328. pt : POINT;
  3329. vkDirection : UINT;
  3330. END;
  3331. LVFINDINFOW = tagLVFINDINFOW;
  3332. LPFINDINFOW = ^tagLVFINDINFOW;
  3333. TLVFINDINFOW = tagLVFINDINFOW;
  3334. PLVFINDINFOW = ^tagLVFINDINFOW;
  3335. {$IFDEF UNICODE}
  3336. LVFINDINFO = LVFINDINFOW;
  3337. {$ELSE}
  3338. LVFINDINFO = LVFINDINFOA;
  3339. {$ENDIF}
  3340. {$ifdef ie3plus}
  3341. LV_FINDINFOA = LVFINDINFOA;
  3342. LV_FINDINFOW = LVFINDINFOW;
  3343. {$ELSE}
  3344. tagLVFINDINFOA = _LV_FINDINFOA;
  3345. LVFINDINFOA = LV_FINDINFOA;
  3346. tagLVFINDINFOW = _LV_FINDINFOW;
  3347. LVFINDINFOW = LV_FINDINFOW;
  3348. {$ENDIF}
  3349. TLVFindInfo = LVFINDINFO;
  3350. PLVFindInfo = ^LVFindInfo;
  3351. LV_FINDINFO = LVFINDINFO;
  3352. CONST
  3353. LVM_FINDITEMA = (LVM_FIRST + 13);
  3354. LVM_FINDITEMW = (LVM_FIRST + 83);
  3355. {$IFDEF UNICODE}
  3356. LVM_FINDITEM = LVM_FINDITEMW;
  3357. {$ELSE}
  3358. LVM_FINDITEM = LVM_FINDITEMA;
  3359. {$ENDIF}
  3360. // Macro 54
  3361. Function ListView_FindItem( hwnd : hwnd; iStart : cint;const plvfi : LV_FINDINFO ):cint;
  3362. CONST
  3363. LVIR_BOUNDS = 0;
  3364. LVIR_ICON = 1;
  3365. LVIR_LABEL = 2;
  3366. LVIR_SELECTBOUNDS = 3;
  3367. LVM_GETITEMRECT = (LVM_FIRST + 14);
  3368. // Macro 55 NI
  3369. Function ListView_GetItemRect( hwnd : hwnd; i : cint;var prc : TRect;code : cint):BOOL;
  3370. CONST
  3371. LVM_SETITEMPOSITION = (LVM_FIRST + 15);
  3372. // Macro 56
  3373. Function ListView_SetItemPosition( hwndLV : hwnd; i : cint; x : cint ; y : cint ):BOOL;
  3374. CONST
  3375. LVM_GETITEMPOSITION = (LVM_FIRST + 16);
  3376. // Macro 57
  3377. Function ListView_GetItemPosition( hwndLV : hwnd; i : cint;var ppt : POINT ):BOOL;
  3378. CONST
  3379. LVM_GETSTRINGWIDTHA = (LVM_FIRST + 17);
  3380. LVM_GETSTRINGWIDTHW = (LVM_FIRST + 87);
  3381. {$IFDEF UNICODE}
  3382. LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHW;
  3383. {$ELSE}
  3384. LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHA;
  3385. {$ENDIF}
  3386. // Macro 58
  3387. Function ListView_GetStringWidth( hwndLV : hwnd; psz : LPCTSTR):cint;
  3388. CONST
  3389. LVHT_NOWHERE = $0001;
  3390. LVHT_ONITEMICON = $0002;
  3391. LVHT_ONITEMLABEL = $0004;
  3392. LVHT_ONITEMSTATEICON = $0008;
  3393. LVHT_ONITEM = (LVHT_ONITEMICON OR LVHT_ONITEMLABEL OR LVHT_ONITEMSTATEICON);
  3394. LVHT_ABOVE = $0008;
  3395. LVHT_BELOW = $0010;
  3396. LVHT_TORIGHT = $0020;
  3397. LVHT_TOLEFT = $0040;
  3398. // #define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO, iItem)
  3399. TYPE
  3400. tagLVHITTESTINFO = Record
  3401. pt : POINT;
  3402. flags : UINT;
  3403. iItem : cint;
  3404. {$ifdef ie3plus}
  3405. iSubItem : cint; // this is was NOT in win95. valid only for LVM_SUBITEMHITTEST
  3406. {$ENDIF}
  3407. {$ifdef win32vista}
  3408. iGroup : cint; // readonly. index of group. only valid for owner data.
  3409. // supports single item in multiple groups.
  3410. {$endif}
  3411. END;
  3412. LVHITTESTINFO = tagLVHITTESTINFO;
  3413. LPLVHITTESTINFO = ^tagLVHITTESTINFO;
  3414. TLVHITTESTINFO = tagLVHITTESTINFO;
  3415. PLVHITTESTINFO = ^tagLVHITTESTINFO;
  3416. {$ifdef ie3plus}
  3417. LV_HITTESTINFO = LVHITTESTINFO;
  3418. {$ELSE}
  3419. tagLVHITTESTINFO = _LV_HITTESTINFO;
  3420. LVHITTESTINFO = LV_HITTESTINFO;
  3421. {$ENDIF}
  3422. CONST
  3423. LVM_HITTEST = (LVM_FIRST + 18);
  3424. // Macro 59
  3425. Function ListView_HitTest( hwndLV : hwnd;var pinfo : LV_HITTESTINFO ):cint;
  3426. CONST
  3427. LVM_ENSUREVISIBLE = (LVM_FIRST + 19);
  3428. // Macro 60
  3429. Function ListView_EnsureVisible( hwndLV : hwnd; i : cint; fPartialOK : cint ):BOOL;inline;
  3430. Function ListView_EnsureVisible( hwndLV : hwnd; i : cint; fPartialOK : BOOL ):BOOL;inline;
  3431. CONST
  3432. LVM_SCROLL = (LVM_FIRST + 20);
  3433. // Macro 61
  3434. Function ListView_Scroll( hwndLV : hwnd; dx : cint; dy : cint):BOOL;
  3435. CONST
  3436. LVM_REDRAWITEMS = (LVM_FIRST + 21);
  3437. // Macro 62
  3438. Function ListView_RedrawItems( hwndLV : hwnd; iFirst : cint; iLast : cint):BOOL;
  3439. CONST
  3440. LVA_DEFAULT = $0000;
  3441. LVA_ALIGNLEFT = $0001;
  3442. LVA_ALIGNTOP = $0002;
  3443. LVA_ALIGNRIGHT = $0003;
  3444. LVA_ALIGNBOTTOM = $0004;
  3445. LVA_SNAPTOGRID = $0005;
  3446. LVA_SORTASCENDING = $0100;
  3447. LVA_SORTDESCENDING = $0200;
  3448. LVM_ARRANGE = (LVM_FIRST + 22);
  3449. // Macro 63
  3450. Function ListView_Arrange( hwndLV : hwnd; code : UINT):BOOL;
  3451. CONST
  3452. LVM_EDITLABELA = (LVM_FIRST + 23);
  3453. LVM_EDITLABELW = (LVM_FIRST + 118);
  3454. {$IFDEF UNICODE}
  3455. LVM_EDITLABEL = LVM_EDITLABELW;
  3456. {$ELSE}
  3457. LVM_EDITLABEL = LVM_EDITLABELA;
  3458. {$ENDIF}
  3459. // Macro 64
  3460. Function ListView_EditLabel( hwndLV : hwnd; i : cint):HWND;
  3461. CONST
  3462. LVM_GETEDITCONTROL = (LVM_FIRST + 24);
  3463. // Macro 65
  3464. Function ListView_GetEditControl( hwndLV : hwnd):HWND;
  3465. // #define LVCOLUMNA_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem)
  3466. // #define LVCOLUMNW_V1_SIZE CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem)
  3467. TYPE
  3468. tagLVCOLUMNA = Record
  3469. mask : UINT;
  3470. fmt : cint;
  3471. cx : cint;
  3472. pszText : LPSTR;
  3473. cchTextMax : cint;
  3474. iSubItem : cint;
  3475. {$ifdef ie3plus}
  3476. iImage : cint;
  3477. iOrder : cint;
  3478. {$ENDIF}
  3479. {$ifdef win32vista}
  3480. cxmin : cint; // min snap point
  3481. cxDefault : cint; // default snap point
  3482. cxIdeal : cint; // read only. ideal may not eqaul current width if auto sized (LVS_EX_AUTOSIZECOLUMNS) to a lesser width.
  3483. {$endif}
  3484. END;
  3485. LVCOLUMNA = tagLVCOLUMNA;
  3486. LPLVCOLUMNA = ^tagLVCOLUMNA;
  3487. TLVCOLUMNA = tagLVCOLUMNA;
  3488. PLVCOLUMNA = ^tagLVCOLUMNA;
  3489. tagLVCOLUMNW = Record
  3490. mask : UINT;
  3491. fmt : cint;
  3492. cx : cint;
  3493. pszText : LPWSTR;
  3494. cchTextMax : cint;
  3495. iSubItem : cint;
  3496. {$ifdef ie3plus}
  3497. iImage : cint;
  3498. iOrder : cint;
  3499. {$ENDIF}
  3500. {$ifdef win32vista}
  3501. cxmin : cint; // min snap point
  3502. cxDefault : cint; // default snap point
  3503. cxIdeal : cint; // read only. ideal may not eqaul current width if auto sized (LVS_EX_AUTOSIZECOLUMNS) to a lesser width.
  3504. {$endif}
  3505. END;
  3506. LVCOLUMNW = tagLVCOLUMNW;
  3507. LPLVCOLUMNW = ^tagLVCOLUMNW;
  3508. TLVCOLUMNW = tagLVCOLUMNW;
  3509. PLVCOLUMNW = ^tagLVCOLUMNW;
  3510. {$IFDEF UNICODE}
  3511. LVCOLUMN = LVCOLUMNW;
  3512. LPLVCOLUMN = LPLVCOLUMNW;
  3513. // LVCOLUMN_V1_SIZE = LVCOLUMNW_V1_SIZE;
  3514. {$ELSE}
  3515. LVCOLUMN = LVCOLUMNA;
  3516. LPLVCOLUMN = LPLVCOLUMNA;
  3517. // LVCOLUMN_V1_SIZE = LVCOLUMNA_V1_SIZE;
  3518. {$ENDIF}
  3519. {$ifdef ie3plus}
  3520. LV_COLUMNA = LVCOLUMNA;
  3521. LV_COLUMNW = LVCOLUMNW;
  3522. {$ELSE}
  3523. tagLVCOLUMNA = _LV_COLUMNA;
  3524. LVCOLUMNA = LV_COLUMNA;
  3525. tagLVCOLUMNW = _LV_COLUMNW;
  3526. LVCOLUMNW = LV_COLUMNW;
  3527. {$ENDIF}
  3528. LV_COLUMN = LVCOLUMN;
  3529. TLVColumn = LVCOLUMN;
  3530. PLVColumn = LPLVCOLUMN;
  3531. CONST
  3532. LVCF_FMT = $0001;
  3533. LVCF_WIDTH = $0002;
  3534. LVCF_TEXT = $0004;
  3535. LVCF_SUBITEM = $0008;
  3536. {$ifdef ie3plus}
  3537. LVCF_IMAGE = $0010;
  3538. LVCF_ORDER = $0020;
  3539. {$ENDIF}
  3540. {$ifdef win32vista}
  3541. LVCF_MINWIDTH = $0040;
  3542. LVCF_DEFAULTWIDTH = $0080;
  3543. LVCF_IDEALWIDTH = $0100;
  3544. {$endif}
  3545. LVCFMT_LEFT = $0000;
  3546. LVCFMT_RIGHT = $0001;
  3547. LVCFMT_CENTER = $0002;
  3548. LVCFMT_JUSTIFYMASK = $0003;
  3549. {$ifdef ie3plus}
  3550. LVCFMT_IMAGE = $0800;
  3551. LVCFMT_BITMAP_ON_RIGHT = $1000;
  3552. LVCFMT_COL_HAS_IMAGES = $8000;
  3553. {$ENDIF}
  3554. {$ifdef win32vista}
  3555. LVCFMT_FIXED_WIDTH = $00100; // Can't resize the column; same as HDF_FIXEDWIDTH
  3556. LVCFMT_NO_DPI_SCALE = $40000; // If not set, CCM_DPISCALE will govern scaling up fixed width
  3557. LVCFMT_FIXED_RATIO = $80000; // Width will augment with the row height
  3558. {$endif}
  3559. LVM_GETCOLUMNA = (LVM_FIRST + 25);
  3560. LVM_GETCOLUMNW = (LVM_FIRST + 95);
  3561. {$IFDEF UNICODE}
  3562. LVM_GETCOLUMN = LVM_GETCOLUMNW;
  3563. {$ELSE}
  3564. LVM_GETCOLUMN = LVM_GETCOLUMNA;
  3565. {$ENDIF}
  3566. // Macro 66
  3567. Function ListView_GetColumn( hwnd : hwnd; iCol : cint;var pcol : LV_COLUMN ):BOOL;
  3568. CONST
  3569. LVM_SETCOLUMNA = (LVM_FIRST + 26);
  3570. LVM_SETCOLUMNW = (LVM_FIRST + 96);
  3571. {$IFDEF UNICODE}
  3572. LVM_SETCOLUMN = LVM_SETCOLUMNW;
  3573. {$ELSE}
  3574. LVM_SETCOLUMN = LVM_SETCOLUMNA;
  3575. {$ENDIF}
  3576. // Macro 67
  3577. Function ListView_SetColumn( hwnd : hwnd; iCol : cint;Const pcol : LV_COLUMN ):BOOL;
  3578. CONST
  3579. LVM_INSERTCOLUMNA = (LVM_FIRST + 27);
  3580. LVM_INSERTCOLUMNW = (LVM_FIRST + 97);
  3581. {$IFDEF UNICODE} // was already not active (spaces) in .h
  3582. // # define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW
  3583. {$ELSE}
  3584. // # define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA
  3585. {$ENDIF}
  3586. // Macro 68
  3587. Function ListView_InsertColumn( hwnd : hwnd; iCol : cint;Const pcol : LV_COLUMN ):cint;
  3588. CONST
  3589. LVM_DELETECOLUMN = (LVM_FIRST + 28);
  3590. // Macro 69
  3591. Function ListView_DeleteColumn( hwnd : hwnd; iCol : cint):BOOL;
  3592. CONST
  3593. LVM_GETCOLUMNWIDTH = (LVM_FIRST + 29);
  3594. // Macro 70
  3595. Function ListView_GetColumnWidth( hwnd : hwnd; iCol : cint):cint;
  3596. CONST
  3597. LVSCW_AUTOSIZE = -1;
  3598. LVSCW_AUTOSIZE_USEHEADER = -2;
  3599. LVM_SETCOLUMNWIDTH = (LVM_FIRST + 30);
  3600. // Macro 71
  3601. Function ListView_SetColumnWidth( hwnd : hwnd; iCol : cint; cx : cint ):BOOL;
  3602. {$ifdef ie3plus}
  3603. CONST
  3604. LVM_GETHEADER = (LVM_FIRST + 31);
  3605. // Macro 72
  3606. Function ListView_GetHeader( hwnd : hwnd):HWND;
  3607. {$ENDIF}
  3608. CONST
  3609. LVM_CREATEDRAGIMAGE = (LVM_FIRST + 33);
  3610. // Macro 73
  3611. Function ListView_CreateDragImage( hwnd : hwnd; i : cint; lpptUpLeft : LPPOINT):HIMAGELIST;inline;
  3612. Function ListView_CreateDragImage( hwnd : hwnd; i : cint; const lpptUpLeft : POINT):HIMAGELIST;inline;
  3613. CONST
  3614. LVM_GETVIEWRECT = (LVM_FIRST + 34);
  3615. // Macro 74
  3616. Function ListView_GetViewRect( hwnd : hwnd;var prc : RECT ):BOOL;
  3617. CONST
  3618. LVM_GETTEXTCOLOR = (LVM_FIRST + 35);
  3619. // Macro 75
  3620. Function ListView_GetTextColor( hwnd : hwnd):COLORREF;
  3621. CONST
  3622. LVM_SETTEXTCOLOR = (LVM_FIRST + 36);
  3623. // Macro 76
  3624. Function ListView_SetTextColor( hwnd : hwnd; clrText : COLORREF):BOOL;
  3625. CONST
  3626. LVM_GETTEXTBKCOLOR = (LVM_FIRST + 37);
  3627. // Macro 77
  3628. Function ListView_GetTextBkColor( hwnd : hwnd):COLORREF;
  3629. CONST
  3630. LVM_SETTEXTBKCOLOR = (LVM_FIRST + 38);
  3631. // Macro 78
  3632. Function ListView_SetTextBkColor( hwnd : hwnd; clrTextBk : COLORREF):BOOL;
  3633. CONST
  3634. LVM_GETTOPINDEX = (LVM_FIRST + 39);
  3635. // Macro 79
  3636. Function ListView_GetTopIndex( hwndLV : hwnd):cint;
  3637. CONST
  3638. LVM_GETCOUNTPERPAGE = (LVM_FIRST + 40);
  3639. // Macro 80
  3640. Function ListView_GetCountPerPage( hwndLV : hwnd):cint;
  3641. CONST
  3642. LVM_GETORIGIN = (LVM_FIRST + 41);
  3643. // Macro 81
  3644. Function ListView_GetOrigin( hwndLV : hwnd;var ppt : POINT ):BOOL;
  3645. CONST
  3646. LVM_UPDATE = (LVM_FIRST + 42);
  3647. // Macro 82
  3648. Function ListView_Update( hwndLV : hwnd; i : WPARAM):BOOL;
  3649. CONST
  3650. LVM_SETITEMSTATE = (LVM_FIRST + 43);
  3651. // Macro 83
  3652. Procedure ListView_SetItemState(hwndLV :hwnd; i :cint ;data,mask:UINT);
  3653. {$ifdef ie3plus}
  3654. // Macro 84
  3655. Procedure ListView_SetCheckState( hwndLV : hwnd; i : cint ; fCheck : bool );
  3656. {$ENDIF}
  3657. CONST
  3658. LVM_GETITEMSTATE = (LVM_FIRST + 44);
  3659. // Macro 85
  3660. Function ListView_GetItemState( hwndLV : hwnd; i : WPARAM; mask : LPARAM):UINT;
  3661. {$ifdef ie3plus}
  3662. // Macro 86
  3663. Function ListView_GetCheckState( hwndLV : hwnd; i : WPARAM):UINT;
  3664. {$ENDIF}
  3665. CONST
  3666. LVM_GETITEMTEXTA = (LVM_FIRST + 45);
  3667. LVM_GETITEMTEXTW = (LVM_FIRST + 115);
  3668. {$IFDEF UNICODE}
  3669. LVM_GETITEMTEXT = LVM_GETITEMTEXTW;
  3670. {$ELSE}
  3671. LVM_GETITEMTEXT = LVM_GETITEMTEXTA;
  3672. {$ENDIF}
  3673. // Macro 87
  3674. Procedure ListView_GetItemText(hwndLV:hwnd; i : WPARAM ;iSubItem : cint ;pszText : Pointer;cchTextMax :cint);
  3675. CONST
  3676. LVM_SETITEMTEXTA = (LVM_FIRST + 46);
  3677. LVM_SETITEMTEXTW = (LVM_FIRST + 116);
  3678. {$IFDEF UNICODE}
  3679. LVM_SETITEMTEXT = LVM_SETITEMTEXTW;
  3680. {$ELSE}
  3681. LVM_SETITEMTEXT = LVM_SETITEMTEXTA;
  3682. {$ENDIF}
  3683. // Macro 88
  3684. Procedure ListView_SetItemText(hwndLV:hwnd; i : WPARAM ;iSubItem : cint ;pszText : Pointer);
  3685. {$ifdef ie3plus}
  3686. // these flags only apply to LVS_OWNERDATA listviews in report or list mode
  3687. CONST
  3688. LVSICF_NOINVALIDATEALL = $00000001;
  3689. LVSICF_NOSCROLL = $00000002;
  3690. {$ENDIF}
  3691. LVM_SETITEMCOUNT = (LVM_FIRST + 47);
  3692. // Macro 89
  3693. Procedure ListView_SetItemCount( hwndLV : hwnd; cItems : WPARAM);
  3694. {$ifdef ie3plus}
  3695. // Macro 90
  3696. Procedure ListView_SetItemCountEx( hwndLV : hwnd; cItems : WPARAM; dwFlags : LPARAM);
  3697. {$ENDIF}
  3698. TYPE
  3699. PFNLVCOMPARE=Function(a,b,c:LPARAM):cint;
  3700. TLVCompare = PFNLVCOMPARE;
  3701. CONST
  3702. LVM_SORTITEMS = (LVM_FIRST + 48);
  3703. // Macro 91
  3704. Function ListView_SortItems( hwndLV : hwnd;pfnCompare : PFNLVCOMPARE; lPrm : LPARAM):BOOL;
  3705. CONST
  3706. LVM_SETITEMPOSITION32 = (LVM_FIRST + 49);
  3707. // Macro 92
  3708. Procedure ListView_SetItemPosition32(hwndLV:hwnd; i:cint;x0,y0:long);
  3709. CONST
  3710. LVM_GETSELECTEDCOUNT = (LVM_FIRST + 50);
  3711. // Macro 93
  3712. Function ListView_GetSelectedCount( hwndLV : hwnd):UINT;
  3713. CONST
  3714. LVM_GETITEMSPACING = (LVM_FIRST + 51);
  3715. // Macro 94
  3716. Function ListView_GetItemSpacing( hwndLV : hwnd; fSmall : cint ):DWORD;
  3717. CONST
  3718. LVM_GETISEARCHSTRINGA = (LVM_FIRST + 52);
  3719. LVM_GETISEARCHSTRINGW = (LVM_FIRST + 117);
  3720. {$IFDEF UNICODE}
  3721. LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGW;
  3722. {$ELSE}
  3723. LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGA;
  3724. {$ENDIF}
  3725. // Macro 95
  3726. Function ListView_GetISearchString( hwndLV : hwnd; lpsz : LPTSTR):BOOL;
  3727. {$ifdef ie3plus}
  3728. CONST
  3729. LVM_SETICONSPACING = (LVM_FIRST + 53);
  3730. // -1 for cx and cy means we'll use the default (system settings)
  3731. // 0 for cx or cy means use the current setting (allows you to change just one param)
  3732. // Macro 96
  3733. Function ListView_SetIconSpacing( hwndLV : hwnd; cx, cy : cint ):DWORD;
  3734. CONST
  3735. LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54); // optional wParam == mask
  3736. // Macro 97
  3737. Function ListView_SetExtendedListViewStyle( hwndLV : hwnd; dw : cint ):DWORD;
  3738. {$ifdef ie4plus}
  3739. // Macro 98
  3740. Function ListView_SetExtendedListViewStyleEx( hwndLV : hwnd; dwMask, dw : cint ):DWORD;
  3741. {$ENDIF}
  3742. CONST
  3743. LVM_GETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 55);
  3744. // Macro 99
  3745. Function ListView_GetExtendedListViewStyle( hwndLV : hwnd):DWORD;
  3746. CONST
  3747. LVS_EX_GRIDLINES = $00000001;
  3748. LVS_EX_SUBITEMIMAGES = $00000002;
  3749. LVS_EX_CHECKBOXES = $00000004;
  3750. LVS_EX_TRACKSELECT = $00000008;
  3751. LVS_EX_HEADERDRAGDROP = $00000010;
  3752. LVS_EX_FULLROWSELECT = $00000020; // applies to report mode only
  3753. LVS_EX_ONECLICKACTIVATE = $00000040;
  3754. LVS_EX_TWOCLICKACTIVATE = $00000080;
  3755. {$ifdef ie4plus}
  3756. LVS_EX_FLATSB = $00000100;
  3757. LVS_EX_REGIONAL = $00000200;
  3758. LVS_EX_INFOTIP = $00000400; // listview does InfoTips for you
  3759. LVS_EX_UNDERLINEHOT = $00000800;
  3760. LVS_EX_UNDERLINECOLD = $00001000;
  3761. LVS_EX_MULTIWORKAREAS = $00002000;
  3762. {$ENDIF}
  3763. {$ifdef ie5plus}
  3764. LVS_EX_LABELTIP = $00004000; // listview unfolds partly hidden labels if it does not have infotip text
  3765. LVS_EX_BORDERSELECT = $00008000; // border selection style instead of highlight
  3766. {$ENDIF} // End (_WIN32_IE >= 0x0500)
  3767. {$ifdef win32xp}
  3768. LVS_EX_DOUBLEBUFFER = $00010000;
  3769. LVS_EX_HIDELABELS = $00020000;
  3770. LVS_EX_SINGLEROW = $00040000;
  3771. LVS_EX_SNAPTOGRID = $00080000; // Icons automatically snap to grid.
  3772. LVS_EX_SIMPLESELECT = $00100000; // Also changes overlay rendering to top right for icon mode.
  3773. {$ENDIF}
  3774. {$ifdef win32vista}
  3775. LVS_EX_JUSTIFYCOLUMNS = $00200000; // Icons are lined up in columns that use up the whole view area.
  3776. LVS_EX_TRANSPARENTBKGND = $00400000; // Background is painted by the parent via WM_PRINTCLIENT
  3777. LVS_EX_TRANSPARENTSHADOWTEXT = $00800000; // Enable shadow text on transparent backgrounds only (useful with bitmaps)
  3778. LVS_EX_AUTOAUTOARRANGE = $01000000; // Icons automatically arrange if no icon positions have been set
  3779. LVS_EX_HEADERINALLVIEWS = $02000000; // Display column header in all view modes
  3780. LVS_EX_AUTOCHECKSELECT = $08000000;
  3781. LVS_EX_AUTOSIZECOLUMNS = $10000000;
  3782. LVS_EX_COLUMNSNAPPOINTS = $40000000;
  3783. LVS_EX_COLUMNOVERFLOW = $80000000;
  3784. {$endif}
  3785. LVM_GETSUBITEMRECT = (LVM_FIRST + 56);
  3786. // Macro 100
  3787. Function ListView_GetSubItemRect( hwnd : hwnd; iItem : cint;iSubItem, code :cint ;prc:LPRECT):BOOL;
  3788. CONST
  3789. LVM_SUBITEMHITTEST = (LVM_FIRST + 57);
  3790. // Macro 101
  3791. Function ListView_SubItemHitTest( hwnd : hwnd; plvhti : LPLVHITTESTINFO):cint;
  3792. CONST
  3793. LVM_SETCOLUMNORDERARRAY = (LVM_FIRST + 58);
  3794. // Macro 102
  3795. Function ListView_SetColumnOrderArray( hwnd : hwnd; iCount : WPARAM; pi : LPINT):BOOL;
  3796. CONST
  3797. LVM_GETCOLUMNORDERARRAY = (LVM_FIRST + 59);
  3798. // Macro 103
  3799. Function ListView_GetColumnOrderArray( hwnd : hwnd; iCount : WPARAM; pi : LPINT):BOOL;
  3800. CONST
  3801. LVM_SETHOTITEM = (LVM_FIRST + 60);
  3802. // Macro 104
  3803. Function ListView_SetHotItem( hwnd : hwnd; i : WPARAM):cint;
  3804. CONST
  3805. LVM_GETHOTITEM = (LVM_FIRST + 61);
  3806. // Macro 105
  3807. Function ListView_GetHotItem( hwnd : hwnd):cint;
  3808. CONST
  3809. LVM_SETHOTCURSOR = (LVM_FIRST + 62);
  3810. // Macro 106
  3811. Function ListView_SetHotCursor( hwnd : hwnd; hcur : LPARAM):HCURSOR;
  3812. CONST
  3813. LVM_GETHOTCURSOR = (LVM_FIRST + 63);
  3814. // Macro 107
  3815. Function ListView_GetHotCursor( hwnd : hwnd):HCURSOR;
  3816. CONST
  3817. LVM_APPROXIMATEVIEWRECT = (LVM_FIRST + 64);
  3818. // Macro 108
  3819. Function ListView_ApproximateViewRect( hwnd : hwnd; iWidth, iHeight, iCount : cint ):DWORD;
  3820. {$ENDIF} // _WIN32_IE >= 0x0300
  3821. {$ifdef ie4plus}
  3822. CONST
  3823. LV_MAX_WORKAREAS = 16;
  3824. LVM_SETWORKAREAS = (LVM_FIRST + 65);
  3825. // Macro 109
  3826. Function ListView_SetWorkAreas( hwnd : hwnd; nWorkAreas : cint;var prc : RECT ):BOOL;inline;
  3827. Function ListView_SetWorkAreas( hwnd : hwnd; nWorkAreas : cint; prc : PRECT ):BOOL;inline;
  3828. CONST
  3829. LVM_GETWORKAREAS = (LVM_FIRST + 70);
  3830. // Macro 110
  3831. Function ListView_GetWorkAreas( hwnd : hwnd; nWorkAreas : cint;var prc : RECT ):BOOL;
  3832. CONST
  3833. LVM_GETNUMBEROFWORKAREAS = (LVM_FIRST + 73);
  3834. // Macro 111
  3835. Function ListView_GetNumberOfWorkAreas( hwnd : hwnd;var pnWorkAreas : UINT ):BOOL;
  3836. CONST
  3837. LVM_GETSELECTIONMARK = (LVM_FIRST + 66);
  3838. // Macro 112
  3839. Function ListView_GetSelectionMark( hwnd : hwnd):cint;
  3840. CONST
  3841. LVM_SETSELECTIONMARK = (LVM_FIRST + 67);
  3842. // Macro 113
  3843. Function ListView_SetSelectionMark( hwnd : hwnd; i : LPARAM):cint;
  3844. CONST
  3845. LVM_SETHOVERTIME = (LVM_FIRST + 71);
  3846. // Macro 114
  3847. Function ListView_SetHoverTime( hwndLV : hwnd; dwHoverTimeMs : LPARAM):DWORD;
  3848. CONST
  3849. LVM_GETHOVERTIME = (LVM_FIRST + 72);
  3850. // Macro 115
  3851. Function ListView_GetHoverTime( hwndLV : hwnd):DWORD;
  3852. CONST
  3853. LVM_SETTOOLTIPS = (LVM_FIRST + 74);
  3854. // Macro 116
  3855. Function ListView_SetToolTips( hwndLV : hwnd; hwndNewHwnd : WPARAM):HWND;
  3856. CONST
  3857. LVM_GETTOOLTIPS = (LVM_FIRST + 78);
  3858. // Macro 117
  3859. Function ListView_GetToolTips( hwndLV : hwnd):HWND;
  3860. CONST
  3861. LVM_SORTITEMSEX = (LVM_FIRST + 81);
  3862. // Macro 118
  3863. Function ListView_SortItemsEx( hwndLV : hwnd; _pfnCompare : PFNLVCOMPARE; _lPrm : LPARAM):BOOL;
  3864. TYPE
  3865. tagLVBKIMAGEA = Record
  3866. ulFlags : ULONG; // LVBKIF_*
  3867. hbm : HBITMAP;
  3868. pszImage : LPSTR;
  3869. cchImageMax : UINT;
  3870. xOffsetPercent : cint;
  3871. yOffsetPercent : cint;
  3872. END;
  3873. LVBKIMAGEA = tagLVBKIMAGEA;
  3874. LPLVBKIMAGEA = ^tagLVBKIMAGEA;
  3875. TLVBKIMAGEA = tagLVBKIMAGEA;
  3876. PLVBKIMAGEA = ^tagLVBKIMAGEA;
  3877. tagLVBKIMAGEW = Record
  3878. ulFlags : ULONG; // LVBKIF_*
  3879. hbm : HBITMAP;
  3880. pszImage : LPWSTR;
  3881. cchImageMax : UINT;
  3882. xOffsetPercent : cint;
  3883. yOffsetPercent : cint;
  3884. END;
  3885. LVBKIMAGEW = tagLVBKIMAGEW;
  3886. LPLVBKIMAGEW = ^tagLVBKIMAGEW;
  3887. TLVBKIMAGEW = tagLVBKIMAGEW;
  3888. PLVBKIMAGEW = ^tagLVBKIMAGEW;
  3889. CONST
  3890. LVBKIF_SOURCE_NONE = $00000000;
  3891. LVBKIF_SOURCE_HBITMAP = $00000001;
  3892. LVBKIF_SOURCE_URL = $00000002;
  3893. LVBKIF_SOURCE_MASK = $00000003;
  3894. LVBKIF_STYLE_NORMAL = $00000000;
  3895. LVBKIF_STYLE_TILE = $00000010;
  3896. LVBKIF_STYLE_MASK = $00000010;
  3897. {$ifdef win32xp}
  3898. LVBKIF_FLAG_TILEOFFSET = $00000100;
  3899. LVBKIF_TYPE_WATERMARK = $10000000;
  3900. {$ENDIF}
  3901. LVM_SETBKIMAGEA = (LVM_FIRST + 68);
  3902. LVM_SETBKIMAGEW = (LVM_FIRST + 138);
  3903. LVM_GETBKIMAGEA = (LVM_FIRST + 69);
  3904. LVM_GETBKIMAGEW = (LVM_FIRST + 139);
  3905. {$ifdef win32xp}
  3906. LVM_SETSELECTEDCOLUMN = (LVM_FIRST + 140);
  3907. // Macro 119
  3908. Procedure ListView_SetSelectedColumn( hwnd : hwnd; iCol : WPARAM);
  3909. CONST
  3910. LVM_SETTILEWIDTH = (LVM_FIRST + 141);
  3911. // Macro 120
  3912. Procedure ListView_SetTileWidth( hwnd : hwnd; cpWidth : WPARAM);
  3913. CONST
  3914. LV_VIEW_ICON = $0000;
  3915. LV_VIEW_DETAILS = $0001;
  3916. LV_VIEW_SMALLICON = $0002;
  3917. LV_VIEW_LIST = $0003;
  3918. LV_VIEW_TILE = $0004;
  3919. LV_VIEW_MAX = $0004;
  3920. LVM_SETVIEW = (LVM_FIRST + 142);
  3921. // Macro 121
  3922. Function ListView_SetView( hwnd : hwnd; iView : DWORD):DWORD;
  3923. CONST
  3924. LVM_GETVIEW = (LVM_FIRST + 143);
  3925. // Macro 122
  3926. Function ListView_GetView( hwnd : hwnd):DWORD;
  3927. CONST
  3928. LVGF_NONE = $00000000;
  3929. LVGF_HEADER = $00000001;
  3930. LVGF_FOOTER = $00000002;
  3931. LVGF_STATE = $00000004;
  3932. LVGF_ALIGN = $00000008;
  3933. LVGF_GROUPID = $00000010;
  3934. {$ifdef win32vista}
  3935. LVGF_SUBTITLE = $00000100; // pszSubtitle is valid
  3936. LVGF_TASK = $00000200; // pszTask is valid
  3937. LVGF_DESCRIPTIONTOP = $00000400; // pszDescriptionTop is valid
  3938. LVGF_DESCRIPTIONBOTTOM = $00000800; // pszDescriptionBottom is valid
  3939. LVGF_TITLEIMAGE = $00001000; // iTitleImage is valid
  3940. LVGF_EXTENDEDIMAGE = $00002000; // iExtendedImage is valid
  3941. LVGF_ITEMS = $00004000; // iFirstItem and cItems are valid
  3942. LVGF_SUBSET = $00008000; // pszSubsetTitle is valid
  3943. LVGF_SUBSETITEMS = $00010000; // readonly, cItems holds count of items in visible subset, iFirstItem is valid
  3944. {$endif}
  3945. LVGS_NORMAL = $00000000;
  3946. LVGS_COLLAPSED = $00000001;
  3947. LVGS_HIDDEN = $00000002;
  3948. LVGA_HEADER_LEFT = $00000001;
  3949. LVGA_HEADER_CENTER = $00000002;
  3950. LVGA_HEADER_RIGHT = $00000004; // Don't forget to validate exclusivity
  3951. LVGA_FOOTER_LEFT = $00000008;
  3952. LVGA_FOOTER_CENTER = $00000010;
  3953. LVGA_FOOTER_RIGHT = $00000020; // Don't forget to validate exclusivity
  3954. TYPE
  3955. tagLVGROUP = Record
  3956. cbSize : UINT;
  3957. mask : UINT;
  3958. pszHeader : LPWSTR;
  3959. cchHeader : cint;
  3960. pszFooter : LPWSTR;
  3961. cchFooter : cint;
  3962. iGroupId : cint;
  3963. stateMask : UINT;
  3964. state : UINT;
  3965. uAlign : UINT;
  3966. {$ifdef win32vista}
  3967. pszSubtitle : LPWSTR;
  3968. cchSubtitle : UINT;
  3969. pszTask : LPWSTR;
  3970. cchTask : UINT;
  3971. pszDescriptionTop : LPWSTR;
  3972. cchDescriptionTop : UINT;
  3973. pszDescriptionBottom: LPWSTR;
  3974. cchDescriptionBottom: UINT;
  3975. iTitleImage : cint;
  3976. iExtendedImage : cint;
  3977. iFirstItem : cint; // Read only
  3978. cItems : UINT; // Read only
  3979. pszSubsetTitle : LPWSTR;// NULL if group is not subset
  3980. cchSubsetTitle : UINT;
  3981. {$endif}
  3982. END;
  3983. LVGROUP = tagLVGROUP;
  3984. PLVGROUP = ^tagLVGROUP;
  3985. TLVGROUP = tagLVGROUP;
  3986. CONST
  3987. LVM_INSERTGROUP = (LVM_FIRST + 145);
  3988. // Macro 123
  3989. Procedure ListView_InsertGroup( hwnd : hwnd; index : WPARAM; pgrp : LPARAM);
  3990. CONST
  3991. LVM_SETGROUPINFO = (LVM_FIRST + 147);
  3992. // Macro 124
  3993. Procedure ListView_SetGroupInfo( hwnd : hwnd; iGroupId : WPARAM; pgrp : LPARAM);
  3994. CONST
  3995. LVM_GETGROUPINFO = (LVM_FIRST + 149);
  3996. // Macro 125
  3997. Procedure ListView_GetGroupInfo( hwnd : hwnd; iGroupId : WPARAM; pgrp : LPARAM);
  3998. CONST
  3999. LVM_REMOVEGROUP = (LVM_FIRST + 150);
  4000. // Macro 126
  4001. Procedure ListView_RemoveGroup( hwnd : hwnd; iGroupId : WPARAM);
  4002. CONST
  4003. LVM_MOVEGROUP = (LVM_FIRST + 151);
  4004. // Macro 127
  4005. Procedure ListView_MoveGroup( hwnd : hwnd; iGroupId : WPARAM; toIndex : LPARAM);
  4006. CONST
  4007. LVM_MOVEITEMTOGROUP = (LVM_FIRST + 154);
  4008. // Macro 128
  4009. Procedure ListView_MoveItemToGroup( hwnd : hwnd; idItemFrom : WPARAM; idGroupTo : LPARAM);
  4010. CONST
  4011. LVGMF_NONE = $00000000;
  4012. LVGMF_BORDERSIZE = $00000001;
  4013. LVGMF_BORDERCOLOR = $00000002;
  4014. LVGMF_TEXTCOLOR = $00000004;
  4015. TYPE
  4016. tagLVGROUPMETRICS = Record
  4017. cbSize : UINT;
  4018. mask : UINT;
  4019. Left : UINT;
  4020. Top : UINT;
  4021. Right : UINT;
  4022. Bottom : UINT;
  4023. crLeft : COLORREF;
  4024. crTop : COLORREF;
  4025. crRight : COLORREF;
  4026. crBottom : COLORREF;
  4027. crHeader : COLORREF;
  4028. crFooter : COLORREF;
  4029. END;
  4030. LVGROUPMETRICS = tagLVGROUPMETRICS;
  4031. PLVGROUPMETRICS = ^tagLVGROUPMETRICS;
  4032. TLVGROUPMETRICS = tagLVGROUPMETRICS;
  4033. CONST
  4034. LVM_SETGROUPMETRICS = (LVM_FIRST + 155);
  4035. // Macro 129
  4036. Procedure ListView_SetGroupMetrics( hwnd : hwnd; pGroupMetrics : LPARAM);
  4037. CONST
  4038. LVM_GETGROUPMETRICS = (LVM_FIRST + 156);
  4039. // Macro 130
  4040. Procedure ListView_GetGroupMetrics( hwnd : hwnd; pGroupMetrics : LPARAM);
  4041. CONST
  4042. LVM_ENABLEGROUPVIEW = (LVM_FIRST + 157);
  4043. // Macro 131
  4044. Procedure ListView_EnableGroupView( hwnd : hwnd; fEnable : WPARAM);
  4045. TYPE
  4046. PFNLVGROUPCOMPARE = function(i,j:cint;k:pointer):cint; StdCall;
  4047. CONST
  4048. LVM_SORTGROUPS = (LVM_FIRST + 158);
  4049. // Macro 132
  4050. Procedure ListView_SortGroups( hwnd : hwnd; _pfnGroupCompate : WPARAM; _plv : LPARAM);
  4051. TYPE
  4052. tagLVINSERTGROUPSORTED = Record
  4053. pfnGroupCompare : PFNLVGROUPCOMPARE;
  4054. pvData : Pointer;
  4055. lvGroup : LVGROUP;
  4056. END;
  4057. LVINSERTGROUPSORTED = tagLVINSERTGROUPSORTED;
  4058. PLVINSERTGROUPSORTED = ^tagLVINSERTGROUPSORTED;
  4059. TLVINSERTGROUPSORTED = tagLVINSERTGROUPSORTED;
  4060. CONST
  4061. LVM_INSERTGROUPSORTED = (LVM_FIRST + 159);
  4062. // Macro 133
  4063. Procedure ListView_InsertGroupSorted( hwnd : hwnd; structInsert : WPARAM);
  4064. CONST
  4065. LVM_REMOVEALLGROUPS = (LVM_FIRST + 160);
  4066. // Macro 134
  4067. Procedure ListView_RemoveAllGroups( hwnd : hwnd);
  4068. CONST
  4069. LVM_HASGROUP = (LVM_FIRST + 161);
  4070. // Macro 135
  4071. Procedure ListView_HasGroup( hwnd : hwnd; dwGroupId : DWORD );
  4072. CONST
  4073. LVTVIF_AUTOSIZE = $00000000;
  4074. LVTVIF_FIXEDWIDTH = $00000001;
  4075. LVTVIF_FIXEDHEIGHT = $00000002;
  4076. LVTVIF_FIXEDSIZE = $00000003;
  4077. {$ifdef win32vista}
  4078. LVTVIF_EXTENDED = $00000004;
  4079. {$endif}
  4080. LVTVIM_TILESIZE = $00000001;
  4081. LVTVIM_COLUMNS = $00000002;
  4082. LVTVIM_LABELMARGIN = $00000004;
  4083. TYPE
  4084. tagLVTILEVIEWINFO = Record
  4085. cbSize : UINT;
  4086. dwMask : DWORD; //LVTVIM_*
  4087. dwFlags : DWORD; //LVTVIF_*
  4088. sizeTile : SIZE;
  4089. cLines : cint;
  4090. rcLabelMargin : RECT;
  4091. END;
  4092. LVTILEVIEWINFO = tagLVTILEVIEWINFO;
  4093. PLVTILEVIEWINFO = ^tagLVTILEVIEWINFO;
  4094. TLVTILEVIEWINFO = tagLVTILEVIEWINFO;
  4095. tagLVTILEINFO = Record
  4096. cbSize : UINT;
  4097. iItem : cint;
  4098. cColumns : UINT;
  4099. puColumns : PUINT;
  4100. {$ifdef win32vista}
  4101. piColFmt : PCINT;
  4102. {$endif}
  4103. END;
  4104. LVTILEINFO = tagLVTILEINFO;
  4105. PLVTILEINFO = ^tagLVTILEINFO;
  4106. TLVTILEINFO = tagLVTILEINFO;
  4107. CONST
  4108. LVM_SETTILEVIEWINFO = (LVM_FIRST + 162);
  4109. // Macro 136
  4110. Procedure ListView_SetTileViewInfo( hwnd : hwnd; ptvi : LPARAM);
  4111. CONST
  4112. LVM_GETTILEVIEWINFO = (LVM_FIRST + 163);
  4113. // Macro 137
  4114. Procedure ListView_GetTileViewInfo( hwnd : hwnd; ptvi : LPARAM);
  4115. CONST
  4116. LVM_SETTILEINFO = (LVM_FIRST + 164);
  4117. // Macro 138
  4118. Procedure ListView_SetTileInfo( hwnd : hwnd; pti : LPARAM);
  4119. CONST
  4120. LVM_GETTILEINFO = (LVM_FIRST + 165);
  4121. // Macro 139
  4122. Procedure ListView_GetTileInfo( hwnd : hwnd; pti : LPARAM);
  4123. TYPE
  4124. LVINSERTMARK = Record
  4125. cbSize : UINT;
  4126. dwFlags : DWORD;
  4127. iItem : cint;
  4128. dwReserved : DWORD;
  4129. END;
  4130. LPLVINSERTMARK = ^LVINSERTMARK;
  4131. TLVINSERTMARK = LVINSERTMARK;
  4132. PLVINSERTMARK = ^LVINSERTMARK;
  4133. CONST
  4134. LVIM_AFTER = $00000001; // TRUE = insert After iItem, otherwise before
  4135. LVM_SETINSERTMARK = (LVM_FIRST + 166);
  4136. // Macro 140
  4137. Function ListView_SetInsertMark( hwnd : hwnd; lvim : lparam ):BOOL;
  4138. CONST
  4139. LVM_GETINSERTMARK = (LVM_FIRST + 167);
  4140. // Macro 141
  4141. Function ListView_GetInsertMark( hwnd : hwnd; lvim : lparam ):BOOL;
  4142. CONST
  4143. LVM_INSERTMARKHITTEST = (LVM_FIRST + 168);
  4144. // Macro 142
  4145. Function ListView_InsertMarkHitTest( hwnd : hwnd; point : LPPOINT; lvim : LPLVINSERTMARK):cint;
  4146. CONST
  4147. LVM_GETINSERTMARKRECT = (LVM_FIRST + 169);
  4148. // Macro 143
  4149. Function ListView_GetInsertMarkRect( hwnd : hwnd; rc : LPRECT):cint;
  4150. CONST
  4151. LVM_SETINSERTMARKCOLOR = (LVM_FIRST + 170);
  4152. // Macro 144
  4153. Function ListView_SetInsertMarkColor( hwnd : hwnd; color : COLORREF):COLORREF;
  4154. CONST
  4155. LVM_GETINSERTMARKCOLOR = (LVM_FIRST + 171);
  4156. // Macro 145
  4157. Function ListView_GetInsertMarkColor( hwnd : hwnd):COLORREF;
  4158. TYPE
  4159. tagLVSETINFOTIP = Record
  4160. cbSize : UINT;
  4161. dwFlags : DWORD;
  4162. pszText : LPWSTR;
  4163. iItem : cint;
  4164. iSubItem : cint;
  4165. END;
  4166. LVSETINFOTIP = tagLVSETINFOTIP;
  4167. PLVSETINFOTIP = ^tagLVSETINFOTIP;
  4168. TLVSETINFOTIP = tagLVSETINFOTIP;
  4169. CONST
  4170. LVM_SETINFOTIP = (LVM_FIRST + 173);
  4171. // Macro 146
  4172. Function ListView_SetInfoTip( hwndLV : hwnd; plvInfoTip : LPARAM):BOOL;
  4173. CONST
  4174. LVM_GETSELECTEDCOLUMN = (LVM_FIRST + 174);
  4175. // Macro 147
  4176. Function ListView_GetSelectedColumn( hwnd : hwnd):UINT;
  4177. CONST
  4178. LVM_ISGROUPVIEWENABLED = (LVM_FIRST + 175);
  4179. // Macro 148
  4180. Function ListView_IsGroupViewEnabled( hwnd : hwnd):BOOL;
  4181. CONST
  4182. LVM_GETOUTLINECOLOR = (LVM_FIRST + 176);
  4183. // Macro 149
  4184. Function ListView_GetOutlineColor( hwnd : hwnd):COLORREF;
  4185. CONST
  4186. LVM_SETOUTLINECOLOR = (LVM_FIRST + 177);
  4187. // Macro 150
  4188. Function ListView_SetOutlineColor( hwnd : hwnd; color : COLORREF):COLORREF;
  4189. CONST
  4190. LVM_CANCELEDITLABEL = (LVM_FIRST + 179);
  4191. // Macro 151
  4192. Procedure ListView_CancelEditLabel( hwnd : hwnd);
  4193. // These next to methods make it easy to identify an item that can be repositioned
  4194. // within listview. For example: Many developers use the lParam to store an identifier that is
  4195. // unique. Unfortunatly, in order to find this item, they have to iterate through all of the items
  4196. // in the listview. Listview will maintain a unique identifier. The upper bound is the size of a DWORD.
  4197. CONST
  4198. LVM_MAPINDEXTOID = (LVM_FIRST + 180);
  4199. // Macro 152
  4200. Function ListView_MapIndexToID( hwnd : hwnd; index : WPARAM):UINT;
  4201. CONST
  4202. LVM_MAPIDTOINDEX = (LVM_FIRST + 181);
  4203. // Macro 153
  4204. Function ListView_MapIDToIndex( hwnd : hwnd; id : WPARAM):UINT;
  4205. const LVM_ISITEMVISIBLE = (LVM_FIRST + 182);
  4206. // macro 153b
  4207. function ListView_IsItemVisible(hwnd:hwnd; aindex:cuint):cuint;
  4208. // (UINT)SNDMSG((hwnd), LVM_ISITEMVISIBLE, (WPARAM)(index), (LPARAM)0)
  4209. {$ENDIF}
  4210. {$ifdef win32vista}
  4211. CONST
  4212. LVM_GETEMPTYTEXT = (LVM_FIRST + 204);
  4213. LVM_GETFOOTERRECT = (LVM_FIRST + 205);
  4214. LVM_GETFOOTERINFO = (LVM_FIRST + 206);
  4215. LVM_GETFOOTERITEMRECT = (LVM_FIRST + 207);
  4216. LVM_GETFOOTERITEM = (LVM_FIRST + 208);
  4217. LVM_GETITEMINDEXRECT = (LVM_FIRST + 209);
  4218. LVM_SETITEMINDEXSTATE = (LVM_FIRST + 210);
  4219. LVM_GETNEXTITEMINDEX = (LVM_FIRST + 211);
  4220. // footer flags
  4221. LVFF_ITEMCOUNT = $00000001;
  4222. // footer item flags
  4223. LVFIF_TEXT = $00000001;
  4224. LVFIF_STATE = $00000002;
  4225. // footer item state
  4226. LVFIS_FOCUSED = $0001;
  4227. TYPE
  4228. tagLVFOOTERINFO = Record
  4229. mask : CUINT; // LVFF_*
  4230. pszText : LPWSTR;
  4231. cchTextMax: CINT;
  4232. cItems : CUINT;
  4233. end;
  4234. LVFOOTERINFO = tagLVFOOTERINFO;
  4235. LPLVFOOTERINFO = ^tagLVFOOTERINFO;
  4236. TLVFOOTERINFO = tagLVFOOTERINFO;
  4237. PLVFOOTERINFO = LPLVFOOTERINFO;
  4238. tagLVFOOTERITEM = Record
  4239. mask : CUINT; // LVFIF_*
  4240. iItem : CINT;
  4241. pszText : LPWSTR;
  4242. cchTextMax: CINT;
  4243. state : CUINT; // LVFIS_*
  4244. stateMask : CUINT; // LVFIS_*
  4245. end;
  4246. LVFOOTERITEM = tagLVFOOTERITEM;
  4247. LPLVFOOTERITEM = ^tagLVFOOTERITEM;
  4248. TLVFOOTERITEM = tagLVFOOTERITEM;
  4249. PLVFOOTERITEM = LPLVFOOTERITEM;
  4250. // supports a single item in multiple groups.
  4251. tagLVITEMINDEX = Record
  4252. iItem : CINT; // listview item index
  4253. iGroup : CINT; // group index (must be -1 if group view is not enabled)
  4254. end;
  4255. LVITEMINDEX = tagLVITEMINDEX;
  4256. PLVITEMINDEX = ^tagLVITEMINDEX;
  4257. tLVITEMINDEX = TAGLVITEMINDEX;
  4258. function ListView_SetGroupHeaderImageList(hwnd:HWNd;himl:HIMAGELIST):HIMAGELIST;
  4259. function ListView_GetGroupHeaderImageList(hwnd:HWND):HIMAGELIST;
  4260. function ListView_GetEmptyText(hwnd:HWND;pszText:LPWSTR; cchText:CUINT):BOOL;
  4261. function ListView_GetFooterRect(hwnd:HWND; prc:PRECT):BOOL;
  4262. function ListView_GetFooterInfo(hwnd:HWND;plvfi: LPLVFOOTERINFO ):BOOL;
  4263. function ListView_GetFooterItemRect(hwnd:HWND;iItem:CUINT;prc:PRECT):BOOL;
  4264. function ListView_GetFooterItem(hwnd:HWND;iItem:CUINT; pfi:PLVFOOTERITEM):BOOL;
  4265. function ListView_GetItemIndexRect(hwnd:hwnd; plvii:PLVITEMINDEX; iSubItem:clong; code:clong; prc:LPRECT) :BOOL;
  4266. function ListView_SetItemIndexState(hwndLV:HWND; plvii:PLVITEMINDEX; data:CUINT; mask:CUINT):HRESULT;
  4267. function ListView_GetNextItemIndex(hwnd:HWND;plvii:PLVITEMINDEX; flags:LPARAM):BOOL;
  4268. {$endif}
  4269. Type
  4270. {$IFDEF UNICODE}
  4271. LVBKIMAGE = LVBKIMAGEW;
  4272. LPLVBKIMAGE = LPLVBKIMAGEW;
  4273. CONST
  4274. LVM_SETBKIMAGE = LVM_SETBKIMAGEW;
  4275. LVM_GETBKIMAGE = LVM_GETBKIMAGEW;
  4276. {$ELSE}
  4277. LVBKIMAGE = LVBKIMAGEA;
  4278. LPLVBKIMAGE = LPLVBKIMAGEA;
  4279. CONST
  4280. LVM_SETBKIMAGE = LVM_SETBKIMAGEA;
  4281. LVM_GETBKIMAGE = LVM_GETBKIMAGEA;
  4282. {$ENDIF}
  4283. // Macro 154
  4284. Function ListView_SetBkImage( hwnd : hwnd; plvbki : LPARAM):BOOL;
  4285. // Macro 155
  4286. Function ListView_GetBkImage( hwnd : hwnd; plvbki : LPARAM):BOOL;
  4287. {$ENDIF} // _WIN32_IE >= 0x0400
  4288. TYPE
  4289. tagNMLISTVIEW = Record
  4290. hdr : NMHDR;
  4291. iItem : cint;
  4292. iSubItem : cint;
  4293. uNewState : UINT;
  4294. uOldState : UINT;
  4295. uChanged : UINT;
  4296. ptAction : POINT;
  4297. lParam : LPARAM;
  4298. END;
  4299. NMLISTVIEW = tagNMLISTVIEW;
  4300. LPNMLISTVIEW = ^tagNMLISTVIEW;
  4301. TNMLISTVIEW = tagNMLISTVIEW;
  4302. PNMLISTVIEW = ^tagNMLISTVIEW;
  4303. {$ifdef IE4plus}
  4304. // NMITEMACTIVATE is used instead of NMLISTVIEW in IE >= 0x400
  4305. // therefore all the fields are the same except for extra uKeyFlags
  4306. // they are used to store key flags at the time of the single click with
  4307. // delayed activation - because by the time the timer goes off a user may
  4308. // not hold the keys (shift, ctrl) any more
  4309. tagNMITEMACTIVATE = Record
  4310. hdr : NMHDR;
  4311. iItem : cint;
  4312. iSubItem : cint;
  4313. uNewState : UINT;
  4314. uOldState : UINT;
  4315. uChanged : UINT;
  4316. ptAction : POINT;
  4317. lParam : LPARAM;
  4318. uKeyFlags : UINT;
  4319. END;
  4320. NMITEMACTIVATE = tagNMITEMACTIVATE;
  4321. LPNMITEMACTIVATE = ^tagNMITEMACTIVATE;
  4322. TNMITEMACTIVATE = tagNMITEMACTIVATE;
  4323. PNMITEMACTIVATE = ^tagNMITEMACTIVATE;
  4324. // key flags stored in uKeyFlags
  4325. CONST
  4326. LVKF_ALT = $0001;
  4327. LVKF_CONTROL = $0002;
  4328. LVKF_SHIFT = $0004;
  4329. {$ENDIF} //(_WIN32_IE >= 0x0400)
  4330. Type
  4331. {$ifdef ie3plus}
  4332. LPNM_LISTVIEW = LPNMLISTVIEW;
  4333. NM_LISTVIEW = NMLISTVIEW;
  4334. {$ELSE}
  4335. tagNMLISTVIEW = _NM_LISTVIEW;
  4336. NMLISTVIEW = NM_LISTVIEW;
  4337. LPNMLISTVIEW = LPNM_LISTVIEW;
  4338. {$ENDIF}
  4339. {$ifdef ie3plus}
  4340. // #define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLVCUSTOMDRW, clrTextBk)
  4341. TYPE
  4342. tagNMLVCUSTOMDRAW = Record
  4343. nmcd : NMCUSTOMDRAW;
  4344. clrText : COLORREF;
  4345. clrTextBk : COLORREF;
  4346. {$ifdef ie4plus}
  4347. iSubItem : cint;
  4348. {$ENDIF}
  4349. {$ifdef win32xp}
  4350. dwItemType : DWORD;
  4351. clrFace : COLORREF;
  4352. iIconEffect : cint;
  4353. iIconPhase : cint;
  4354. iPartId : cint;
  4355. iStateId : cint;
  4356. rcText : RECT;
  4357. uAlign : UINT; // Alignment. Use LVGA_HEADER_CENTER, LVGA_HEADER_RIGHT, LVGA_HEADER_LEFT
  4358. {$ENDIF}
  4359. END;
  4360. NMLVCUSTOMDRAW = tagNMLVCUSTOMDRAW;
  4361. LPNMLVCUSTOMDRAW = ^tagNMLVCUSTOMDRAW;
  4362. TNMLVCUSTOMDRAW = tagNMLVCUSTOMDRAW;
  4363. PNMLVCUSTOMDRAW = ^tagNMLVCUSTOMDRAW;
  4364. // dwItemType
  4365. CONST
  4366. LVCDI_ITEM = $00000000;
  4367. LVCDI_GROUP = $00000001;
  4368. // ListView custom draw return values
  4369. LVCDRF_NOSELECT = $00010000;
  4370. LVCDRF_NOGROUPFRAME = $00020000;
  4371. TYPE
  4372. tagNMLVCACHEHINT = Record
  4373. hdr : NMHDR;
  4374. iFrom : cint;
  4375. iTo : cint;
  4376. END;
  4377. NMLVCACHEHINT = tagNMLVCACHEHINT;
  4378. LPNMLVCACHEHINT = ^tagNMLVCACHEHINT;
  4379. TNMLVCACHEHINT = tagNMLVCACHEHINT;
  4380. PNMLVCACHEHINT = ^tagNMLVCACHEHINT;
  4381. LPNM_CACHEHINT = LPNMLVCACHEHINT;
  4382. PNM_CACHEHINT = LPNMLVCACHEHINT;
  4383. NM_CACHEHINT = NMLVCACHEHINT;
  4384. tagNMLVFINDITEMA = Record
  4385. hdr : NMHDR;
  4386. iStart : cint;
  4387. lvfi : LVFINDINFOA;
  4388. END;
  4389. NMLVFINDITEMA = tagNMLVFINDITEMA;
  4390. LPNMLVFINDITEMA = ^tagNMLVFINDITEMA;
  4391. TNMLVFINDITEMA = tagNMLVFINDITEMA;
  4392. PNMLVFINDITEMA = ^tagNMLVFINDITEMA;
  4393. tagNMLVFINDITEMW = Record
  4394. hdr : NMHDR;
  4395. iStart : cint;
  4396. lvfi : LVFINDINFOW;
  4397. END;
  4398. NMLVFINDITEMW = tagNMLVFINDITEMW;
  4399. LPNMLVFINDITEMW = ^tagNMLVFINDITEMW;
  4400. TNMLVFINDITEMW = tagNMLVFINDITEMW;
  4401. PNMLVFINDITEMW = ^tagNMLVFINDITEMW;
  4402. PNM_FINDITEMA = LPNMLVFINDITEMA;
  4403. LPNM_FINDITEMA = LPNMLVFINDITEMA;
  4404. NM_FINDITEMA = NMLVFINDITEMA;
  4405. PNM_FINDITEMW = LPNMLVFINDITEMW;
  4406. LPNM_FINDITEMW = LPNMLVFINDITEMW;
  4407. NM_FINDITEMW = NMLVFINDITEMW;
  4408. {$IFDEF UNICODE}
  4409. PNM_FINDITEM = PNM_FINDITEMW;
  4410. LPNM_FINDITEM = LPNM_FINDITEMW;
  4411. NM_FINDITEM = NM_FINDITEMW;
  4412. NMLVFINDITEM = NMLVFINDITEMW;
  4413. LPNMLVFINDITEM = LPNMLVFINDITEMW;
  4414. {$ELSE}
  4415. PNM_FINDITEM = PNM_FINDITEMA;
  4416. LPNM_FINDITEM = LPNM_FINDITEMA;
  4417. NM_FINDITEM = NM_FINDITEMA;
  4418. NMLVFINDITEM = NMLVFINDITEMA;
  4419. LPNMLVFINDITEM = LPNMLVFINDITEMA;
  4420. {$ENDIF}
  4421. PNMLVFindItem = LPNMLVFINDITEM;
  4422. TNMLVFindItem = NMLVFINDITEM;
  4423. tagNMLVODSTATECHANGE = Record
  4424. hdr : NMHDR;
  4425. iFrom : cint;
  4426. iTo : cint;
  4427. uNewState : UINT;
  4428. uOldState : UINT;
  4429. END;
  4430. NMLVODSTATECHANGE = tagNMLVODSTATECHANGE;
  4431. LPNMLVODSTATECHANGE = ^tagNMLVODSTATECHANGE;
  4432. TNMLVODSTATECHANGE = tagNMLVODSTATECHANGE;
  4433. PNMLVODSTATECHANGE = ^tagNMLVODSTATECHANGE;
  4434. PNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
  4435. LPNM_ODSTATECHANGE = LPNMLVODSTATECHANGE;
  4436. NM_ODSTATECHANGE = NMLVODSTATECHANGE;
  4437. {$ENDIF} // _WIN32_IE >= 0x0300
  4438. CONST
  4439. LVN_ITEMCHANGING = (LVN_FIRST-0);
  4440. LVN_ITEMCHANGED = (LVN_FIRST-1);
  4441. LVN_INSERTITEM = (LVN_FIRST-2);
  4442. LVN_DELETEITEM = (LVN_FIRST-3);
  4443. LVN_DELETEALLITEMS = (LVN_FIRST-4);
  4444. LVN_BEGINLABELEDITA = (LVN_FIRST-5);
  4445. LVN_BEGINLABELEDITW = (LVN_FIRST-75);
  4446. LVN_ENDLABELEDITA = (LVN_FIRST-6);
  4447. LVN_ENDLABELEDITW = (LVN_FIRST-76);
  4448. LVN_COLUMNCLICK = (LVN_FIRST-8);
  4449. LVN_BEGINDRAG = (LVN_FIRST-9);
  4450. LVN_BEGINRDRAG = (LVN_FIRST-11);
  4451. {$ifdef ie3plus}
  4452. LVN_ODCACHEHINT = (LVN_FIRST-13);
  4453. LVN_ODFINDITEMA = (LVN_FIRST-52);
  4454. LVN_ODFINDITEMW = (LVN_FIRST-79);
  4455. LVN_ITEMACTIVATE = (LVN_FIRST-14);
  4456. LVN_ODSTATECHANGED = (LVN_FIRST-15);
  4457. Const
  4458. {$IFDEF UNICODE}
  4459. LVN_ODFINDITEM = LVN_ODFINDITEMW;
  4460. {$ELSE}
  4461. LVN_ODFINDITEM = LVN_ODFINDITEMA;
  4462. {$ENDIF}
  4463. {$ENDIF} // _WIN32_IE >= 0x0300
  4464. CONST
  4465. {$ifdef ie4plus}
  4466. LVN_HOTTRACK = (LVN_FIRST-21);
  4467. {$ENDIF}
  4468. LVN_GETDISPINFOA = (LVN_FIRST-50);
  4469. LVN_GETDISPINFOW = (LVN_FIRST-77);
  4470. LVN_SETDISPINFOA = (LVN_FIRST-51);
  4471. LVN_SETDISPINFOW = (LVN_FIRST-78);
  4472. Const
  4473. {$IFDEF UNICODE}
  4474. LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITW;
  4475. LVN_ENDLABELEDIT = LVN_ENDLABELEDITW;
  4476. LVN_GETDISPINFO = LVN_GETDISPINFOW;
  4477. LVN_SETDISPINFO = LVN_SETDISPINFOW;
  4478. {$ELSE}
  4479. LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITA;
  4480. LVN_ENDLABELEDIT = LVN_ENDLABELEDITA;
  4481. LVN_GETDISPINFO = LVN_GETDISPINFOA;
  4482. LVN_SETDISPINFO = LVN_SETDISPINFOA;
  4483. {$ENDIF}
  4484. CONST
  4485. LVIF_DI_SETITEM = $1000;
  4486. TYPE
  4487. tagLVDISPINFO = Record
  4488. hdr : NMHDR;
  4489. item : LVITEMA;
  4490. END;
  4491. NMLVDISPINFOA = tagLVDISPINFO;
  4492. LPNMLVDISPINFOA = ^tagLVDISPINFO;
  4493. TLVDISPINFO = tagLVDISPINFO;
  4494. PLVDISPINFO = ^tagLVDISPINFO;
  4495. tagLVDISPINFOW = Record
  4496. hdr : NMHDR;
  4497. item : LVITEMW;
  4498. END;
  4499. NMLVDISPINFOW = tagLVDISPINFOW;
  4500. LPNMLVDISPINFOW = ^tagLVDISPINFOW;
  4501. TLVDISPINFOW = tagLVDISPINFOW;
  4502. PLVDISPINFOW = ^tagLVDISPINFOW;
  4503. {$IFDEF UNICODE}
  4504. NMLVDISPINFO = NMLVDISPINFOW;
  4505. {$ELSE}
  4506. NMLVDISPINFO = NMLVDISPINFOA;
  4507. {$ENDIF}
  4508. {$ifdef ie3plus}
  4509. LV_DISPINFOA = NMLVDISPINFOA;
  4510. LV_DISPINFOW = NMLVDISPINFOW;
  4511. {$ELSE}
  4512. tagLVDISPINFO = _LV_DISPINFO;
  4513. NMLVDISPINFOA = LV_DISPINFOA;
  4514. tagLVDISPINFOW = _LV_DISPINFOW;
  4515. NMLVDISPINFOW = LV_DISPINFOW;
  4516. {$ENDIF}
  4517. LV_DISPINFO = NMLVDISPINFO;
  4518. CONST
  4519. LVN_KEYDOWN = (LVN_FIRST-55);
  4520. {$IFDEF _WIN32}
  4521. // include <pshpack1.h>
  4522. {$ENDIF}
  4523. TYPE
  4524. tagLVKEYDOWN = Record
  4525. hdr : NMHDR;
  4526. wVKey : WORD;
  4527. flags : UINT;
  4528. END;
  4529. NMLVKEYDOWN = tagLVKEYDOWN;
  4530. LPNMLVKEYDOWN = ^tagLVKEYDOWN;
  4531. TLVKEYDOWN = tagLVKEYDOWN;
  4532. PLVKEYDOWN = ^tagLVKEYDOWN;
  4533. {$IFDEF _WIN32}
  4534. //include <poppack.h>
  4535. {$ENDIF}
  4536. {$ifdef ie3plus}
  4537. CONST
  4538. LVN_MARQUEEBEGIN = (LVN_FIRST-56);
  4539. {$ENDIF}
  4540. {$ifdef win32vista}
  4541. Type
  4542. tagNMLVLIN = Record
  4543. hdr: NMHDR;
  4544. link: LITEM;
  4545. iItem: cint;
  4546. iSubItem: cint;
  4547. end;
  4548. NMLVLINK = tagNMLVLIN;
  4549. TNMLVLINK = tagNMLVLIN;
  4550. PNMLVLINK = ^tagNMLVLIN;
  4551. {$endif}
  4552. {$ifdef ie4plus}
  4553. TYPE
  4554. tagNMLVGETINFOTIPA = Record
  4555. hdr : NMHDR;
  4556. dwFlags : DWORD;
  4557. pszText : LPSTR;
  4558. cchTextMax : cint;
  4559. iItem : cint;
  4560. iSubItem : cint;
  4561. lParam : LPARAM;
  4562. END;
  4563. NMLVGETINFOTIPA = tagNMLVGETINFOTIPA;
  4564. LPNMLVGETINFOTIPA = ^tagNMLVGETINFOTIPA;
  4565. TNMLVGETINFOTIPA = tagNMLVGETINFOTIPA;
  4566. PNMLVGETINFOTIPA = ^tagNMLVGETINFOTIPA;
  4567. tagNMLVGETINFOTIPW = Record
  4568. hdr : NMHDR;
  4569. dwFlags : DWORD;
  4570. pszText : LPWSTR;
  4571. cchTextMax : cint;
  4572. iItem : cint;
  4573. iSubItem : cint;
  4574. lParam : LPARAM;
  4575. END;
  4576. NMLVGETINFOTIPW = tagNMLVGETINFOTIPW;
  4577. LPNMLVGETINFOTIPW = ^tagNMLVGETINFOTIPW;
  4578. TNMLVGETINFOTIPW = tagNMLVGETINFOTIPW;
  4579. PNMLVGETINFOTIPW = ^tagNMLVGETINFOTIPW;
  4580. {$ifdef ie3plus}
  4581. LV_KEYDOWN = NMLVKEYDOWN;
  4582. {$ELSE}
  4583. tagLVKEYDOWN = _LV_KEYDOWN;
  4584. NMLVKEYDOWN = LV_KEYDOWN;
  4585. {$ENDIF}
  4586. // NMLVGETINFOTIPA.dwFlag values
  4587. CONST
  4588. LVGIT_UNFOLDED = $0001;
  4589. LVN_GETINFOTIPA = (LVN_FIRST-57);
  4590. LVN_GETINFOTIPW = (LVN_FIRST-58);
  4591. LVN_INCREMENTALSEARCHA = (LVN_FIRST-62);
  4592. LVN_INCREMENTALSEARCHW = (LVN_FIRST-63);
  4593. LVNSCH_DEFAULT = -1;
  4594. LVNSCH_ERROR = -2;
  4595. LVNSCH_IGNORE = -3;
  4596. {$ifdef win32vista}
  4597. LVN_COLUMNDROPDOWN = (LVN_FIRST-64);
  4598. LVN_COLUMNOVERFLOWCLICK = (LVN_FIRST-66);
  4599. {$endif}
  4600. Const
  4601. {$IFDEF UNICODE}
  4602. LVN_GETINFOTIP = LVN_GETINFOTIPW;
  4603. type
  4604. NMLVGETINFOTIP = NMLVGETINFOTIPW;
  4605. LPNMLVGETINFOTIP = LPNMLVGETINFOTIPW;
  4606. {$ELSE}
  4607. LVN_GETINFOTIP = LVN_GETINFOTIPA;
  4608. type
  4609. NMLVGETINFOTIP = NMLVGETINFOTIPA;
  4610. LPNMLVGETINFOTIP = LPNMLVGETINFOTIPA;
  4611. {$ENDIF}
  4612. {$ENDIF} // _WIN32_IE >= 0x0400
  4613. {$ifdef win32xp} // actually 2003
  4614. tagNMLVSCROLL = Record
  4615. hdr : NMHDR;
  4616. dx : cint;
  4617. dy : cint;
  4618. END;
  4619. NMLVSCROLL = tagNMLVSCROLL;
  4620. LPNMLVSCROLL = ^tagNMLVSCROLL;
  4621. TNMLVSCROLL = tagNMLVSCROLL;
  4622. PNMLVSCROLL = ^tagNMLVSCROLL;
  4623. CONST
  4624. LVN_BEGINSCROLL = (LVN_FIRST-80);
  4625. LVN_ENDSCROLL = (LVN_FIRST-81);
  4626. // {$ENDIF}
  4627. {$ifdef win32vista}
  4628. LVN_LINKCLICK = (LVN_FIRST-84);
  4629. LVN_GETEMPTYMARKUP = (LVN_FIRST-87);
  4630. EMF_CENTERED = $00000001; // render markup centered in the listview area
  4631. Type
  4632. tagNMLVEMPTYMARKUP = Record
  4633. hdr : NMHDR;
  4634. // out params from client back to listview
  4635. dwFlags :DWORD; // EMF_*
  4636. szMarkup : array[0..L_MAX_URL_LENGTH-1] of wchar; // markup displayed
  4637. end;
  4638. NMLVEMPTYMARKUP = tagNMLVEMPTYMARKUP;
  4639. TNMLVEMPTYMARKUP = tagNMLVEMPTYMARKUP;
  4640. PNMLVEMPTYMARKUP = ^tagNMLVEMPTYMARKUP;
  4641. {$endif}
  4642. {$ENDIF} // NOLISTVIEW
  4643. //====== TREEVIEW CONTROL =====================================================
  4644. {$IFNDEF NOTREEVIEW}
  4645. CONST
  4646. {$IFDEF _WIN32}
  4647. WC_TREEVIEWA = 'SysTreeView32';
  4648. WC_TREEVIEWW = {L}'SysTreeView32'#$0000;
  4649. {$IFDEF UNICODE}
  4650. WC_TREEVIEW = WC_TREEVIEWW;
  4651. {$ELSE}
  4652. WC_TREEVIEW = WC_TREEVIEWA;
  4653. {$ENDIF}
  4654. {$ELSE}
  4655. WC_TREEVIEW = 'SysTreeView';
  4656. {$ENDIF}
  4657. // begin_r_commctrl
  4658. TVS_HASBUTTONS = $0001;
  4659. TVS_HASLINES = $0002;
  4660. TVS_LINESATROOT = $0004;
  4661. TVS_EDITLABELS = $0008;
  4662. TVS_DISABLEDRAGDROP = $0010;
  4663. TVS_SHOWSELALWAYS = $0020;
  4664. {$ifdef ie3plus}
  4665. TVS_RTLREADING = $0040;
  4666. TVS_NOTOOLTIPS = $0080;
  4667. TVS_CHECKBOXES = $0100;
  4668. TVS_TRACKSELECT = $0200;
  4669. {$ifdef ie4plus}
  4670. TVS_SINGLEEXPAND = $0400;
  4671. TVS_INFOTIP = $0800;
  4672. TVS_FULLROWSELECT = $1000;
  4673. TVS_NOSCROLL = $2000;
  4674. TVS_NONEVENHEIGHT = $4000;
  4675. {$ENDIF}
  4676. {$ifdef ie5plus}
  4677. TVS_NOHSCROLL = $8000; // TVS_NOSCROLL overrides this
  4678. {$ENDIF}
  4679. {$ifdef win32vista}
  4680. TVS_EX_MULTISELECT = $0002;
  4681. TVS_EX_DOUBLEBUFFER = $0004;
  4682. TVS_EX_NOINDENTSTATE = $0008;
  4683. TVS_EX_RICHTOOLTIP = $0010;
  4684. TVS_EX_AUTOHSCROLL = $0020;
  4685. TVS_EX_FADEINOUTEXPANDOS = $0040;
  4686. TVS_EX_PARTIALCHECKBOXES = $0080;
  4687. TVS_EX_EXCLUSIONCHECKBOXES = $0100;
  4688. TVS_EX_DIMMEDCHECKBOXES = $0200;
  4689. TVS_EX_DRAWIMAGEASYNC = $0400;
  4690. {$endif}
  4691. {$ENDIF}
  4692. // end_r_commctrl
  4693. TYPE
  4694. PHTREEITEM = ^HTREEITEM;
  4695. HTREEITEM = ^TREEITEM;
  4696. CONST
  4697. TVIF_TEXT = $0001;
  4698. TVIF_IMAGE = $0002;
  4699. TVIF_PARAM = $0004;
  4700. TVIF_STATE = $0008;
  4701. TVIF_HANDLE = $0010;
  4702. TVIF_SELECTEDIMAGE = $0020;
  4703. TVIF_CHILDREN = $0040;
  4704. {$ifdef ie4plus}
  4705. TVIF_INTEGRAL = $0080;
  4706. {$ENDIF}
  4707. {$ifdef win32vista}
  4708. TVIF_STATEEX = $0100;
  4709. TVIF_EXPANDEDIMAGE = $0200;
  4710. {$endif}
  4711. TVIS_SELECTED = $0002;
  4712. TVIS_CUT = $0004;
  4713. TVIS_DROPHILITED = $0008;
  4714. TVIS_BOLD = $0010;
  4715. TVIS_EXPANDED = $0020;
  4716. TVIS_EXPANDEDONCE = $0040;
  4717. {$ifdef ie3plus}
  4718. TVIS_EXPANDPARTIAL = $0080;
  4719. {$ENDIF}
  4720. TVIS_OVERLAYMASK = $0F00;
  4721. TVIS_STATEIMAGEMASK = $F000;
  4722. TVIS_USERMASK = $F000;
  4723. // IE6
  4724. TVIS_EX_FLAT = $0001;
  4725. {$ifdef win32vista}
  4726. TVIS_EX_DISABLED = $0002;
  4727. {$endif}
  4728. TVIS_EX_ALL = $0002;
  4729. Type
  4730. // Structure for TreeView's NM_TVSTATEIMAGECHANGING notification
  4731. tagNMTVSTATEIMAGECHANGING = Record
  4732. hdr : NMHDR;
  4733. hti : HTREEITEM;
  4734. iOldStateImageIndex : cint;
  4735. iNewStateImageIndex : cint;
  4736. end;
  4737. NMTVSTATEIMAGECHANGING = tagNMTVSTATEIMAGECHANGING;
  4738. LPNMTVSTATEIMAGECHANGING = ^tagNMTVSTATEIMAGECHANGING;
  4739. Const
  4740. I_CHILDRENCALLBACK = (-1);
  4741. Type
  4742. tagTVITEMA = Record
  4743. mask : UINT;
  4744. hItem : HTREEITEM;
  4745. state : UINT;
  4746. stateMask : UINT;
  4747. pszText : LPSTR;
  4748. cchTextMax : cint;
  4749. iImage : cint;
  4750. iSelectedImage : cint;
  4751. cChildren : cint;
  4752. lParam : LPARAM;
  4753. {$ifdef ie6plus}
  4754. uStateEx : cUINT;
  4755. hwnd : HWND;
  4756. iExpandedImage : cint;
  4757. {$endif}
  4758. {$ifdef NTDDI_WIN7}
  4759. iPadding : cint;
  4760. {$endif}
  4761. END;
  4762. TVITEMA = tagTVITEMA;
  4763. LPTVITEMA = ^tagTVITEMA;
  4764. TTVITEMA = tagTVITEMA;
  4765. PTVITEMA = ^tagTVITEMA;
  4766. tagTVITEMW = Record
  4767. mask : UINT;
  4768. hItem : HTREEITEM;
  4769. state : UINT;
  4770. stateMask : UINT;
  4771. pszText : LPWSTR;
  4772. cchTextMax : cint;
  4773. iImage : cint;
  4774. iSelectedImage : cint;
  4775. cChildren : cint;
  4776. lParam : LPARAM;
  4777. {$ifdef ie6plus}
  4778. uStateEx : cUINT;
  4779. hwnd : HWND;
  4780. iExpandedImage : cint;
  4781. {$endif}
  4782. {$ifdef NTDDI_WIN7}
  4783. iPadding : cint;
  4784. {$endif}
  4785. END;
  4786. TVITEMW = tagTVITEMW;
  4787. LPTVITEMW = ^tagTVITEMW;
  4788. TTVITEMW = tagTVITEMW;
  4789. PTVITEMW = ^tagTVITEMW;
  4790. {$ifdef ie4plus}
  4791. // only used for Get and Set messages. no notifies
  4792. tagTVITEMEXA = Record
  4793. mask : UINT;
  4794. hItem : HTREEITEM;
  4795. state : UINT;
  4796. stateMask : UINT;
  4797. pszText : LPSTR;
  4798. cchTextMax : cint;
  4799. iImage : cint;
  4800. iSelectedImage : cint;
  4801. cChildren : cint;
  4802. lParam : LPARAM;
  4803. iIntegral : cint;
  4804. END;
  4805. TVITEMEXA = tagTVITEMEXA;
  4806. LPTVITEMEXA = ^tagTVITEMEXA;
  4807. TTVITEMEXA = tagTVITEMEXA;
  4808. PTVITEMEXA = ^tagTVITEMEXA;
  4809. // only used for Get and Set messages. no notifies
  4810. tagTVITEMEXW = Record
  4811. mask : UINT;
  4812. hItem : HTREEITEM;
  4813. state : UINT;
  4814. stateMask : UINT;
  4815. pszText : LPWSTR;
  4816. cchTextMax : cint;
  4817. iImage : cint;
  4818. iSelectedImage : cint;
  4819. cChildren : cint;
  4820. lParam : LPARAM;
  4821. iIntegral : cint;
  4822. END;
  4823. TVITEMEXW = tagTVITEMEXW;
  4824. LPTVITEMEXW = ^tagTVITEMEXW;
  4825. TTVITEMEXW = tagTVITEMEXW;
  4826. PTVITEMEXW = ^tagTVITEMEXW;
  4827. TYPE
  4828. {$ifdef ie3plus}
  4829. LPTV_ITEMW = LPTVITEMW;
  4830. LPTV_ITEMA = LPTVITEMA;
  4831. TV_ITEMW = TVITEMW;
  4832. TV_ITEMA = TVITEMA;
  4833. {$ELSE}
  4834. tagTVITEMA = _TV_ITEMA;
  4835. TVITEMA = TV_ITEMA;
  4836. LPTVITEMA = LPTV_ITEMA;
  4837. tagTVITEMW = _TV_ITEMW;
  4838. TVITEMW = TV_ITEMW;
  4839. LPTVITEMW = LPTV_ITEMW;
  4840. {$ENDIF}
  4841. TTVItem = TVITEMA;
  4842. PTVItem = LPTVITEMA;
  4843. {$IFDEF UNICODE}
  4844. TVITEMEX = TVITEMEXW;
  4845. LPTVITEMEX = LPTVITEMEXW;
  4846. {$ELSE}
  4847. TVITEMEX = TVITEMEXA;
  4848. LPTVITEMEX = LPTVITEMEXA;
  4849. {$ENDIF} // UNICODE
  4850. {$ENDIF}
  4851. {$IFDEF UNICODE}
  4852. TVITEM = TVITEMW;
  4853. LPTVITEM = LPTVITEMW;
  4854. {$ELSE}
  4855. TVITEM = TVITEMA;
  4856. LPTVITEM = LPTVITEMA;
  4857. {$ENDIF}
  4858. LPTV_ITEM = LPTVITEM;
  4859. TV_ITEM = TVITEM;
  4860. CONST
  4861. TVI_ROOT = HTREEITEM(ULONG_PTR(-$10000));
  4862. TVI_FIRST = HTREEITEM(ULONG_PTR(-$0FFFF));
  4863. TVI_LAST = HTREEITEM(ULONG_PTR(-$0FFFE));
  4864. TVI_SORT = HTREEITEM(ULONG_PTR(-$0FFFD));
  4865. // #define TVINSERTSTRUCTA_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTA, item)
  4866. // #define TVINSERTSTRUCTW_V1_SIZE CCSIZEOF_STRUCT(TVINSERTSTRUCTW, item)
  4867. Type
  4868. tagTVINSERTSTRUCTA = Record
  4869. hParent : HTREEITEM;
  4870. hInsertAfter : HTREEITEM;
  4871. {$ifdef ie4plus}
  4872. case boolean of
  4873. false: (itemex : TVITEMEXA);
  4874. True: (item : TV_ITEMA);
  4875. {$ELSE}
  4876. item : TV_ITEMA;
  4877. {$ENDIF}
  4878. END;
  4879. TVINSERTSTRUCTA = tagTVINSERTSTRUCTA;
  4880. LPTVINSERTSTRUCTA = ^tagTVINSERTSTRUCTA;
  4881. TTVINSERTSTRUCTA = tagTVINSERTSTRUCTA;
  4882. PTVINSERTSTRUCTA = ^tagTVINSERTSTRUCTA;
  4883. TTVINSERTSTRUCT = TTVINSERTSTRUCTA;
  4884. PTVINSERTSTRUCT = PTVINSERTSTRUCTA;
  4885. tagTVINSERTSTRUCTW = Record
  4886. hParent : HTREEITEM;
  4887. hInsertAfter : HTREEITEM;
  4888. {$ifdef ie4plus}
  4889. case boolean of
  4890. false: (itemex : TVITEMEXW);
  4891. True: (item : TV_ITEMW);
  4892. {$ELSE}
  4893. item : TV_ITEMW;
  4894. {$ENDIF}
  4895. END;
  4896. TVINSERTSTRUCTW = tagTVINSERTSTRUCTW;
  4897. LPTVINSERTSTRUCTW = ^tagTVINSERTSTRUCTW;
  4898. TTVINSERTSTRUCTW = tagTVINSERTSTRUCTW;
  4899. PTVINSERTSTRUCTW = ^tagTVINSERTSTRUCTW;
  4900. {$IFDEF UNICODE}
  4901. TVINSERTSTRUCT = TVINSERTSTRUCTW;
  4902. LPTVINSERTSTRUCT = LPTVINSERTSTRUCTW;
  4903. // TVINSERTSTRUCT_V1_SIZE = TVINSERTSTRUCTW_V1_SIZE;
  4904. {$ELSE}
  4905. TVINSERTSTRUCT = TVINSERTSTRUCTA;
  4906. LPTVINSERTSTRUCT = LPTVINSERTSTRUCTA;
  4907. // TVINSERTSTRUCT_V1_SIZE = TVINSERTSTRUCTA_V1_SIZE;
  4908. {$ENDIF}
  4909. CONST
  4910. TVM_INSERTITEMA = (TV_FIRST + 0);
  4911. TVM_INSERTITEMW = (TV_FIRST + 50);
  4912. {$IFDEF UNICODE}
  4913. TVM_INSERTITEM = TVM_INSERTITEMW;
  4914. {$ELSE}
  4915. TVM_INSERTITEM = TVM_INSERTITEMA;
  4916. {$ENDIF}
  4917. TYPE
  4918. {$ifdef ie3plus}
  4919. LPTV_INSERTSTRUCTA = LPTVINSERTSTRUCTA;
  4920. LPTV_INSERTSTRUCTW = LPTVINSERTSTRUCTW;
  4921. TV_INSERTSTRUCTA = TVINSERTSTRUCTA;
  4922. TV_INSERTSTRUCTW = TVINSERTSTRUCTW;
  4923. {$ELSE}
  4924. tagTVINSERTSTRUCTA = _TV_INSERTSTRUCTA;
  4925. TVINSERTSTRUCTA = TV_INSERTSTRUCTA;
  4926. LPTVINSERTSTRUCTA = LPTV_INSERTSTRUCTA;
  4927. tagTVINSERTSTRUCTW = _TV_INSERTSTRUCTW;
  4928. TVINSERTSTRUCTW = TV_INSERTSTRUCTW;
  4929. LPTVINSERTSTRUCTW = LPTV_INSERTSTRUCTW;
  4930. {$ENDIF}
  4931. TV_INSERTSTRUCT = TVINSERTSTRUCT;
  4932. LPTV_INSERTSTRUCT = LPTVINSERTSTRUCT;
  4933. // Macro 156
  4934. Function TreeView_InsertItem( hwnd : hwnd; lpis : LPTV_INSERTSTRUCT):HTREEITEM;inline;
  4935. Function TreeView_InsertItem( hwnd : hwnd; const lpis : TV_INSERTSTRUCT):HTREEITEM;inline;
  4936. CONST
  4937. TVM_DELETEITEM = (TV_FIRST + 1);
  4938. // Macro 157
  4939. Function TreeView_DeleteItem( hwnd : hwnd; hitem : HTREEITEM):BOOL;
  4940. // Macro 158
  4941. Function TreeView_DeleteAllItems( hwnd : hwnd):BOOL;
  4942. CONST
  4943. TVM_EXPAND = (TV_FIRST + 2);
  4944. // Macro 159
  4945. Function TreeView_Expand( hwnd : hwnd; hitem : HTREEITEM; code : WPARAM):BOOL;
  4946. CONST
  4947. TVE_COLLAPSE = $0001;
  4948. TVE_EXPAND = $0002;
  4949. TVE_TOGGLE = $0003;
  4950. {$ifdef ie3plus}
  4951. TVE_EXPANDPARTIAL = $4000;
  4952. {$ENDIF}
  4953. TVE_COLLAPSERESET = $8000;
  4954. TVM_GETITEMRECT = (TV_FIRST + 4);
  4955. // Macro 160
  4956. Function TreeView_GetItemRect( hwnd : hwnd; hitem: HTREEITEM; prc : pRECT;code : WPARAM):BOOL;inline;
  4957. Function TreeView_GetItemRect( hwnd : hwnd; hitem: HTREEITEM; var prc : TRECT;code : Bool):BOOL;inline;
  4958. CONST
  4959. TVM_GETCOUNT = (TV_FIRST + 5);
  4960. // Macro 161
  4961. Function TreeView_GetCount( hwnd : hwnd):UINT;
  4962. CONST
  4963. TVM_GETINDENT = (TV_FIRST + 6);
  4964. // Macro 162
  4965. Function TreeView_GetIndent( hwnd : hwnd):UINT;
  4966. CONST
  4967. TVM_SETINDENT = (TV_FIRST + 7);
  4968. // Macro 163
  4969. Function TreeView_SetIndent( hwnd : hwnd; indent : WPARAM):BOOL;
  4970. CONST
  4971. TVM_GETIMAGELIST = (TV_FIRST + 8);
  4972. // Macro 164
  4973. Function TreeView_GetImageList( hwnd : hwnd; iImage : cint ):HIMAGELIST;
  4974. CONST
  4975. TVSIL_NORMAL = 0;
  4976. TVSIL_STATE = 2;
  4977. TVM_SETIMAGELIST = (TV_FIRST + 9);
  4978. // Macro 165
  4979. Function TreeView_SetImageList( hwnd : hwnd; himl : HIMAGELIST; iImage : cint):HIMAGELIST;
  4980. CONST
  4981. TVM_GETNEXTITEM = (TV_FIRST + 10);
  4982. // Macro 166
  4983. Function TreeView_GetNextItem( hwnd : hwnd; hitem : HTREEITEM; code : WPARAM):HTREEITEM;
  4984. CONST
  4985. TVGN_ROOT = $0000;
  4986. TVGN_NEXT = $0001;
  4987. TVGN_PREVIOUS = $0002;
  4988. TVGN_PARENT = $0003;
  4989. TVGN_CHILD = $0004;
  4990. TVGN_FIRSTVISIBLE = $0005;
  4991. TVGN_NEXTVISIBLE = $0006;
  4992. TVGN_PREVIOUSVISIBLE = $0007;
  4993. TVGN_DROPHILITE = $0008;
  4994. TVGN_CARET = $0009;
  4995. {$ifdef ie4plus}
  4996. TVGN_LASTVISIBLE = $000A;
  4997. {$ENDIF} // _WIN32_IE >= 0x0400
  4998. {$ifdef ie6plus}
  4999. TVGN_NEXTSELECTED = $000B;
  5000. {$endif}
  5001. {$ifdef win32xp} // 0x501
  5002. TVSI_NOSINGLEEXPAND = $8000; // Should not conflict with TVGN flags.
  5003. {$ENDIF}
  5004. function TreeView_GetChild(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;inline;
  5005. function TreeView_GetNextSibling(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;inline;
  5006. function TreeView_GetPrevSibling(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;inline;
  5007. function TreeView_GetParent(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;inline;
  5008. function TreeView_GetFirstVisible(hwnd:hwnd) : HTREEITEM;inline;
  5009. function TreeView_GetNextVisible(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;inline;
  5010. function TreeView_GetPrevVisible(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;inline;
  5011. function TreeView_GetSelection(hwnd:hwnd) : HTREEITEM;inline;
  5012. function TreeView_GetDropHilight(hwnd:hwnd) : HTREEITEM;inline;
  5013. function TreeView_GetDropHilite(hwnd:hwnd) : HTREEITEM;inline;
  5014. function TreeView_GetRoot(hwnd:hwnd) : HTREEITEM;inline;
  5015. function TreeView_GetLastVisible(hwnd:hwnd) : HTREEITEM;inline;
  5016. {$ifdef win32vista}
  5017. function TreeView_GetNextSelected(hwnd:hwnd; hitem:HTREEITEM):HTREEITEM;inline;
  5018. {$endif}
  5019. CONST
  5020. TVM_SELECTITEM = (TV_FIRST + 11);
  5021. // Macro 178
  5022. Function TreeView_Select( hwnd : hwnd; hitem : HTREEITEM; code : WPARAM):BOOL;
  5023. // Macro 179
  5024. Procedure TreeView_SelectItem(hwnd:hwnd; hitem:HTREEITEM);
  5025. // Macro 180
  5026. Procedure TreeView_SelectDropTarget(hwnd:hwnd; hitem:HTREEITEM);
  5027. // Macro 181
  5028. Procedure TreeView_SelectSetFirstVisible(hwnd:hwnd; hitem:HTREEITEM);
  5029. CONST
  5030. TVM_GETITEMA = (TV_FIRST + 12);
  5031. TVM_GETITEMW = (TV_FIRST + 62);
  5032. {$IFDEF UNICODE}
  5033. TVM_GETITEM = TVM_GETITEMW;
  5034. {$ELSE}
  5035. TVM_GETITEM = TVM_GETITEMA;
  5036. {$ENDIF}
  5037. // Macro 182
  5038. Function TreeView_GetItem( hwnd : hwnd;var pitem : TV_ITEM ):BOOL;
  5039. CONST
  5040. TVM_SETITEMA = (TV_FIRST + 13);
  5041. TVM_SETITEMW = (TV_FIRST + 63);
  5042. {$IFDEF UNICODE}
  5043. TVM_SETITEM = TVM_SETITEMW;
  5044. {$ELSE}
  5045. TVM_SETITEM = TVM_SETITEMA;
  5046. {$ENDIF}
  5047. // Macro 183
  5048. Function TreeView_SetItem( hwnd : hwnd;const pitem : TV_ITEM ):BOOL;
  5049. CONST
  5050. TVM_EDITLABELA = (TV_FIRST + 14);
  5051. TVM_EDITLABELW = (TV_FIRST + 65);
  5052. {$IFDEF UNICODE}
  5053. TVM_EDITLABEL = TVM_EDITLABELW;
  5054. {$ELSE}
  5055. TVM_EDITLABEL = TVM_EDITLABELA;
  5056. {$ENDIF}
  5057. // Macro 184
  5058. Function TreeView_EditLabel( hwnd : hwnd; hitem : HTREEITEM):HWND;
  5059. CONST
  5060. TVM_GETEDITCONTROL = (TV_FIRST + 15);
  5061. // Macro 185
  5062. Function TreeView_GetEditControl( hwnd : hwnd):HWND;
  5063. CONST
  5064. TVM_GETVISIBLECOUNT = (TV_FIRST + 16);
  5065. // Macro 186
  5066. Function TreeView_GetVisibleCount( hwnd : hwnd):UINT;
  5067. CONST
  5068. TVM_HITTEST = (TV_FIRST + 17);
  5069. TYPE
  5070. tagTVHITTESTINFO = Record
  5071. pt : POINT;
  5072. flags : UINT;
  5073. hItem : HTREEITEM;
  5074. END;
  5075. TVHITTESTINFO = tagTVHITTESTINFO;
  5076. LPTVHITTESTINFO = ^tagTVHITTESTINFO;
  5077. TTVHITTESTINFO = tagTVHITTESTINFO;
  5078. PTVHITTESTINFO = ^tagTVHITTESTINFO;
  5079. {$ifdef ie3plus}
  5080. LPTV_HITTESTINFO = LPTVHITTESTINFO;
  5081. TV_HITTESTINFO = TVHITTESTINFO;
  5082. {$ELSE}
  5083. tagTVHITTESTINFO = _TV_HITTESTINFO;
  5084. TVHITTESTINFO = TV_HITTESTINFO;
  5085. LPTVHITTESTINFO = LPTV_HITTESTINFO;
  5086. {$ENDIF}
  5087. CONST
  5088. TVHT_NOWHERE = $0001;
  5089. TVHT_ONITEMICON = $0002;
  5090. TVHT_ONITEMLABEL = $0004;
  5091. TVHT_ONITEM = (TVHT_ONITEMICON OR TVHT_ONITEMLABEL OR TVHT_ONITEMSTATEICON);
  5092. TVHT_ONITEMINDENT = $0008;
  5093. TVHT_ONITEMBUTTON = $0010;
  5094. TVHT_ONITEMRIGHT = $0020;
  5095. TVHT_ONITEMSTATEICON = $0040;
  5096. TVHT_ABOVE = $0100;
  5097. TVHT_BELOW = $0200;
  5098. TVHT_TORIGHT = $0400;
  5099. TVHT_TOLEFT = $0800;
  5100. TVM_CREATEDRAGIMAGE = (TV_FIRST + 18);
  5101. // Macro 187
  5102. Function TreeView_HitTest( hwnd : hwnd; lpht : LPTV_HITTESTINFO):HTREEITEM;inline;
  5103. Function TreeView_HitTest( hwnd : hwnd; var lpht : TV_HITTESTINFO):HTREEITEM;inline;
  5104. // Macro 188
  5105. Function TreeView_CreateDragImage( hwnd : hwnd; hitem : HTREEITEM):HIMAGELIST;
  5106. CONST
  5107. TVM_SORTCHILDREN = (TV_FIRST + 19);
  5108. // Macro 189
  5109. Function TreeView_SortChildren( hwnd : hwnd; hitem : HTREEITEM; recurse : WPARAM):BOOL;
  5110. CONST
  5111. TVM_ENSUREVISIBLE = (TV_FIRST + 20);
  5112. // Macro 190
  5113. Function TreeView_EnsureVisible( hwnd : hwnd; hitem : HTREEITEM):BOOL;
  5114. CONST
  5115. TVM_ENDEDITLABELNOW = (TV_FIRST + 22);
  5116. // Macro 192
  5117. Function TreeView_EndEditLabelNow( hwnd : hwnd; fCancel : WPARAM):BOOL;inline;
  5118. Function TreeView_EndEditLabelNow( hwnd : hwnd; fCancel : Bool):BOOL;inline;
  5119. CONST
  5120. TVM_GETISEARCHSTRINGA = (TV_FIRST + 23);
  5121. TVM_GETISEARCHSTRINGW = (TV_FIRST + 64);
  5122. {$IFDEF UNICODE}
  5123. TVM_GETISEARCHSTRING= TVM_GETISEARCHSTRINGW;
  5124. {$ELSE}
  5125. TVM_GETISEARCHSTRING= TVM_GETISEARCHSTRINGA;
  5126. {$ENDIF}
  5127. {$ifdef ie3plus}
  5128. CONST
  5129. TVM_SETTOOLTIPS = (TV_FIRST + 24);
  5130. // Macro 193
  5131. Function TreeView_SetToolTips( hwnd : hwnd; hwndTT : WPARAM):HWND;
  5132. CONST
  5133. TVM_GETTOOLTIPS = (TV_FIRST + 25);
  5134. // Macro 194
  5135. Function TreeView_GetToolTips( hwnd : hwnd):HWND;
  5136. {$ENDIF}
  5137. // Macro 195
  5138. Function TreeView_GetISearchString( hwndTV : hwnd; lpsz : LPTSTR):BOOL;
  5139. {$ifdef ie4plus}
  5140. CONST
  5141. TVM_SETINSERTMARK = (TV_FIRST + 26);
  5142. // Macro 196
  5143. Function TreeView_SetInsertMark( hwnd : hwnd; hItem : LPARAM ; fAfter : WPARAM ):BOOL;
  5144. CONST
  5145. TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  5146. // Macro 197
  5147. Function TreeView_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
  5148. CONST
  5149. TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  5150. // Macro 198
  5151. Function TreeView_GetUnicodeFormat( hwnd : hwnd):BOOL;
  5152. {$ENDIF}
  5153. {$ifdef ie4plus}
  5154. CONST
  5155. TVM_SETITEMHEIGHT = (TV_FIRST + 27);
  5156. // Macro 199
  5157. Function TreeView_SetItemHeight( hwnd : hwnd; iHeight : WPARAM):cint;
  5158. CONST
  5159. TVM_GETITEMHEIGHT = (TV_FIRST + 28);
  5160. // Macro 200
  5161. Function TreeView_GetItemHeight( hwnd : hwnd):cint;
  5162. CONST
  5163. TVM_SETBKCOLOR = (TV_FIRST + 29);
  5164. // Macro 201
  5165. Function TreeView_SetBkColor( hwnd : hwnd; clr : LPARAM):COLORREF;
  5166. CONST
  5167. TVM_SETTEXTCOLOR = (TV_FIRST + 30);
  5168. // Macro 202
  5169. Function TreeView_SetTextColor( hwnd : hwnd; clr : LPARAM):COLORREF;
  5170. CONST
  5171. TVM_GETBKCOLOR = (TV_FIRST + 31);
  5172. // Macro 203
  5173. Function TreeView_GetBkColor( hwnd : hwnd):COLORREF;
  5174. CONST
  5175. TVM_GETTEXTCOLOR = (TV_FIRST + 32);
  5176. // Macro 204
  5177. Function TreeView_GetTextColor( hwnd : hwnd):COLORREF;
  5178. CONST
  5179. TVM_SETSCROLLTIME = (TV_FIRST + 33);
  5180. // Macro 205
  5181. Function TreeView_SetScrollTime( hwnd : hwnd; uTime :wparam ):UINT;
  5182. CONST
  5183. TVM_GETSCROLLTIME = (TV_FIRST + 34);
  5184. // Macro 206
  5185. Function TreeView_GetScrollTime( hwnd : hwnd):UINT;
  5186. CONST
  5187. TVM_SETINSERTMARKCOLOR = (TV_FIRST + 37);
  5188. // Macro 207
  5189. Function TreeView_SetInsertMarkColor( hwnd : hwnd; clr : LPARAM):COLORREF;
  5190. CONST
  5191. TVM_GETINSERTMARKCOLOR = (TV_FIRST + 38);
  5192. // Macro 208
  5193. Function TreeView_GetInsertMarkColor( hwnd : hwnd):COLORREF;
  5194. {$ENDIF} // (_WIN32_IE >= 0x0400)
  5195. {$ifdef ie5plus}
  5196. // tvm_?etitemstate only uses mask, state and stateMask.
  5197. // so unicode or ansi is irrelevant.
  5198. // Macro 209
  5199. Procedure TreeView_SetItemState(hwndTV:HWND;hti:HTreeItem;data:UINT;_mask:UINT);
  5200. // Macro 210
  5201. Procedure TreeView_SetCheckState( hwndTV : hwnd; hti : HTreeItem ; fCheck : bool );
  5202. CONST
  5203. TVM_GETITEMSTATE = (TV_FIRST + 39);
  5204. // Macro 211
  5205. Function TreeView_GetItemState( hwndTV : hwnd; hti : HTreeItem; statemask : UINT):UINT;
  5206. // Macro 212
  5207. Function TreeView_GetCheckState( hwndTV : hwnd; hti : HTreeItem):UINT;
  5208. CONST
  5209. TVM_SETLINECOLOR = (TV_FIRST + 40);
  5210. // Macro 213
  5211. Function TreeView_SetLineColor( hwnd : hwnd; clr : LPARAM):COLORREF;
  5212. CONST
  5213. TVM_GETLINECOLOR = (TV_FIRST + 41);
  5214. // Macro 214
  5215. Function TreeView_GetLineColor( hwnd : hwnd):COLORREF;
  5216. {$ENDIF}
  5217. {$ifdef Win32XP}
  5218. CONST
  5219. TVM_MAPACCIDTOHTREEITEM = (TV_FIRST + 42);
  5220. // Macro 215
  5221. Function TreeView_MapAccIDToHTREEITEM( hwnd : hwnd; id : UINT ):HTREEITEM;
  5222. CONST
  5223. TVM_MAPHTREEITEMTOACCID = (TV_FIRST + 43);
  5224. // Macro 216
  5225. Function TreeView_MapHTREEITEMToAccID( hwnd : hwnd; htreeitem : WPARAM):UINT;
  5226. {$ENDIF}
  5227. {$ifdef win32vista}
  5228. CONST
  5229. TVM_GETSELECTEDCOUNT = (TV_FIRST + 70);
  5230. TVM_SHOWINFOTIP = (TV_FIRST + 71);
  5231. TVM_GETITEMPARTRECT = (TV_FIRST + 72);
  5232. Type
  5233. TVITEMPART = (TVGIPR_BUTTON = $0001);
  5234. pTVITEMPART = ^TVITEMPART;
  5235. tagTVGETITEMPARTRECTINFO = Record
  5236. hti :HTREEITEM ;
  5237. prc :PRECT;
  5238. partID :TVITEMPART;
  5239. end;
  5240. TVGETITEMPARTRECTINFO = tagTVGETITEMPARTRECTINFO;
  5241. function TreeView_GetSelectedCount(hwnd:hwnd):DWORD;
  5242. // (DWORD)SNDMSG((hwnd), TVM_GETSELECTEDCOUNT, 0, 0)
  5243. function TreeView_ShowInfoTip(hwnd:HWND; hitem:HTREEITEM):DWORD;
  5244. // (DWORD)SNDMSG((hwnd), TVM_SHOWINFOTIP, 0, (LPARAM)(hitem))
  5245. function TreeView_GetItemPartRect(hwnd:HWND; hitem:HTREEITEM; prc:prect; partid:TVITEMPART):bool;
  5246. //{ TVGETITEMPARTRECTINFO info; \
  5247. // info.hti = (hitem); \
  5248. // info.prc = (prc); \
  5249. // info.partID = (partid); \
  5250. // (BOOL)SNDMSG((hwnd), TVM_GETITEMPARTRECT, 0, (LPARAM)&info); \
  5251. {$endif}
  5252. TYPE
  5253. PFNTVCOMPARE =function (lparam1:LPARAM;lparam2:LPARAM;lParamSort:LParam): cint; STDCALL;
  5254. TTVCompare = PFNTVCOMPARE;
  5255. tagTVSORTCB = Record
  5256. hParent : HTREEITEM;
  5257. lpfnCompare : PFNTVCOMPARE;
  5258. lParam : LPARAM;
  5259. END;
  5260. TVSORTCB = tagTVSORTCB;
  5261. LPTVSORTCB = ^tagTVSORTCB;
  5262. TTVSORTCB = tagTVSORTCB;
  5263. PTVSORTCB = ^tagTVSORTCB;
  5264. {$ifdef ie3plus}
  5265. LPTV_SORTCB = LPTVSORTCB;
  5266. TV_SORTCB = TVSORTCB;
  5267. {$ELSE}
  5268. tagTVSORTCB = _TV_SORTCB;
  5269. TVSORTCB = TV_SORTCB;
  5270. LPTVSORTCB = LPTV_SORTCB;
  5271. {$ENDIF}
  5272. tagNMTREEVIEWA = Record
  5273. hdr : NMHDR;
  5274. action : UINT;
  5275. itemOld : TVITEMA;
  5276. itemNew : TVITEMA;
  5277. ptDrag : POINT;
  5278. END;
  5279. NMTREEVIEWA = tagNMTREEVIEWA;
  5280. LPNMTREEVIEWA = ^tagNMTREEVIEWA;
  5281. TNMTREEVIEWA = tagNMTREEVIEWA;
  5282. PNMTREEVIEWA = ^tagNMTREEVIEWA;
  5283. PNMTreeView = PNMTreeViewA;
  5284. TNMTreeView = TNMTreeViewA;
  5285. tagNMTREEVIEWW = Record
  5286. hdr : NMHDR;
  5287. action : UINT;
  5288. itemOld : TVITEMW;
  5289. itemNew : TVITEMW;
  5290. ptDrag : POINT;
  5291. END;
  5292. NMTREEVIEWW = tagNMTREEVIEWW;
  5293. LPNMTREEVIEWW = ^tagNMTREEVIEWW;
  5294. TNMTREEVIEWW = tagNMTREEVIEWW;
  5295. PNMTREEVIEWW = ^tagNMTREEVIEWW;
  5296. {$IFDEF UNICODE}
  5297. NMTREEVIEW = NMTREEVIEWW;
  5298. LPNMTREEVIEW = LPNMTREEVIEWW;
  5299. {$ELSE}
  5300. NMTREEVIEW = NMTREEVIEWA;
  5301. LPNMTREEVIEW = LPNMTREEVIEWA;
  5302. {$ENDIF}
  5303. {$ifdef ie3plus}
  5304. LPNM_TREEVIEWA = LPNMTREEVIEWA;
  5305. LPNM_TREEVIEWW = LPNMTREEVIEWW;
  5306. NM_TREEVIEWW = NMTREEVIEWW;
  5307. NM_TREEVIEWA = NMTREEVIEWA;
  5308. {$ELSE}
  5309. tagNMTREEVIEWA = _NM_TREEVIEWA;
  5310. tagNMTREEVIEWW = _NM_TREEVIEWW;
  5311. NMTREEVIEWA = NM_TREEVIEWA;
  5312. NMTREEVIEWW = NM_TREEVIEWW;
  5313. LPNMTREEVIEWA = LPNM_TREEVIEWA;
  5314. LPNMTREEVIEWW = LPNM_TREEVIEWW;
  5315. {$ENDIF}
  5316. LPNM_TREEVIEW = LPNMTREEVIEW;
  5317. NM_TREEVIEW = NMTREEVIEW;
  5318. CONST
  5319. TVN_SELCHANGINGA = (TVN_FIRST-1);
  5320. TVN_SELCHANGINGW = (TVN_FIRST-50);
  5321. TVN_SELCHANGEDA = (TVN_FIRST-2);
  5322. TVN_SELCHANGEDW = (TVN_FIRST-51);
  5323. TVC_UNKNOWN = $0000;
  5324. TVC_BYMOUSE = $0001;
  5325. TVC_BYKEYBOARD = $0002;
  5326. TVN_GETDISPINFOA = (TVN_FIRST-3);
  5327. TVN_GETDISPINFOW = (TVN_FIRST-52);
  5328. TVN_SETDISPINFOA = (TVN_FIRST-4);
  5329. TVN_SETDISPINFOW = (TVN_FIRST-53);
  5330. TVIF_DI_SETITEM = $1000;
  5331. Type
  5332. tagTVDISPINFOA = Record
  5333. hdr : NMHDR;
  5334. item : TVITEMA;
  5335. END;
  5336. NMTVDISPINFOA = tagTVDISPINFOA;
  5337. LPNMTVDISPINFOA = ^tagTVDISPINFOA;
  5338. TTVDISPINFOA = tagTVDISPINFOA;
  5339. PTVDISPINFOA = ^tagTVDISPINFOA;
  5340. TTVDispInfo = TTVDISPINFOA;
  5341. PTVDispInfo = PTVDISPINFOA;
  5342. tagTVDISPINFOW = Record
  5343. hdr : NMHDR;
  5344. item : TVITEMW;
  5345. END;
  5346. NMTVDISPINFOW = tagTVDISPINFOW;
  5347. LPNMTVDISPINFOW = ^tagTVDISPINFOW;
  5348. TTVDISPINFOW = tagTVDISPINFOW;
  5349. PTVDISPINFOW = ^tagTVDISPINFOW;
  5350. {$IFDEF UNICODE}
  5351. NMTVDISPINFO = NMTVDISPINFOW;
  5352. LPNMTVDISPINFO = LPNMTVDISPINFOW;
  5353. {$ELSE}
  5354. NMTVDISPINFO = NMTVDISPINFOA;
  5355. LPNMTVDISPINFO = LPNMTVDISPINFOA;
  5356. {$ENDIF}
  5357. {$ifdef IE6plus}
  5358. tagTVDISPINFOEXA = Record
  5359. hdr : NMHDR;
  5360. item :TVITEMEXA;
  5361. end;
  5362. NMTVDISPINFOEXA = tagTVDISPINFOEXA;
  5363. LPNMTVDISPINFOEXA = ^tagTVDISPINFOEXA;
  5364. tagTVDISPINFOEXW = Record
  5365. hdr : NMHDR;
  5366. item :TVITEMEXW;
  5367. end;
  5368. NMTVDISPINFOEXW = tagTVDISPINFOEXW;
  5369. LPNMTVDISPINFOEXW = ^tagTVDISPINFOEXW;
  5370. {$IFDEF UNICODE}
  5371. NMTVDISPINFOEX = NMTVDISPINFOEXW;
  5372. LPNMTVDISPINFOEX = LPNMTVDISPINFOEXW;
  5373. {$ELSE}
  5374. NMTVDISPINFOEX = NMTVDISPINFOEXA;
  5375. LPNMTVDISPINFOEX = LPNMTVDISPINFOEXA;
  5376. {$ENDIF}
  5377. TV_DISPINFOEXA = NMTVDISPINFOEXA;
  5378. TV_DISPINFOEXW = NMTVDISPINFOEXW;
  5379. TV_DISPINFOEX = NMTVDISPINFOEX;
  5380. {$endif}
  5381. {$ifdef ie3plus}
  5382. TV_DISPINFOA = NMTVDISPINFOA;
  5383. TV_DISPINFOW = NMTVDISPINFOW;
  5384. {$ELSE}
  5385. tagTVDISPINFOA = _TV_DISPINFOA;
  5386. NMTVDISPINFOA = TV_DISPINFOA;
  5387. tagTVDISPINFOW = _TV_DISPINFOW;
  5388. NMTVDISPINFOW = TV_DISPINFOW;
  5389. {$ENDIF}
  5390. TV_DISPINFO = NMTVDISPINFO;
  5391. CONST
  5392. TVM_SORTCHILDRENCB = (TV_FIRST + 21);
  5393. // Macro 191
  5394. Function TreeView_SortChildrenCB( hwnd : hwnd;psort :lpTV_sortcb; recurse : WPARAM):BOOL;inline;
  5395. Function TreeView_SortChildrenCB( hwnd : hwnd;const psort :tagTVsortcb; recurse : WPARAM):BOOL;inline;
  5396. CONST
  5397. TVN_ITEMEXPANDINGA = (TVN_FIRST-5);
  5398. TVN_ITEMEXPANDINGW = (TVN_FIRST-54);
  5399. TVN_ITEMEXPANDEDA = (TVN_FIRST-6);
  5400. TVN_ITEMEXPANDEDW = (TVN_FIRST-55);
  5401. TVN_BEGINDRAGA = (TVN_FIRST-7);
  5402. TVN_BEGINDRAGW = (TVN_FIRST-56);
  5403. TVN_BEGINRDRAGA = (TVN_FIRST-8);
  5404. TVN_BEGINRDRAGW = (TVN_FIRST-57);
  5405. TVN_DELETEITEMA = (TVN_FIRST-9);
  5406. TVN_DELETEITEMW = (TVN_FIRST-58);
  5407. TVN_BEGINLABELEDITA = (TVN_FIRST-10);
  5408. TVN_BEGINLABELEDITW = (TVN_FIRST-59);
  5409. TVN_ENDLABELEDITA = (TVN_FIRST-11);
  5410. TVN_ENDLABELEDITW = (TVN_FIRST-60);
  5411. TVN_KEYDOWN = (TVN_FIRST-12);
  5412. {$ifdef ie4plus}
  5413. TVN_GETINFOTIPA = (TVN_FIRST-13);
  5414. TVN_GETINFOTIPW = (TVN_FIRST-14);
  5415. TVN_SINGLEEXPAND = (TVN_FIRST-15);
  5416. TVNRET_DEFAULT = 0;
  5417. TVNRET_SKIPOLD = 1;
  5418. TVNRET_SKIPNEW = 2;
  5419. {$ifdef win32vista}
  5420. TVN_ITEMCHANGINGA = (TVN_FIRST-16);
  5421. TVN_ITEMCHANGINGW = (TVN_FIRST-17);
  5422. TVN_ITEMCHANGEDA = (TVN_FIRST-18);
  5423. TVN_ITEMCHANGEDW = (TVN_FIRST-19);
  5424. TVN_ASYNCDRAW = (TVN_FIRST-20);
  5425. {$endif}
  5426. {$ENDIF} // 0x400
  5427. {$IFDEF _WIN32}
  5428. // #include <pshpack1.h>
  5429. {$ENDIF}
  5430. TYPE
  5431. tagTVKEYDOWN = Record
  5432. hdr : NMHDR;
  5433. wVKey : WORD;
  5434. flags : UINT;
  5435. END;
  5436. NMTVKEYDOWN = tagTVKEYDOWN;
  5437. LPNMTVKEYDOWN = ^tagTVKEYDOWN;
  5438. TTVKEYDOWN = tagTVKEYDOWN;
  5439. PTVKEYDOWN = ^tagTVKEYDOWN;
  5440. {$ifdef ie3plus}
  5441. TV_KEYDOWN = NMTVKEYDOWN;
  5442. {$ELSE}
  5443. tagTVKEYDOWN = _TV_KEYDOWN;
  5444. NMTVKEYDOWN = TV_KEYDOWN;
  5445. {$ENDIF}
  5446. {$IFDEF _WIN32}
  5447. // #include <poppack.h>
  5448. {$ENDIF}
  5449. Const
  5450. {$IFDEF UNICODE}
  5451. TVN_SELCHANGING = TVN_SELCHANGINGW;
  5452. TVN_SELCHANGED = TVN_SELCHANGEDW;
  5453. TVN_GETDISPINFO = TVN_GETDISPINFOW;
  5454. TVN_SETDISPINFO = TVN_SETDISPINFOW;
  5455. TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGW;
  5456. TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDW;
  5457. TVN_BEGINDRAG = TVN_BEGINDRAGW;
  5458. TVN_BEGINRDRAG = TVN_BEGINRDRAGW;
  5459. TVN_DELETEITEM = TVN_DELETEITEMW;
  5460. TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITW;
  5461. TVN_ENDLABELEDIT = TVN_ENDLABELEDITW;
  5462. {$ELSE}
  5463. TVN_SELCHANGING = TVN_SELCHANGINGA;
  5464. TVN_SELCHANGED = TVN_SELCHANGEDA;
  5465. TVN_GETDISPINFO = TVN_GETDISPINFOA;
  5466. TVN_SETDISPINFO = TVN_SETDISPINFOA;
  5467. TVN_ITEMEXPANDING = TVN_ITEMEXPANDINGA;
  5468. TVN_ITEMEXPANDED = TVN_ITEMEXPANDEDA;
  5469. TVN_BEGINDRAG = TVN_BEGINDRAGA;
  5470. TVN_BEGINRDRAG = TVN_BEGINRDRAGA;
  5471. TVN_DELETEITEM = TVN_DELETEITEMA;
  5472. TVN_BEGINLABELEDIT = TVN_BEGINLABELEDITA;
  5473. TVN_ENDLABELEDIT = TVN_ENDLABELEDITA;
  5474. {$ENDIF}
  5475. {$ifdef ie3plus}
  5476. // #define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW, clrTextBk)
  5477. Type
  5478. tagNMTVCUSTOMDRAW = Record
  5479. nmcd : NMCUSTOMDRAW;
  5480. clrText : COLORREF;
  5481. clrTextBk : COLORREF;
  5482. {$ifdef ie4plus}
  5483. iLevel : cint;
  5484. {$ENDIF}
  5485. END;
  5486. NMTVCUSTOMDRAW = tagNMTVCUSTOMDRAW;
  5487. LPNMTVCUSTOMDRAW = ^tagNMTVCUSTOMDRAW;
  5488. TNMTVCUSTOMDRAW = tagNMTVCUSTOMDRAW;
  5489. PNMTVCUSTOMDRAW = ^tagNMTVCUSTOMDRAW;
  5490. {$ENDIF}
  5491. {$ifdef ie4plus}
  5492. // for tooltips
  5493. tagNMTVGETINFOTIPA = Record
  5494. hdr : NMHDR;
  5495. pszText : LPSTR;
  5496. cchTextMax : cint;
  5497. hItem : HTREEITEM;
  5498. lParam : LPARAM;
  5499. END;
  5500. NMTVGETINFOTIPA = tagNMTVGETINFOTIPA;
  5501. LPNMTVGETINFOTIPA = ^tagNMTVGETINFOTIPA;
  5502. TNMTVGETINFOTIPA = tagNMTVGETINFOTIPA;
  5503. PNMTVGETINFOTIPA = ^tagNMTVGETINFOTIPA;
  5504. tagNMTVGETINFOTIPW = Record
  5505. hdr : NMHDR;
  5506. pszText : LPWSTR;
  5507. cchTextMax : cint;
  5508. hItem : HTREEITEM;
  5509. lParam : LPARAM;
  5510. END;
  5511. NMTVGETINFOTIPW = tagNMTVGETINFOTIPW;
  5512. LPNMTVGETINFOTIPW = ^tagNMTVGETINFOTIPW;
  5513. TNMTVGETINFOTIPW = tagNMTVGETINFOTIPW;
  5514. PNMTVGETINFOTIPW = ^tagNMTVGETINFOTIPW;
  5515. CONST
  5516. {$IFDEF UNICODE}
  5517. TVN_GETINFOTIP = TVN_GETINFOTIPW;
  5518. TYPE
  5519. NMTVGETINFOTIP = NMTVGETINFOTIPW;
  5520. LPNMTVGETINFOTIP = LPNMTVGETINFOTIPW;
  5521. {$ELSE}
  5522. TVN_GETINFOTIP = TVN_GETINFOTIPA;
  5523. TYPE
  5524. NMTVGETINFOTIP = NMTVGETINFOTIPA;
  5525. LPNMTVGETINFOTIP = LPNMTVGETINFOTIPA;
  5526. {$ENDIF}
  5527. // treeview's customdraw return meaning don't draw images. valid on CDRF_NOTIFYITEMPREPAINT
  5528. CONST
  5529. TVCDRF_NOIMAGES = $00010000;
  5530. {$ENDIF} // _WIN32_IE >= 0x0400
  5531. {$ifdef ie6plus}
  5532. Type
  5533. tagTVITEMCHANGE = packed record
  5534. hdr : NMHDR;
  5535. uChanged : UINT;
  5536. hItem : HTREEITEM;
  5537. uStateNew : UINT;
  5538. uStateOld : UINT;
  5539. lParam : LPARAM;
  5540. end;
  5541. NMTVITEMCHANGE = tagTVITEMCHANGE;
  5542. PNMTVITEMCHANGE = ^NMTVITEMCHANGE;
  5543. tagNMTVASYNCDRAW = packed record
  5544. hdr : NMHDR;
  5545. pimldp : PIMAGELISTDRAWPARAMS; { the draw that failed }
  5546. hr : HRESULT; { why it failed }
  5547. hItem : HTREEITEM; { item that failed to draw icon }
  5548. lParam : LPARAM; { its data }
  5549. dwRetFlags : DWORD; { Out Params }
  5550. iRetImageIndex : longint; { What listview should do on return }
  5551. end; { used if ADRF_DRAWIMAGE is returned }
  5552. NMTVASYNCDRAW = tagNMTVASYNCDRAW;
  5553. PNMTVASYNCDRAW = ^NMTVASYNCDRAW;
  5554. CONST
  5555. {$IFDEF UNICODE}
  5556. TVN_ITEMCHANGING = TVN_ITEMCHANGINGW;
  5557. TVN_ITEMCHANGED = TVN_ITEMCHANGEDW;
  5558. {$ELSE}
  5559. TVN_ITEMCHANGING = TVN_ITEMCHANGINGA;
  5560. TVN_ITEMCHANGED = TVN_ITEMCHANGEDA;
  5561. {$ENDIF}
  5562. {$endif}
  5563. {$ENDIF} // NOTREEVIEW
  5564. {$ifdef ie3plus}
  5565. {$IFNDEF NOUSEREXCONTROLS}
  5566. //////////////////// ComboBoxEx ////////////////////////////////
  5567. WC_COMBOBOXEXW = {L}'ComboBoxEx32'#$0000;
  5568. WC_COMBOBOXEXA = 'ComboBoxEx32';
  5569. {$IFDEF UNICODE}
  5570. WC_COMBOBOXEX = WC_COMBOBOXEXW;
  5571. {$ELSE}
  5572. WC_COMBOBOXEX = WC_COMBOBOXEXA;
  5573. {$ENDIF}
  5574. CONST
  5575. CBEIF_TEXT = $00000001;
  5576. CBEIF_IMAGE = $00000002;
  5577. CBEIF_SELECTEDIMAGE = $00000004;
  5578. CBEIF_OVERLAY = $00000008;
  5579. CBEIF_INDENT = $00000010;
  5580. CBEIF_LPARAM = $00000020;
  5581. CBEIF_DI_SETITEM = $10000000;
  5582. TYPE
  5583. tagCOMBOBOXEXITEMA = Record
  5584. mask : UINT;
  5585. iItem : INT_PTR;
  5586. pszText : LPSTR;
  5587. cchTextMax : cint;
  5588. iImage : cint;
  5589. iSelectedImage : cint;
  5590. iOverlay : cint;
  5591. iIndent : cint;
  5592. lParam : LPARAM;
  5593. END;
  5594. COMBOBOXEXITEMA = tagCOMBOBOXEXITEMA;
  5595. PCOMBOBOXEXITEMA = ^tagCOMBOBOXEXITEMA;
  5596. TCOMBOBOXEXITEMA = tagCOMBOBOXEXITEMA;
  5597. // PCOMBOBOXEXITEMA = ^tagCOMBOBOXEXITEMA;
  5598. PCCOMBOBOXEXITEMA = ^COMBOBOXEXITEMA;
  5599. tagCOMBOBOXEXITEMW = Record
  5600. mask : UINT;
  5601. iItem : INT_PTR;
  5602. pszText : LPWSTR;
  5603. cchTextMax : cint;
  5604. iImage : cint;
  5605. iSelectedImage : cint;
  5606. iOverlay : cint;
  5607. iIndent : cint;
  5608. lParam : LPARAM;
  5609. END;
  5610. COMBOBOXEXITEMW = tagCOMBOBOXEXITEMW;
  5611. PCOMBOBOXEXITEMW = ^tagCOMBOBOXEXITEMW;
  5612. TCOMBOBOXEXITEMW = tagCOMBOBOXEXITEMW;
  5613. // PCOMBOBOXEXITEMW = ^tagCOMBOBOXEXITEMW;
  5614. PCCOMBOBOXEXITEMW = ^COMBOBOXEXITEMW;
  5615. {$IFDEF UNICODE}
  5616. COMBOBOXEXITEM = COMBOBOXEXITEMW;
  5617. PCOMBOBOXEXITEM = PCOMBOBOXEXITEMW;
  5618. PCCOMBOBOXEXITEM = PCCOMBOBOXEXITEMW;
  5619. {$ELSE}
  5620. COMBOBOXEXITEM = COMBOBOXEXITEMA;
  5621. PCOMBOBOXEXITEM = PCOMBOBOXEXITEMA;
  5622. PCCOMBOBOXEXITEM = PCCOMBOBOXEXITEMA;
  5623. {$ENDIF}
  5624. TComboBoxExItem = COMBOBOXEXITEM;
  5625. CONST
  5626. CBEM_INSERTITEMA = (WM_USER + 1);
  5627. CBEM_SETIMAGELIST = (WM_USER + 2);
  5628. CBEM_GETIMAGELIST = (WM_USER + 3);
  5629. CBEM_GETITEMA = (WM_USER + 4);
  5630. CBEM_SETITEMA = (WM_USER + 5);
  5631. CBEM_DELETEITEM = CB_DELETESTRING;
  5632. CBEM_GETCOMBOCONTROL = (WM_USER + 6);
  5633. CBEM_GETEDITCONTROL = (WM_USER + 7);
  5634. {$ifdef ie4plus}
  5635. CBEM_SETEXSTYLE = (WM_USER + 8); // use SETEXTENDEDSTYLE instead
  5636. CBEM_SETEXTENDEDSTYLE = (WM_USER + 14); // lparam == new style, wParam (optional) == mask
  5637. CBEM_GETEXSTYLE = (WM_USER + 9); // use GETEXTENDEDSTYLE instead
  5638. CBEM_GETEXTENDEDSTYLE = (WM_USER + 9);
  5639. CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  5640. CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  5641. {$ELSE}
  5642. CBEM_SETEXSTYLE = (WM_USER + 8);
  5643. CBEM_GETEXSTYLE = (WM_USER + 9);
  5644. {$ENDIF}
  5645. CBEM_HASEDITCHANGED = (WM_USER + 10);
  5646. CBEM_INSERTITEMW = (WM_USER + 11);
  5647. CBEM_SETITEMW = (WM_USER + 12);
  5648. CBEM_GETITEMW = (WM_USER + 13);
  5649. {$IFDEF UNICODE}
  5650. CBEM_INSERTITEM = CBEM_INSERTITEMW;
  5651. CBEM_SETITEM = CBEM_SETITEMW;
  5652. CBEM_GETITEM = CBEM_GETITEMW;
  5653. {$ELSE}
  5654. CBEM_INSERTITEM = CBEM_INSERTITEMA;
  5655. CBEM_SETITEM = CBEM_SETITEMA;
  5656. CBEM_GETITEM = CBEM_GETITEMA;
  5657. {$ENDIF}
  5658. {$ifdef win32xp}
  5659. CBEM_SETWINDOWTHEME = CCM_SETWINDOWTHEME;
  5660. {$ENDIF}
  5661. CBES_EX_NOEDITIMAGE = $00000001;
  5662. CBES_EX_NOEDITIMAGEINDENT = $00000002;
  5663. CBES_EX_PATHWORDBREAKPROC = $00000004;
  5664. {$ifdef ie4plus}
  5665. CBES_EX_NOSIZELIMIT = $00000008;
  5666. CBES_EX_CASESENSITIVE = $00000010;
  5667. {$ifdef win32vista}
  5668. CBES_EX_TEXTENDELLIPSIS = $00000020;
  5669. {$endif}
  5670. TYPE
  5671. DummyStruct9 = Record
  5672. hdr : NMHDR;
  5673. ceItem : COMBOBOXEXITEMA;
  5674. END;
  5675. NMCOMBOBOXEXA = DummyStruct9;
  5676. PNMCOMBOBOXEXA = ^DummyStruct9;
  5677. TDummyStruct9 = DummyStruct9;
  5678. PDummyStruct9 = ^DummyStruct9;
  5679. DummyStruct10 = Record
  5680. hdr : NMHDR;
  5681. ceItem : COMBOBOXEXITEMW;
  5682. END;
  5683. NMCOMBOBOXEXW = DummyStruct10;
  5684. PNMCOMBOBOXEXW = ^DummyStruct10;
  5685. TDummyStruct10 = DummyStruct10;
  5686. PDummyStruct10 = ^DummyStruct10;
  5687. {$ELSE}
  5688. DummyStruct11 = Record
  5689. hdr : NMHDR;
  5690. ceItem : COMBOBOXEXITEM;
  5691. END;
  5692. NMCOMBOBOXEX = DummyStruct11;
  5693. PNMCOMBOBOXEX = ^DummyStruct11;
  5694. TDummyStruct11 = DummyStruct11;
  5695. PDummyStruct11 = ^DummyStruct11;
  5696. CONST
  5697. CBEN_GETDISPINFO = (CBEN_FIRST - 0);
  5698. {$ENDIF} // _WIN32_IE >= 0x0400
  5699. CONST
  5700. {$ifdef ie4plus}
  5701. CBEN_GETDISPINFOA = (CBEN_FIRST - 0);
  5702. {$ENDIF}
  5703. CBEN_INSERTITEM = (CBEN_FIRST - 1);
  5704. CBEN_DELETEITEM = (CBEN_FIRST - 2);
  5705. CBEN_BEGINEDIT = (CBEN_FIRST - 4);
  5706. CBEN_ENDEDITA = (CBEN_FIRST - 5);
  5707. CBEN_ENDEDITW = (CBEN_FIRST - 6);
  5708. {$ifdef ie4plus}
  5709. CBEN_GETDISPINFOW = (CBEN_FIRST - 7);
  5710. {$ENDIF}
  5711. {$ifdef ie4plus}
  5712. CBEN_DRAGBEGINA = (CBEN_FIRST - 8);
  5713. CBEN_DRAGBEGINW = (CBEN_FIRST - 9);
  5714. {$IFDEF UNICODE}
  5715. CBEN_DRAGBEGIN = CBEN_DRAGBEGINW;
  5716. {$ELSE}
  5717. CBEN_DRAGBEGIN = CBEN_DRAGBEGINA;
  5718. {$ENDIF}
  5719. {$ENDIF} //(_WIN32_IE >= 0x0400)
  5720. TYPE
  5721. {$IFDEF UNICODE}
  5722. NMCOMBOBOXEX = NMCOMBOBOXEXW;
  5723. PNMCOMBOBOXEX = PNMCOMBOBOXEXW;
  5724. CONST
  5725. CBEN_GETDISPINFO = CBEN_GETDISPINFOW;
  5726. {$ELSE}
  5727. NMCOMBOBOXEX = NMCOMBOBOXEXA;
  5728. PNMCOMBOBOXEX = PNMCOMBOBOXEXA;
  5729. CONST
  5730. CBEN_GETDISPINFO = CBEN_GETDISPINFOA;
  5731. {$ENDIF}
  5732. // lParam specifies why the endedit is happening
  5733. {$IFDEF UNICODE}
  5734. CBEN_ENDEDIT = CBEN_ENDEDITW;
  5735. {$ELSE}
  5736. CBEN_ENDEDIT = CBEN_ENDEDITA;
  5737. {$ENDIF}
  5738. CONST
  5739. CBENF_KILLFOCUS = 1;
  5740. CBENF_RETURN = 2;
  5741. CBENF_ESCAPE = 3;
  5742. CBENF_DROPDOWN = 4;
  5743. CBEMAXSTRLEN = 260;
  5744. {$ifdef ie4plus}
  5745. // CBEN_DRAGBEGIN sends this information ...
  5746. TYPE
  5747. DummyStruct12 = Record
  5748. hdr : NMHDR;
  5749. iItemid : cint;
  5750. szText : Array[0..CBEMAXSTRLEN-1] OF WCHAR;
  5751. END;
  5752. NMCBEDRAGBEGINW = DummyStruct12;
  5753. LPNMCBEDRAGBEGINW = ^DummyStruct12;
  5754. PNMCBEDRAGBEGINW = ^DummyStruct12;
  5755. TDummyStruct12 = DummyStruct12;
  5756. PDummyStruct12 = ^DummyStruct12;
  5757. DummyStruct13 = Record
  5758. hdr : NMHDR;
  5759. iItemid : cint;
  5760. szText : Array[0..CBEMAXSTRLEN-1] OF char;
  5761. END;
  5762. NMCBEDRAGBEGINA = DummyStruct13;
  5763. LPNMCBEDRAGBEGINA = ^DummyStruct13;
  5764. PNMCBEDRAGBEGINA = ^DummyStruct13;
  5765. TDummyStruct13 = DummyStruct13;
  5766. PDummyStruct13 = ^DummyStruct13;
  5767. {$IFDEF UNICODE}
  5768. NMCBEDRAGBEGIN = NMCBEDRAGBEGINW;
  5769. LPNMCBEDRAGBEGIN = LPNMCBEDRAGBEGINW;
  5770. PNMCBEDRAGBEGIN = PNMCBEDRAGBEGINW;
  5771. {$ELSE}
  5772. NMCBEDRAGBEGIN = NMCBEDRAGBEGINA;
  5773. LPNMCBEDRAGBEGIN = LPNMCBEDRAGBEGINA;
  5774. PNMCBEDRAGBEGIN = PNMCBEDRAGBEGINA;
  5775. {$ENDIF}
  5776. {$ENDIF} // _WIN32_IE >= 0x0400
  5777. // CBEN_ENDEDIT sends this information...
  5778. // fChanged if the user actually did anything
  5779. // iNewSelection gives what would be the new selection unless the notify is failed
  5780. // iNewSelection may be CB_ERR if there's no match
  5781. DummyStruct14 = Record
  5782. hdr : NMHDR;
  5783. fChanged : BOOL;
  5784. iNewSelection : cint;
  5785. szText : Array[0..CBEMAXSTRLEN-1] OF WCHAR;
  5786. iWhy : cint;
  5787. END;
  5788. NMCBEENDEDITW = DummyStruct14;
  5789. LPNMCBEENDEDITW = ^DummyStruct14;
  5790. PNMCBEENDEDITW = ^DummyStruct14;
  5791. TDummyStruct14 = DummyStruct14;
  5792. PDummyStruct14 = ^DummyStruct14;
  5793. DummyStruct15 = Record
  5794. hdr : NMHDR;
  5795. fChanged : BOOL;
  5796. iNewSelection : cint;
  5797. szText : Array[0..CBEMAXSTRLEN-1] OF char;
  5798. iWhy : cint;
  5799. END;
  5800. NMCBEENDEDITA = DummyStruct15;
  5801. LPNMCBEENDEDITA = ^DummyStruct15;
  5802. PNMCBEENDEDITA = ^DummyStruct15;
  5803. TDummyStruct15 = DummyStruct15;
  5804. PDummyStruct15 = ^DummyStruct15;
  5805. {$IFDEF UNICODE}
  5806. NMCBEENDEDIT = NMCBEENDEDITW;
  5807. LPNMCBEENDEDIT = LPNMCBEENDEDITW;
  5808. PNMCBEENDEDIT = PNMCBEENDEDITW;
  5809. {$ELSE}
  5810. NMCBEENDEDIT = NMCBEENDEDITA;
  5811. LPNMCBEENDEDIT = LPNMCBEENDEDITA;
  5812. PNMCBEENDEDIT = PNMCBEENDEDITA;
  5813. {$ENDIF}
  5814. {$ENDIF}
  5815. {$ENDIF} // _WIN32_IE >= 0x0300
  5816. //====== TAB CONTROL ==========================================================
  5817. {$IFNDEF NOTABCONTROL}
  5818. {$IFDEF _WIN32}
  5819. CONST
  5820. WC_TABCONTROLA = 'SysTabControl32';
  5821. WC_TABCONTROLW = {L}'SysTabControl32'#$0000;
  5822. {$IFDEF UNICODE}
  5823. WC_TABCONTROL = WC_TABCONTROLW;
  5824. {$ELSE}
  5825. WC_TABCONTROL = WC_TABCONTROLA;
  5826. {$ENDIF}
  5827. {$ELSE}
  5828. CONST
  5829. WC_TABCONTROL = 'SysTabControl';
  5830. {$ENDIF}
  5831. // begin_r_commctrl
  5832. {$ifdef ie3plus}
  5833. TCS_SCROLLOPPOSITE = $0001; // assumes multiline tab
  5834. TCS_BOTTOM = $0002;
  5835. TCS_RIGHT = $0002;
  5836. TCS_MULTISELECT = $0004; // allow multi-select in button mode
  5837. {$ENDIF}
  5838. {$ifdef ie4plus}
  5839. TCS_FLATBUTTONS = $0008;
  5840. {$ENDIF}
  5841. TCS_FORCEICONLEFT = $0010;
  5842. TCS_FORCELABELLEFT = $0020;
  5843. {$ifdef ie3plus}
  5844. TCS_HOTTRACK = $0040;
  5845. TCS_VERTICAL = $0080;
  5846. {$ENDIF}
  5847. TCS_TABS = $0000;
  5848. TCS_BUTTONS = $0100;
  5849. TCS_SINGLELINE = $0000;
  5850. TCS_MULTILINE = $0200;
  5851. TCS_RIGHTJUSTIFY = $0000;
  5852. TCS_FIXEDWIDTH = $0400;
  5853. TCS_RAGGEDRIGHT = $0800;
  5854. TCS_FOCUSONBUTTONDOWN = $1000;
  5855. TCS_OWNERDRAWFIXED = $2000;
  5856. TCS_TOOLTIPS = $4000;
  5857. TCS_FOCUSNEVER = $8000;
  5858. // end_r_commctrl
  5859. {$ifdef ie4plus}
  5860. // EX styles for use with TCM_SETEXTENDEDSTYLE
  5861. TCS_EX_FLATSEPARATORS = $00000001;
  5862. TCS_EX_REGISTERDROP = $00000002;
  5863. {$ENDIF}
  5864. TCM_GETIMAGELIST = (TCM_FIRST + 2);
  5865. // Macro 217
  5866. Function TabCtrl_GetImageList( hwnd : hwnd):HIMAGELIST;
  5867. CONST
  5868. TCM_SETIMAGELIST = (TCM_FIRST + 3);
  5869. // Macro 218
  5870. Function TabCtrl_SetImageList( hwnd : hwnd; himl : HIMAGELIST):HIMAGELIST;
  5871. CONST
  5872. TCM_GETITEMCOUNT = (TCM_FIRST + 4);
  5873. // Macro 219
  5874. Function TabCtrl_GetItemCount( hwnd : hwnd):cint;
  5875. CONST
  5876. TCIF_TEXT = $0001;
  5877. TCIF_IMAGE = $0002;
  5878. TCIF_RTLREADING = $0004;
  5879. TCIF_PARAM = $0008;
  5880. {$ifdef ie3plus}
  5881. TCIF_STATE = $0010;
  5882. TCIS_BUTTONPRESSED = $0001;
  5883. {$ENDIF}
  5884. {$ifdef ie4plus}
  5885. TCIS_HIGHLIGHTED = $0002;
  5886. {$ENDIF}
  5887. TYPE
  5888. tagTCITEMHEADERA = Record
  5889. mask : UINT;
  5890. lpReserved1 : UINT;
  5891. lpReserved2 : UINT;
  5892. pszText : LPSTR;
  5893. cchTextMax : cint;
  5894. iImage : cint;
  5895. END;
  5896. TCITEMHEADERA = tagTCITEMHEADERA;
  5897. LPTCITEMHEADERA = ^tagTCITEMHEADERA;
  5898. TTCITEMHEADERA = tagTCITEMHEADERA;
  5899. PTCITEMHEADERA = ^tagTCITEMHEADERA;
  5900. tagTCITEMHEADERW = Record
  5901. mask : UINT;
  5902. lpReserved1 : UINT;
  5903. lpReserved2 : UINT;
  5904. pszText : LPWSTR;
  5905. cchTextMax : cint;
  5906. iImage : cint;
  5907. END;
  5908. TCITEMHEADERW = tagTCITEMHEADERW;
  5909. LPTCITEMHEADERW = ^tagTCITEMHEADERW;
  5910. TTCITEMHEADERW = tagTCITEMHEADERW;
  5911. PTCITEMHEADERW = ^tagTCITEMHEADERW;
  5912. {$IFDEF UNICODE}
  5913. TCITEMHEADER = TCITEMHEADERW;
  5914. LPTCITEMHEADER = LPTCITEMHEADERW;
  5915. {$ELSE}
  5916. TCITEMHEADER = TCITEMHEADERA;
  5917. LPTCITEMHEADER = LPTCITEMHEADERA;
  5918. {$ENDIF}
  5919. {$ifdef ie3plus}
  5920. TC_ITEMHEADERA = TCITEMHEADERA;
  5921. TC_ITEMHEADERW = TCITEMHEADERW;
  5922. {$ELSE}
  5923. tagTCITEMHEADERA = _TC_ITEMHEADERA;
  5924. TCITEMHEADERA = TC_ITEMHEADERA;
  5925. tagTCITEMHEADERW = _TC_ITEMHEADERW;
  5926. TCITEMHEADERW = TC_ITEMHEADERW;
  5927. {$ENDIF}
  5928. TC_ITEMHEADER = TCITEMHEADER;
  5929. tagTCITEMA = Record
  5930. mask : UINT;
  5931. {$ifdef ie3plus}
  5932. dwState : DWORD;
  5933. dwStateMask : DWORD;
  5934. {$ELSE}
  5935. lpReserved1 : UINT;
  5936. lpReserved2 : UINT;
  5937. {$ENDIF}
  5938. pszText : LPSTR;
  5939. cchTextMax : cint;
  5940. iImage : cint;
  5941. lParam : LPARAM;
  5942. END;
  5943. TCITEMA = tagTCITEMA;
  5944. LPTCITEMA = ^tagTCITEMA;
  5945. TTCITEMA = tagTCITEMA;
  5946. PTCITEMA = ^tagTCITEMA;
  5947. tagTCITEMW = Record
  5948. mask : UINT;
  5949. {$ifdef ie3plus}
  5950. dwState : DWORD;
  5951. dwStateMask : DWORD;
  5952. {$ELSE}
  5953. lpReserved1 : UINT;
  5954. lpReserved2 : UINT;
  5955. {$ENDIF}
  5956. pszText : LPWSTR;
  5957. cchTextMax : cint;
  5958. iImage : cint;
  5959. lParam : LPARAM;
  5960. END;
  5961. TCITEMW = tagTCITEMW;
  5962. LPTCITEMW = ^tagTCITEMW;
  5963. TTCITEMW = tagTCITEMW;
  5964. PTCITEMW = ^tagTCITEMW;
  5965. {$IFDEF UNICODE}
  5966. TCITEM = TCITEMW;
  5967. LPTCITEM = LPTCITEMW;
  5968. {$ELSE}
  5969. TCITEM = TCITEMA;
  5970. LPTCITEM = LPTCITEMA;
  5971. {$ENDIF}
  5972. {$ifdef ie3plus}
  5973. TC_ITEMA = TCITEMA;
  5974. TC_ITEMW = TCITEMW;
  5975. {$ELSE}
  5976. tagTCITEMA = _TC_ITEMA;
  5977. TCITEMA = TC_ITEMA;
  5978. tagTCITEMW = _TC_ITEMW;
  5979. TCITEMW = TC_ITEMW;
  5980. {$ENDIF}
  5981. TC_ITEM = TCITEM;
  5982. CONST
  5983. TCM_GETITEMA = (TCM_FIRST + 5);
  5984. TCM_GETITEMW = (TCM_FIRST + 60);
  5985. {$IFDEF UNICODE}
  5986. TCM_GETITEM = TCM_GETITEMW;
  5987. {$ELSE}
  5988. TCM_GETITEM = TCM_GETITEMA;
  5989. {$ENDIF}
  5990. // Macro 220
  5991. Function TabCtrl_GetItem( hwnd : hwnd; iItem : cint;var pitem : TC_ITEM ):BOOL;
  5992. CONST
  5993. TCM_SETITEMA = (TCM_FIRST + 6);
  5994. TCM_SETITEMW = (TCM_FIRST + 61);
  5995. {$IFDEF UNICODE}
  5996. TCM_SETITEM = TCM_SETITEMW;
  5997. {$ELSE}
  5998. TCM_SETITEM = TCM_SETITEMA;
  5999. {$ENDIF}
  6000. // Macro 221
  6001. Function TabCtrl_SetItem( hwnd : hwnd; iItem : cint;var pitem : TC_ITEM ):BOOL;
  6002. CONST
  6003. TCM_INSERTITEMA = (TCM_FIRST + 7);
  6004. TCM_INSERTITEMW = (TCM_FIRST + 62);
  6005. {$IFDEF UNICODE}
  6006. TCM_INSERTITEM = TCM_INSERTITEMW;
  6007. {$ELSE}
  6008. TCM_INSERTITEM = TCM_INSERTITEMA;
  6009. {$ENDIF}
  6010. // Macro 222
  6011. Function TabCtrl_InsertItem( hwnd : hwnd; iItem : cint;CONST pitem : TC_ITEM ):cint;
  6012. CONST
  6013. TCM_DELETEITEM = (TCM_FIRST + 8);
  6014. // Macro 223
  6015. Function TabCtrl_DeleteItem( hwnd : hwnd; i : cint):BOOL;
  6016. CONST
  6017. TCM_DELETEALLITEMS = (TCM_FIRST + 9);
  6018. // Macro 224
  6019. Function TabCtrl_DeleteAllItems( hwnd : hwnd):BOOL;
  6020. CONST
  6021. TCM_GETITEMRECT = (TCM_FIRST + 10);
  6022. // Macro 225
  6023. Function TabCtrl_GetItemRect( hwnd : hwnd; i : cint;var prc : RECT ):BOOL;
  6024. CONST
  6025. TCM_GETCURSEL = (TCM_FIRST + 11);
  6026. // Macro 226
  6027. Function TabCtrl_GetCurSel( hwnd : hwnd):cint;
  6028. CONST
  6029. TCM_SETCURSEL = (TCM_FIRST + 12);
  6030. // Macro 227
  6031. Function TabCtrl_SetCurSel( hwnd : hwnd; i : WPARAM):cint;
  6032. CONST
  6033. TCHT_NOWHERE = $0001;
  6034. TCHT_ONITEMICON = $0002;
  6035. TCHT_ONITEMLABEL = $0004;
  6036. TCHT_ONITEM = (TCHT_ONITEMICON OR TCHT_ONITEMLABEL);
  6037. TYPE
  6038. tagTCHITTESTINFO = Record
  6039. pt : POINT;
  6040. flags : UINT;
  6041. END;
  6042. TCHITTESTINFO = tagTCHITTESTINFO;
  6043. LPTCHITTESTINFO = ^tagTCHITTESTINFO;
  6044. TTCHITTESTINFO = tagTCHITTESTINFO;
  6045. PTCHITTESTINFO = ^tagTCHITTESTINFO;
  6046. {$ifdef ie3plus}
  6047. LPTC_HITTESTINFO = LPTCHITTESTINFO;
  6048. TC_HITTESTINFO = TCHITTESTINFO;
  6049. {$ELSE}
  6050. tagTCHITTESTINFO = _TC_HITTESTINFO;
  6051. TCHITTESTINFO = TC_HITTESTINFO;
  6052. LPTCHITTESTINFO = LPTC_HITTESTINFO;
  6053. {$ENDIF}
  6054. CONST
  6055. TCM_HITTEST = (TCM_FIRST + 13);
  6056. // Macro 228
  6057. Function TabCtrl_HitTest( hwndTC : hwnd;var pinfo : TC_HITTESTINFO ):cint;inline;
  6058. Function TabCtrl_HitTest( hwndTC : hwnd;pinfo : LPTCHITTESTINFO ):cint;inline;
  6059. CONST
  6060. TCM_SETITEMEXTRA = (TCM_FIRST + 14);
  6061. // Macro 229
  6062. Function TabCtrl_SetItemExtra( hwndTC : hwnd; cb : WPARAM):BOOL;
  6063. CONST
  6064. TCM_ADJUSTRECT = (TCM_FIRST + 40);
  6065. // Macro 230
  6066. Function TabCtrl_AdjustRect( hwnd : hwnd; bLarger : BOOL;var prc : RECT ):cint;
  6067. CONST
  6068. TCM_SETITEMSIZE = (TCM_FIRST + 41);
  6069. // Macro 231
  6070. Function TabCtrl_SetItemSize( hwnd : hwnd; x :wparam ; y : lparam ):DWORD;
  6071. CONST
  6072. TCM_REMOVEIMAGE = (TCM_FIRST + 42);
  6073. // Macro 232
  6074. Procedure TabCtrl_RemoveImage( hwnd : hwnd; i : wparam );
  6075. CONST
  6076. TCM_SETPADDING = (TCM_FIRST + 43);
  6077. // Macro 233
  6078. Procedure TabCtrl_SetPadding( hwnd : hwnd; cx : wparam ; cy : lparam );
  6079. CONST
  6080. TCM_GETROWCOUNT = (TCM_FIRST + 44);
  6081. // Macro 234
  6082. Function TabCtrl_GetRowCount( hwnd : hwnd):cint;
  6083. CONST
  6084. TCM_GETTOOLTIPS = (TCM_FIRST + 45);
  6085. // Macro 235
  6086. Function TabCtrl_GetToolTips( hwnd : hwnd):HWND;
  6087. CONST
  6088. TCM_SETTOOLTIPS = (TCM_FIRST + 46);
  6089. // Macro 236
  6090. Procedure TabCtrl_SetToolTips( hwnd : hwnd; hwndTT : WPARAM);
  6091. CONST
  6092. TCM_GETCURFOCUS = (TCM_FIRST + 47);
  6093. // Macro 237
  6094. Function TabCtrl_GetCurFocus( hwnd : hwnd):cint;
  6095. CONST
  6096. TCM_SETCURFOCUS = (TCM_FIRST + 48);
  6097. // Macro 238
  6098. Procedure TabCtrl_SetCurFocus( hwnd : hwnd; i : LParam );
  6099. {$ifdef ie3plus}
  6100. CONST
  6101. TCM_SETMINTABWIDTH = (TCM_FIRST + 49);
  6102. // Macro 239
  6103. Function TabCtrl_SetMinTabWidth( hwnd : hwnd; x : WParam ):cint;
  6104. CONST
  6105. TCM_DESELECTALL = (TCM_FIRST + 50);
  6106. // Macro 240
  6107. Procedure TabCtrl_DeselectAll( hwnd : hwnd; fExcludeFocus : WPARAM );
  6108. {$ENDIF}
  6109. {$ifdef ie4plus}
  6110. CONST
  6111. TCM_HIGHLIGHTITEM = (TCM_FIRST + 51);
  6112. // Macro 241
  6113. Function TabCtrl_HighlightItem( hwnd : hwnd; i : WPARAM; fHighlight :bool):BOOL;
  6114. CONST
  6115. TCM_SETEXTENDEDSTYLE = (TCM_FIRST + 52); // optional wParam == mask
  6116. // Macro 242
  6117. Function TabCtrl_SetExtendedStyle( hwnd : hwnd; dw :LPARAM ):DWORD;
  6118. CONST
  6119. TCM_GETEXTENDEDSTYLE = (TCM_FIRST + 53);
  6120. // Macro 243
  6121. Function TabCtrl_GetExtendedStyle( hwnd : hwnd):DWORD;
  6122. CONST
  6123. TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  6124. // Macro 244
  6125. Function TabCtrl_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
  6126. CONST
  6127. TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  6128. // Macro 245
  6129. Function TabCtrl_GetUnicodeFormat( hwnd : hwnd):BOOL;
  6130. {$ENDIF} // _WIN32_IE >= 0x0400
  6131. CONST
  6132. TCN_KEYDOWN = (TCN_FIRST - 0);
  6133. {$IFDEF _WIN32}
  6134. // #include <pshpack1.h>
  6135. {$ENDIF}
  6136. TYPE
  6137. tagTCKEYDOWN = Record
  6138. hdr : NMHDR;
  6139. wVKey : WORD;
  6140. flags : UINT;
  6141. END;
  6142. NMTCKEYDOWN = tagTCKEYDOWN;
  6143. TTCKEYDOWN = tagTCKEYDOWN;
  6144. PTCKEYDOWN = ^tagTCKEYDOWN;
  6145. {$ifdef ie3plus}
  6146. TC_KEYDOWN = NMTCKEYDOWN;
  6147. {$ELSE}
  6148. tagTCKEYDOWN = _TC_KEYDOWN;
  6149. NMTCKEYDOWN = TC_KEYDOWN;
  6150. {$ENDIF}
  6151. {$IFDEF _WIN32}
  6152. // #include <poppack.h>
  6153. {$ENDIF}
  6154. CONST
  6155. TCN_SELCHANGE = (TCN_FIRST - 1);
  6156. TCN_SELCHANGING = (TCN_FIRST - 2);
  6157. {$ifdef ie4plus}
  6158. TCN_GETOBJECT = (TCN_FIRST - 3);
  6159. {$ENDIF} // _WIN32_IE >= 0x0400
  6160. {$ifdef ie5plus}
  6161. TCN_FOCUSCHANGE = (TCN_FIRST - 4);
  6162. {$ENDIF} // _WIN32_IE >= 0x0500
  6163. {$ENDIF} // NOTABCONTROL
  6164. //====== ANIMATE CONTROL ======================================================
  6165. {$IFNDEF NOANIMATE}
  6166. {$IFDEF _WIN32}
  6167. ANIMATE_CLASSW = {L}'SysAnimate32'#$0000;
  6168. ANIMATE_CLASSA = 'SysAnimate32';
  6169. {$IFDEF UNICODE}
  6170. ANIMATE_CLASS = ANIMATE_CLASSW;
  6171. {$ELSE}
  6172. ANIMATE_CLASS = ANIMATE_CLASSA;
  6173. {$ENDIF}
  6174. // begin_r_commctrl
  6175. CONST
  6176. ACS_CENTER = $0001;
  6177. ACS_TRANSPARENT = $0002;
  6178. ACS_AUTOPLAY = $0004;
  6179. {$ifdef ie3plus}
  6180. ACS_TIMER = $0008; // don't use threads... use timers
  6181. {$ENDIF}
  6182. // end_r_commctrl
  6183. ACM_OPENA = (WM_USER+100);
  6184. ACM_OPENW = (WM_USER+103);
  6185. {$IFDEF UNICODE}
  6186. ACM_OPEN = ACM_OPENW;
  6187. {$ELSE}
  6188. ACM_OPEN = ACM_OPENA;
  6189. {$ENDIF}
  6190. CONST
  6191. ACM_PLAY = (WM_USER+101);
  6192. ACM_STOP = (WM_USER+102);
  6193. ACN_START = 1;
  6194. ACN_STOP = 2;
  6195. // Macro 246
  6196. Function Animate_Create(hwndP :HWND;id:HMENU;dwStyle:dword;hInstance:HINST):HWND;
  6197. // Macro 247
  6198. // #define Animate_Open(hwnd, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, 0, (LPARAM)(LPTSTR)(szName))
  6199. // Macro 248
  6200. // #define Animate_OpenEx(hwnd, hInst, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, (WPARAM)(hInst), (LPARAM)(LPTSTR)(szName))
  6201. // Macro 249
  6202. // #define Animate_Play(hwnd, from, to, rep) (BOOL)SNDMSG(hwnd, ACM_PLAY, (WPARAM)(rep), (LPARAM)MAKELONG(from, to))
  6203. // Macro 250
  6204. // #define Animate_Stop(hwnd) (BOOL)SNDMSG(hwnd, ACM_STOP, 0, 0)
  6205. // Macro 251
  6206. // #define Animate_Close(hwnd) Animate_Open(hwnd, NULL)
  6207. // Macro 252
  6208. // #define Animate_Seek(hwnd, frame) Animate_Play(hwnd, frame, frame, 1)
  6209. {$ENDIF}
  6210. {$ENDIF} // NOANIMATE
  6211. {$ifdef ie3plus}
  6212. //====== MONTHCAL CONTROL ======================================================
  6213. {$IFNDEF NOMONTHCAL}
  6214. {$IFDEF _WIN32}
  6215. CONST
  6216. MONTHCAL_CLASSW = {L}'SysMonthCal32'#$0000;
  6217. MONTHCAL_CLASSA = 'SysMonthCal32';
  6218. {$IFDEF UNICODE}
  6219. MONTHCAL_CLASS = MONTHCAL_CLASSW;
  6220. {$ELSE}
  6221. MONTHCAL_CLASS = MONTHCAL_CLASSA;
  6222. {$ENDIF}
  6223. TYPE
  6224. // bit-packed array of "bold" info for a month
  6225. // if a bit is on, that day is drawn bold
  6226. MONTHDAYSTATE = DWORD;
  6227. LPMONTHDAYSTATE = ^MONTHDAYSTATE;
  6228. TMonthDayState = MONTHDAYSTATE;
  6229. PMonthDayState = LPMONTHDAYSTATE;
  6230. CONST
  6231. MCM_FIRST = $1000;
  6232. // BOOL MonthCal_GetCurSel(HWND hmc, LPSYSTEMTIME pst)
  6233. // returns FALSE if MCS_MULTISELECT
  6234. // returns TRUE and sets *pst to the currently selected date otherwise
  6235. CONST
  6236. MCM_GETCURSEL = (MCM_FIRST + 1);
  6237. // Macro 253
  6238. // #define MonthCal_GetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETCURSEL, 0, (LPARAM)(pst))
  6239. function MonthCal_GetCurSel(hwndMC:HWND; lpSysTime :LPSYSTEMTIME):Bool;
  6240. // BOOL MonthCal_SetCurSel(HWND hmc, LPSYSTEMTIME pst)
  6241. // returns FALSE if MCS_MULTISELECT
  6242. // returns TURE and sets the currently selected date to *pst otherwise
  6243. CONST
  6244. MCM_SETCURSEL = (MCM_FIRST + 2);
  6245. // Macro 254
  6246. // #define MonthCal_SetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_SETCURSEL, 0, (LPARAM)(pst))
  6247. // DWORD MonthCal_GetMaxSelCount(HWND hmc)
  6248. // returns the maximum number of selectable days allowed
  6249. function MonthCal_SetCurSel(hwndMC:HWND; lpSysTime :LPSYSTEMTIME):Bool;inline;
  6250. function MonthCal_SetCurSel(hwndMC:HWND; var lpSysTime :TSYSTEMTIME):Bool;inline;
  6251. CONST
  6252. MCM_GETMAXSELCOUNT = (MCM_FIRST + 3);
  6253. // Macro 255
  6254. // #define MonthCal_GetMaxSelCount(hmc) (DWORD)SNDMSG(hmc, MCM_GETMAXSELCOUNT, 0, 0L)
  6255. // BOOL MonthCal_SetMaxSelCount(HWND hmc, UINT n)
  6256. // sets the max number days that can be selected iff MCS_MULTISELECT
  6257. function MonthCal_GetMaxSelCount(hwndMC:HWND):Bool;
  6258. CONST
  6259. MCM_SETMAXSELCOUNT = (MCM_FIRST + 4);
  6260. // Macro 256
  6261. // #define MonthCal_SetMaxSelCount(hmc, n) (BOOL)SNDMSG(hmc, MCM_SETMAXSELCOUNT, (WPARAM)(n), 0L)
  6262. function MonthCal_SetMaxSelCount(hwndMC:HWND;n:uint):Bool;
  6263. // BOOL MonthCal_GetSelRange(HWND hmc, LPSYSTEMTIME rgst)
  6264. // sets rgst[0] to the first day of the selection range
  6265. // sets rgst[1] to the last day of the selection range
  6266. CONST
  6267. MCM_GETSELRANGE = (MCM_FIRST + 5);
  6268. // Macro 257
  6269. // #define MonthCal_GetSelRange(hmc, rgst) SNDMSG(hmc, MCM_GETSELRANGE, 0, (LPARAM)(rgst))
  6270. // BOOL MonthCal_SetSelRange(HWND hmc, LPSYSTEMTIME rgst)
  6271. // selects the range of days from rgst[0] to rgst[1]
  6272. function MonthCal_GetSelRange(hwndMC:HWND; lpSysTime :LPSYSTEMTIME):Bool;
  6273. CONST
  6274. MCM_SETSELRANGE = (MCM_FIRST + 6);
  6275. // Macro 258
  6276. // #define MonthCal_SetSelRange(hmc, rgst) SNDMSG(hmc, MCM_SETSELRANGE, 0, (LPARAM)(rgst))
  6277. // DWORD MonthCal_GetMonthRange(HWND hmc, DWORD gmr, LPSYSTEMTIME rgst)
  6278. // if rgst specified, sets rgst[0] to the starting date and
  6279. // and rgst[1] to the ending date of the the selectable (non-grayed)
  6280. // days if GMR_VISIBLE or all the displayed days (including grayed)
  6281. // if GMR_DAYSTATE.
  6282. // returns the number of months spanned by the above range.
  6283. function MonthCal_SetSelRange(hwndMC:HWND; lpSysTime :LPSYSTEMTIME):Bool;
  6284. CONST
  6285. MCM_GETMONTHRANGE = (MCM_FIRST + 7);
  6286. // Macro 259
  6287. // #define MonthCal_GetMonthRange(hmc, gmr, rgst) (DWORD)SNDMSG(hmc, MCM_GETMONTHRANGE, (WPARAM)(gmr), (LPARAM)(rgst))
  6288. // BOOL MonthCal_SetDayState(HWND hmc, int cbds, DAYSTATE *rgds)
  6289. // cbds is the count of DAYSTATE items in rgds and it must be equal
  6290. // to the value returned from MonthCal_GetMonthRange(hmc, GMR_DAYSTATE, NULL)
  6291. // This sets the DAYSTATE bits for each month (grayed and non-grayed
  6292. // days) displayed in the calendar. The first bit in a month's DAYSTATE
  6293. // corresponts to bolding day 1, the second bit affects day 2, etc.
  6294. function MonthCal_GetMonthRange(hwndMC:HWND; gmr: DWORD;lpSysTime :LPSYSTEMTIME):Bool;
  6295. CONST
  6296. MCM_SETDAYSTATE = (MCM_FIRST + 8);
  6297. // Macro 260
  6298. // #define MonthCal_SetDayState(hmc, cbds, rgds) SNDMSG(hmc, MCM_SETDAYSTATE, (WPARAM)(cbds), (LPARAM)(rgds))
  6299. // BOOL MonthCal_GetMinReqRect(HWND hmc, LPRECT prc)
  6300. // sets *prc the minimal size needed to display one month
  6301. // To display two months, undo the AdjustWindowRect calculation already done to
  6302. // this rect, double the width, and redo the AdjustWindowRect calculation --
  6303. // the monthcal control will display two calendars in this window (if you also
  6304. // double the vertical size, you will get 4 calendars)
  6305. // NOTE: if you want to gurantee that the "Today" string is not clipped,
  6306. // get the MCM_GETMAXTODAYWIDTH and use the max of that width and this width
  6307. function MonthCal_SetDayState(hwndMC:HWND; gmr: Longint;lpDay :LPMONTHDAYSTATE):Bool;
  6308. CONST
  6309. MCM_GETMINREQRECT = (MCM_FIRST + 9);
  6310. // Macro 261
  6311. // #define MonthCal_GetMinReqRect(hmc, prc) SNDMSG(hmc, MCM_GETMINREQRECT, 0, (LPARAM)(prc))
  6312. // set colors to draw control with -- see MCSC_ bits below
  6313. function MonthCal_GetMinReqRect(hwndMC:HWND; lpr :LPRect):Bool;inline;
  6314. function MonthCal_GetMinReqRect(hwndMC:HWND; var lpr :TRect):Bool;inline;
  6315. CONST
  6316. MCM_SETCOLOR = (MCM_FIRST + 10);
  6317. // Macro 262
  6318. // #define MonthCal_SetColor(hmc, iColor, clr) SNDMSG(hmc, MCM_SETCOLOR, iColor, clr)
  6319. function MonthCal_SetColor(hwndMC:HWND; ic:longint;clr:COLORREF):DWORD;inline;
  6320. CONST
  6321. MCM_GETCOLOR = (MCM_FIRST + 11);
  6322. // Macro 263
  6323. // #define MonthCal_GetColor(hmc, iColor) SNDMSG(hmc, MCM_GETCOLOR, iColor, 0)
  6324. function MonthCal_GetColor(hwndMC:HWND; ic:longint):Bool;
  6325. CONST
  6326. MCSC_BACKGROUND = 0; // the background color (between months)
  6327. MCSC_TEXT = 1; // the dates
  6328. MCSC_TITLEBK = 2; // background of the title
  6329. MCSC_TITLETEXT = 3;
  6330. MCSC_MONTHBK = 4; // background within the month cal
  6331. MCSC_TRAILINGTEXT = 5; // the text color of header & trailing days
  6332. // set what day is "today" send NULL to revert back to real date
  6333. MCM_SETTODAY = (MCM_FIRST + 12);
  6334. // Macro 264
  6335. // #define MonthCal_SetToday(hmc, pst) SNDMSG(hmc, MCM_SETTODAY, 0, (LPARAM)(pst))
  6336. // get what day is "today"
  6337. // returns BOOL for success/failure
  6338. function MonthCal_SetToday(hwndMC:HWND; lps:LPSYSTEMTIME):Bool;
  6339. CONST
  6340. MCM_GETTODAY = (MCM_FIRST + 13);
  6341. // Macro 265
  6342. // #define MonthCal_GetToday(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETTODAY, 0, (LPARAM)(pst))
  6343. // determine what pinfo->pt is over
  6344. function MonthCal_GetToday(hwndMC:HWND; lps:LPSYSTEMTIME):Bool;
  6345. CONST
  6346. MCM_HITTEST = (MCM_FIRST + 14);
  6347. TYPE
  6348. DummyStruct16 = Record
  6349. cbSize : UINT;
  6350. pt : POINT;
  6351. uHit : UINT; // out param
  6352. st : SYSTEMTIME;
  6353. {$ifdef NTDDI_VISTA}
  6354. rc : RECT;
  6355. iOffset : cint;
  6356. iRow : cint;
  6357. iCol : cint;
  6358. {$endif}
  6359. END;
  6360. MCHITTESTINFO = DummyStruct16;
  6361. PMCHITTESTINFO = ^DummyStruct16;
  6362. TDummyStruct16 = DummyStruct16;
  6363. PDummyStruct16 = ^DummyStruct16;
  6364. // Macro 266
  6365. FUNCTION MonthCal_HitTest( hmc :HWND ; pinfo : PMCHITTESTINFO):DWORD;
  6366. CONST
  6367. MCHT_TITLE = $00010000;
  6368. MCHT_CALENDAR = $00020000;
  6369. MCHT_TODAYLINK = $00030000;
  6370. MCHT_NEXT = $01000000; // these indicate that hitting
  6371. MCHT_PREV = $02000000; // here will go to the next/prev month
  6372. MCHT_NOWHERE = $00000000;
  6373. MCHT_TITLEBK = (MCHT_TITLE);
  6374. MCHT_TITLEMONTH = (MCHT_TITLE OR $0001);
  6375. MCHT_TITLEYEAR = (MCHT_TITLE OR $0002);
  6376. MCHT_TITLEBTNNEXT = (MCHT_TITLE OR MCHT_NEXT OR $0003);
  6377. MCHT_TITLEBTNPREV = (MCHT_TITLE OR MCHT_PREV OR $0003);
  6378. MCHT_CALENDARBK = (MCHT_CALENDAR);
  6379. MCHT_CALENDARDATE = (MCHT_CALENDAR OR $0001);
  6380. MCHT_CALENDARDATENEXT = (MCHT_CALENDARDATE OR MCHT_NEXT);
  6381. MCHT_CALENDARDATEPREV = (MCHT_CALENDARDATE OR MCHT_PREV);
  6382. MCHT_CALENDARDAY = (MCHT_CALENDAR OR $0002);
  6383. MCHT_CALENDARWEEKNUM = (MCHT_CALENDAR OR $0003);
  6384. // set first day of week to iDay:
  6385. // 0 for Monday, 1 for Tuesday, ..., 6 for Sunday
  6386. // -1 for means use locale info
  6387. MCM_SETFIRSTDAYOFWEEK = (MCM_FIRST + 15);
  6388. // Macro 267
  6389. function MonthCal_SetFirstDayOfWeek( hmc : HWND ; iDay :LONGINT ):DWORD;
  6390. // DWORD result... low word has the day. high word is bool if this is app set
  6391. // or not (FALSE == using locale info)
  6392. CONST
  6393. MCM_GETFIRSTDAYOFWEEK = (MCM_FIRST + 16);
  6394. // Macro 268
  6395. Function MonthCal_GetFirstDayOfWeek( hmc : HWND ):DWORD;
  6396. // DWORD MonthCal_GetRange(HWND hmc, LPSYSTEMTIME rgst)
  6397. // modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
  6398. // modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
  6399. // returns GDTR_MIN|GDTR_MAX if there is a minimum|maximum limit
  6400. CONST
  6401. MCM_GETRANGE = (MCM_FIRST + 17);
  6402. // Macro 269
  6403. Function MonthCal_GetRange( hmc : HWND ; rgst : LPSYSTEMTIME):DWORD;
  6404. // BOOL MonthCal_SetRange(HWND hmc, DWORD gdtr, LPSYSTEMTIME rgst)
  6405. // if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
  6406. // if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
  6407. // returns TRUE on success, FALSE on error (such as invalid parameters)
  6408. CONST
  6409. MCM_SETRANGE = (MCM_FIRST + 18);
  6410. // Macro 270
  6411. Function MonthCal_SetRange( hmc : HWND ; gd : DWORD; rgst : LPSYSTEMTIME):BOOL;
  6412. // int MonthCal_GetMonthDelta(HWND hmc)
  6413. // returns the number of months one click on a next/prev button moves by
  6414. CONST
  6415. MCM_GETMONTHDELTA = (MCM_FIRST + 19);
  6416. // Macro 271
  6417. Function MonthCal_GetMonthDelta( hmc :hwnd ):cint;
  6418. // int MonthCal_SetMonthDelta(HWND hmc, int n)
  6419. // sets the month delta to n. n==0 reverts to moving by a page of months
  6420. // returns the previous value of n.
  6421. CONST
  6422. MCM_SETMONTHDELTA = (MCM_FIRST + 20);
  6423. // Macro 272
  6424. Function MonthCal_SetMonthDelta( hmc :hwnd ; n :cint ):cint;
  6425. // DWORD MonthCal_GetMaxTodayWidth(HWND hmc, LPSIZE psz)
  6426. // sets *psz to the maximum width/height of the "Today" string displayed
  6427. // at the bottom of the calendar (as long as MCS_NOTODAY is not specified)
  6428. CONST
  6429. MCM_GETMAXTODAYWIDTH = (MCM_FIRST + 21);
  6430. // Macro 273
  6431. Function MonthCal_GetMaxTodayWidth( hmc :hwnd ):DWORD;
  6432. {$ifdef ie4plus}
  6433. CONST
  6434. MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT;
  6435. // Macro 274
  6436. Function MonthCal_SetUnicodeFormat( hwnd : hwnd; fUnicode : bool):BOOL;
  6437. CONST
  6438. MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT;
  6439. // Macro 275
  6440. Function MonthCal_GetUnicodeFormat( hwnd : hwnd):BOOL;
  6441. {$ifdef NTDDI_VISTA}
  6442. Const
  6443. // View
  6444. MCMV_MONTH = 0;
  6445. MCMV_YEAR = 1;
  6446. MCMV_DECADE = 2;
  6447. MCMV_CENTURY = 3;
  6448. MCMV_MAX = MCMV_CENTURY;
  6449. MCM_GETCURRENTVIEW = (MCM_FIRST + 22);
  6450. MCM_GETCALENDARCOUNT = (MCM_FIRST + 23);
  6451. MCM_GETCALENDARGRIDINFO = (MCM_FIRST + 24);
  6452. MCM_GETCALID = (MCM_FIRST + 27);
  6453. MCM_SETCALID = (MCM_FIRST + 28);
  6454. // Returns the min rect that will fit the max number of calendars for the passed in rect.
  6455. MCM_SIZERECTTOMIN = (MCM_FIRST + 29);
  6456. MCM_SETCALENDARBORDER = (MCM_FIRST + 30);
  6457. MCM_GETCALENDARBORDER = (MCM_FIRST + 31);
  6458. MCM_SETCURRENTVIEW = (MCM_FIRST + 32);
  6459. // Part
  6460. MCGIP_CALENDARCONTROL = 0;
  6461. MCGIP_NEXT = 1;
  6462. MCGIP_PREV = 2;
  6463. MCGIP_FOOTER = 3;
  6464. MCGIP_CALENDAR = 4;
  6465. MCGIP_CALENDARHEADER = 5;
  6466. MCGIP_CALENDARBODY = 6;
  6467. MCGIP_CALENDARROW = 7;
  6468. MCGIP_CALENDARCELL = 8;
  6469. MCGIF_DATE = $00000001;
  6470. MCGIF_RECT = $00000002;
  6471. MCGIF_NAME = $00000004;
  6472. // Note: iRow of -1 refers to the row header and iCol of -1 refers to the col header.
  6473. Type
  6474. tagMCGRIDINFO = record
  6475. cbSize : UINT;
  6476. dwPart : DWORD;
  6477. dwFlags : DWORD;
  6478. iCalendar : longint;
  6479. iRow : longint;
  6480. iCol : longint;
  6481. bSelected : BOOL;
  6482. stStart : SYSTEMTIME;
  6483. stEnd : SYSTEMTIME;
  6484. rc : RECT;
  6485. pszName : LPWSTR;
  6486. cchName : size_t;
  6487. end;
  6488. MCGRIDINFO = tagMCGRIDINFO;
  6489. TPMCGRIDINFO = MCGRIDINFO;
  6490. PMCGRIDINFO = ^MCGRIDINFO;
  6491. LPMCGRIDINFO = PMCGRIDINFO;
  6492. function MonthCal_GetCurrentView(hmc:HWND):DWORD;
  6493. // (DWORD)SNDMSG(hmc, MCM_GETCURRENTVIEW, 0, 0)
  6494. function MonthCal_GetCalendarCount(hmc:HWND):DWORD;
  6495. // (DWORD)SNDMSG(hmc, MCM_GETCALENDARCOUNT, 0, 0)
  6496. function MonthCal_GetCalendarGridInfo(hmc:HWND; pmc:pMCGRIDINFO):BOOL;
  6497. // (BOOL)SNDMSG(hmc, MCM_GETCALENDARGRIDINFO, 0, (LPARAM)(PMCGRIDINFO)(pmcGridInfo))
  6498. function MonthCal_GetCALID(hmc:HWND):CALID;
  6499. // (CALID)SNDMSG(hmc, MCM_GETCALID, 0, 0)
  6500. function MonthCal_SetCALID(hmc:HWND; calid:cuint):LRESULT;
  6501. // SNDMSG(hmc, MCM_SETCALID, (WPARAM)(calid), 0)
  6502. function MonthCal_SizeRectToMin(hmc:HWND; prc:prect):LRESULT;
  6503. // SNDMSG(hmc, MCM_SIZERECTTOMIN, 0, (LPARAM)(prc))
  6504. function MonthCal_SetCalendarBorder(hmc:HWND; fset:bool; xyborder:cint):LRESULT;
  6505. // SNDMSG(hmc, MCM_SETCALENDARBORDER, (WPARAM)(fset), (LPARAM)(xyborder))
  6506. function MonthCal_GetCalendarBorder(hmc:HWND):cint;
  6507. // (int)SNDMSG(hmc, MCM_GETCALENDARBORDER, 0, 0)
  6508. function MonthCal_SetCurrentView(hmc:HWND; dwNewView:DWord):BOOL;
  6509. // (BOOL)SNDMSG(hmc, MCM_SETCURRENTVIEW, 0, (LPARAM)(dwNewView))
  6510. {$endif}
  6511. {$ENDIF}
  6512. // MCN_SELCHANGE is sent whenever the currently displayed date changes
  6513. // via month change, year change, keyboard navigation, prev/next button
  6514. //
  6515. TYPE
  6516. tagNMSELCHANGE = Record
  6517. nmhdr : NMHDR; // this must be first, so we don't break WM_NOTIFY
  6518. stSelStart : SYSTEMTIME;
  6519. stSelEnd : SYSTEMTIME;
  6520. END;
  6521. NMSELCHANGE = tagNMSELCHANGE;
  6522. LPNMSELCHANGE = ^tagNMSELCHANGE;
  6523. TNMSELCHANGE = tagNMSELCHANGE;
  6524. PNMSELCHANGE = ^tagNMSELCHANGE;
  6525. CONST
  6526. MCN_SELCHANGE = (MCN_FIRST + 1);
  6527. // MCN_GETDAYSTATE is sent for MCS_DAYSTATE controls whenever new daystate
  6528. // information is needed (month or year scroll) to draw bolding information.
  6529. // The app must fill in cDayState months worth of information starting from
  6530. // stStart date. The app may fill in the array at prgDayState or change
  6531. // prgDayState to point to a different array out of which the information
  6532. // will be copied. (similar to tooltips)
  6533. //
  6534. TYPE
  6535. tagNMDAYSTATE = Record
  6536. nmhdr : NMHDR; // this must be first, so we don't break WM_NOTIFY
  6537. stStart : SYSTEMTIME;
  6538. cDayState : cint;
  6539. prgDayState : LPMONTHDAYSTATE; // points to cDayState MONTHDAYSTATEs
  6540. END;
  6541. NMDAYSTATE = tagNMDAYSTATE;
  6542. LPNMDAYSTATE = ^tagNMDAYSTATE;
  6543. TNMDAYSTATE = tagNMDAYSTATE;
  6544. PNMDAYSTATE = ^tagNMDAYSTATE;
  6545. CONST
  6546. MCN_GETDAYSTATE = (MCN_FIRST + 3);
  6547. // MCN_SELECT is sent whenever a selection has occurred (via mouse or keyboard)
  6548. //
  6549. TYPE
  6550. NMSELECT = NMSELCHANGE;
  6551. LPNMSELECT = ^NMSELCHANGE;
  6552. CONST
  6553. MCN_SELECT = (MCN_FIRST + 4);
  6554. // begin_r_commctrl
  6555. MCS_DAYSTATE = $0001;
  6556. MCS_MULTISELECT = $0002;
  6557. MCS_WEEKNUMBERS = $0004;
  6558. {$ifdef ie4plus}
  6559. MCS_NOTODAYCIRCLE = $0008;
  6560. MCS_NOTODAY = $0010;
  6561. {$ELSE}
  6562. MCS_NOTODAY = $0008;
  6563. {$ENDIF}
  6564. {$ifdef NTDDI_Vista}
  6565. MCS_NOTRAILINGDATES = $0040;
  6566. MCS_SHORTDAYSOFWEEK = $0080;
  6567. MCS_NOSELCHANGEONNAV = $0100;
  6568. {$endif}
  6569. GMR_VISIBLE = 0; // visible portion of display
  6570. GMR_DAYSTATE = 1; // above plus the grayed out parts of
  6571. // partially displayed months
  6572. {$ENDIF} // _WIN32
  6573. {$ENDIF} // NOMONTHCAL
  6574. //====== DATETIMEPICK CONTROL ==================================================
  6575. {$IFNDEF NODATETIMEPICK}
  6576. {$IFDEF _WIN32}
  6577. DATETIMEPICK_CLASSW = {L}'SysDateTimePick32'#$0000;
  6578. DATETIMEPICK_CLASSA = 'SysDateTimePick32';
  6579. {$IFDEF UNICODE}
  6580. DATETIMEPICK_CLASS = DATETIMEPICK_CLASSW;
  6581. {$ELSE}
  6582. DATETIMEPICK_CLASS = DATETIMEPICK_CLASSA;
  6583. {$ENDIF}
  6584. {$ifdef NTDDI_VISTA}
  6585. Type
  6586. tagDATETIMEPICKERINFO = packed record
  6587. cbSize : DWORD;
  6588. rcCheck : RECT;
  6589. stateCheck : DWORD;
  6590. rcButton : RECT;
  6591. stateButton : DWORD;
  6592. hwndEdit : HWND;
  6593. hwndUD : HWND;
  6594. hwndDropDown : HWND;
  6595. end;
  6596. DATETIMEPICKERINFO = tagDATETIMEPICKERINFO;
  6597. PDATETIMEPICKERINFO = ^DATETIMEPICKERINFO;
  6598. LPDATETIMEPICKERINFO = PDATETIMEPICKERINFO;
  6599. TDATETIMEPICKERINFO = DATETIMEPICKERINFO;
  6600. {$endif}
  6601. CONST
  6602. DTM_FIRST = $1000;
  6603. // DWORD DateTimePick_GetSystemtime(HWND hdp, LPSYSTEMTIME pst)
  6604. // returns GDT_NONE if "none" is selected (DTS_SHOWNONE only)
  6605. // returns GDT_VALID and modifies *pst to be the currently selected value
  6606. DTM_GETSYSTEMTIME = (DTM_FIRST + 1);
  6607. // Macro 276
  6608. // #define DateTime_GetSystemtime(hdp, pst) (DWORD)SNDMSG(hdp, DTM_GETSYSTEMTIME, 0, (LPARAM)(pst))
  6609. // BOOL DateTime_SetSystemtime(HWND hdp, DWORD gd, LPSYSTEMTIME pst)
  6610. // if gd==GDT_NONE, sets datetimepick to None (DTS_SHOWNONE only)
  6611. // if gd==GDT_VALID, sets datetimepick to *pst
  6612. // returns TRUE on success, FALSE on error (such as bad params)
  6613. CONST
  6614. DTM_SETSYSTEMTIME = (DTM_FIRST + 2);
  6615. // Macro 277
  6616. // #define DateTime_SetSystemtime(hdp, gd, pst) (BOOL)SNDMSG(hdp, DTM_SETSYSTEMTIME, (WPARAM)(gd), (LPARAM)(pst))
  6617. function DateTime_SetSystemTime(hdp: HWND; gd: DWORD; const pst: TSystemTime): BOOL;inline;
  6618. // DWORD DateTime_GetRange(HWND hdp, LPSYSTEMTIME rgst)
  6619. // modifies rgst[0] to be the minimum ALLOWABLE systemtime (or 0 if no minimum)
  6620. // modifies rgst[1] to be the maximum ALLOWABLE systemtime (or 0 if no maximum)
  6621. // returns GDTR_MIN|GDTR_MAX if there is a minimum|maximum limit
  6622. CONST
  6623. DTM_GETRANGE = (DTM_FIRST + 3);
  6624. // Macro 278
  6625. // #define DateTime_GetRange(hdp, rgst) (DWORD)SNDMSG(hdp, DTM_GETRANGE, 0, (LPARAM)(rgst))
  6626. // BOOL DateTime_SetRange(HWND hdp, DWORD gdtr, LPSYSTEMTIME rgst)
  6627. // if GDTR_MIN, sets the minimum ALLOWABLE systemtime to rgst[0], otherwise removes minimum
  6628. // if GDTR_MAX, sets the maximum ALLOWABLE systemtime to rgst[1], otherwise removes maximum
  6629. // returns TRUE on success, FALSE on error (such as invalid parameters)
  6630. CONST
  6631. DTM_SETRANGE = (DTM_FIRST + 4);
  6632. // Macro 279
  6633. // #define DateTime_SetRange(hdp, gd, rgst) (BOOL)SNDMSG(hdp, DTM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
  6634. function DateTime_SetRange(hdp: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;inline;
  6635. // BOOL DateTime_SetFormat(HWND hdp, LPCTSTR sz)
  6636. // sets the display formatting string to sz (see GetDateFormat and GetTimeFormat for valid formatting chars)
  6637. // NOTE: 'X' is a valid formatting character which indicates that the application
  6638. // will determine how to display information. Such apps must support DTN_WMKEYDOWN,
  6639. // DTN_FORMAT, and DTN_FORMATQUERY.
  6640. CONST
  6641. DTM_SETFORMATA = (DTM_FIRST + 5);
  6642. DTM_SETFORMATW = (DTM_FIRST + 50);
  6643. {$IFDEF UNICODE}
  6644. DTM_SETFORMAT = DTM_SETFORMATW;
  6645. {$ELSE}
  6646. DTM_SETFORMAT = DTM_SETFORMATA;
  6647. {$ENDIF}
  6648. // Macro 280
  6649. // #define DateTime_SetFormat(hdp, sz) (BOOL)SNDMSG(hdp, DTM_SETFORMAT, 0, (LPARAM)(sz))
  6650. CONST
  6651. DTM_SETMCCOLOR = (DTM_FIRST + 6);
  6652. // Macro 281
  6653. // #define DateTime_SetMonthCalColor(hdp, iColor, clr) SNDMSG(hdp, DTM_SETMCCOLOR, iColor, clr)
  6654. function DateTime_SetMonthCalColor(hdp: HWND; iColor: DWORD; clr: TColorRef): TColorRef;inline;
  6655. CONST
  6656. DTM_GETMCCOLOR = (DTM_FIRST + 7);
  6657. // Macro 282
  6658. // #define DateTime_GetMonthCalColor(hdp, iColor) SNDMSG(hdp, DTM_GETMCCOLOR, iColor, 0)
  6659. // HWND DateTime_GetMonthCal(HWND hdp)
  6660. // returns the HWND of the MonthCal popup window. Only valid
  6661. // between DTN_DROPDOWN and DTN_CLOSEUP notifications.
  6662. CONST
  6663. DTM_GETMONTHCAL = (DTM_FIRST + 8);
  6664. // Macro 283
  6665. // #define DateTime_GetMonthCal(hdp) (HWND)SNDMSG(hdp, DTM_GETMONTHCAL, 0, 0)
  6666. function DateTime_GetMonthCal(hdp: HWND): HWND;inline;
  6667. {$ifdef ie4plus}
  6668. CONST
  6669. DTM_SETMCFONT = (DTM_FIRST + 9);
  6670. // Macro 284
  6671. procedure DateTime_SetMonthCalFont(hdp:HWND; hfont:HFONT; fRedraw:LPARAM);
  6672. // SNDMSG(hdp, DTM_SETMCFONT, (WPARAM)(hfont), (LPARAM)(fRedraw))
  6673. CONST
  6674. DTM_GETMCFONT = (DTM_FIRST + 10);
  6675. // Macro 285
  6676. function DateTime_GetMonthCalFont(hdp:HWND):HFONT;
  6677. // SNDMSG(hdp, DTM_GETMCFONT, 0, 0)
  6678. {$ifdef NTDDI_VISTA}
  6679. Const
  6680. DTM_SETMCSTYLE = (DTM_FIRST + 11);
  6681. DTM_GETMCSTYLE = (DTM_FIRST + 12);
  6682. DTM_CLOSEMONTHCAL = (DTM_FIRST + 13);
  6683. DTM_GETDATETIMEPICKERINFO = (DTM_FIRST + 14);
  6684. DTM_GETIDEALSIZE = (DTM_FIRST + 15);
  6685. function DateTime_SetMonthCalStyle(hdp:HWND; dwStyle:DWord):LResult;
  6686. // SNDMSG(hdp, DTM_SETMCSTYLE, 0, (LPARAM)dwStyle)
  6687. function DateTime_GetMonthCalStyle(hdp:HWND):LRESULT;
  6688. // SNDMSG(hdp, DTM_GETMCSTYLE, 0, 0)
  6689. function DateTime_CloseMonthCal(hdp:HWND):LRESULT;
  6690. // SNDMSG(hdp, DTM_CLOSEMONTHCAL, 0, 0)
  6691. // DateTime_GetDateTimePickerInfo(HWND hdp, DATETIMEPICKERINFO* pdtpi)
  6692. // Retrieves information about the selected date time picker.
  6693. function DateTime_GetDateTimePickerInfo(hdp:HWND; pdtpi:PDATETIMEPICKERINFO):LRESULT;
  6694. // SNDMSG(hdp, DTM_GETDATETIMEPICKERINFO, 0, (LPARAM)(pdtpi))
  6695. function DateTime_GetIdealSize(hdp:HWND; ps:PSIZE): LResult;
  6696. // (BOOL)SNDMSG((hdp), DTM_GETIDEALSIZE, 0, (LPARAM)(psize))
  6697. {$endif}
  6698. {$ENDIF} // _WIN32_IE >= 0x0400
  6699. // begin_r_commctrl
  6700. CONST
  6701. DTS_UPDOWN = $0001; // use UPDOWN instead of MONTHCAL
  6702. DTS_SHOWNONE = $0002; // allow a NONE selection
  6703. DTS_SHORTDATEFORMAT = $0000; // use the short date format (app must forward WM_WININICHANGE messages)
  6704. DTS_LONGDATEFORMAT = $0004; // use the long date format (app must forward WM_WININICHANGE messages)
  6705. {$ifdef ie5plus}
  6706. DTS_SHORTDATECENTURYFORMAT = $000C; // short date format with century (app must forward WM_WININICHANGE messages)
  6707. {$ENDIF} // (_WIN32_IE >= 0x500)
  6708. DTS_TIMEFORMAT = $0009; // use the time format (app must forward WM_WININICHANGE messages)
  6709. DTS_APPCANPARSE = $0010; // allow user entered strings (app MUST respond to DTN_USERSTRING)
  6710. DTS_RIGHTALIGN = $0020; // right-align popup instead of left-align it
  6711. // end_r_commctrl
  6712. DTN_DATETIMECHANGE = (DTN_FIRST + 1); // the systemtime has changed
  6713. TYPE
  6714. tagNMDATETIMECHANGE = Record
  6715. nmhdr : NMHDR;
  6716. dwFlags : DWORD; // GDT_VALID or GDT_NONE
  6717. st : SYSTEMTIME; // valid iff dwFlags==GDT_VALID
  6718. END;
  6719. NMDATETIMECHANGE = tagNMDATETIMECHANGE;
  6720. LPNMDATETIMECHANGE = ^tagNMDATETIMECHANGE;
  6721. TNMDATETIMECHANGE = tagNMDATETIMECHANGE;
  6722. PNMDATETIMECHANGE = ^tagNMDATETIMECHANGE;
  6723. CONST
  6724. DTN_USERSTRINGA = (DTN_FIRST + 2); // the user has entered a string
  6725. DTN_USERSTRINGW = (DTN_FIRST + 15);
  6726. TYPE
  6727. tagNMDATETIMESTRINGA = Record
  6728. nmhdr : NMHDR;
  6729. pszUserString : LPCSTR; // string user entered
  6730. st : SYSTEMTIME; // app fills this in
  6731. dwFlags : DWORD; // GDT_VALID or GDT_NONE
  6732. END;
  6733. NMDATETIMESTRINGA = tagNMDATETIMESTRINGA;
  6734. LPNMDATETIMESTRINGA = ^tagNMDATETIMESTRINGA;
  6735. TNMDATETIMESTRINGA = tagNMDATETIMESTRINGA;
  6736. PNMDATETIMESTRINGA = ^tagNMDATETIMESTRINGA;
  6737. tagNMDATETIMESTRINGW = Record
  6738. nmhdr : NMHDR;
  6739. pszUserString : LPCWSTR; // string user entered
  6740. st : SYSTEMTIME; // app fills this in
  6741. dwFlags : DWORD; // GDT_VALID or GDT_NONE
  6742. END;
  6743. NMDATETIMESTRINGW = tagNMDATETIMESTRINGW;
  6744. LPNMDATETIMESTRINGW = ^tagNMDATETIMESTRINGW;
  6745. TNMDATETIMESTRINGW = tagNMDATETIMESTRINGW;
  6746. PNMDATETIMESTRINGW = ^tagNMDATETIMESTRINGW;
  6747. {$IFDEF UNICODE}
  6748. CONST
  6749. DTN_USERSTRING = DTN_USERSTRINGW;
  6750. TYPE
  6751. NMDATETIMESTRING = NMDATETIMESTRINGW;
  6752. LPNMDATETIMESTRING = LPNMDATETIMESTRINGW;
  6753. {$ELSE}
  6754. CONST
  6755. DTN_USERSTRING = DTN_USERSTRINGA;
  6756. TYPE
  6757. NMDATETIMESTRING = NMDATETIMESTRINGA;
  6758. LPNMDATETIMESTRING = LPNMDATETIMESTRINGA;
  6759. {$ENDIF}
  6760. TNMDateTimeString = NMDATETIMESTRING;
  6761. PNMDateTimeString = LPNMDATETIMESTRING;
  6762. CONST
  6763. DTN_WMKEYDOWNA = (DTN_FIRST + 3); // modify keydown on app format field (X)
  6764. DTN_WMKEYDOWNW = (DTN_FIRST + 16);
  6765. TYPE
  6766. tagNMDATETIMEWMKEYDOWNA = Record
  6767. nmhdr : NMHDR;
  6768. nVirtKey : cint; // virtual key code of WM_KEYDOWN which MODIFIES an X field
  6769. pszFormat : LPCSTR; // format substring
  6770. st : SYSTEMTIME; // current systemtime, app should modify based on key
  6771. END;
  6772. NMDATETIMEWMKEYDOWNA = tagNMDATETIMEWMKEYDOWNA;
  6773. LPNMDATETIMEWMKEYDOWNA = ^tagNMDATETIMEWMKEYDOWNA;
  6774. TNMDATETIMEWMKEYDOWNA = tagNMDATETIMEWMKEYDOWNA;
  6775. PNMDATETIMEWMKEYDOWNA = ^tagNMDATETIMEWMKEYDOWNA;
  6776. tagNMDATETIMEWMKEYDOWNW = Record
  6777. nmhdr : NMHDR;
  6778. nVirtKey : cint; // virtual key code of WM_KEYDOWN which MODIFIES an X field
  6779. pszFormat : LPCWSTR; // format substring
  6780. st : SYSTEMTIME; // current systemtime, app should modify based on key
  6781. END;
  6782. NMDATETIMEWMKEYDOWNW = tagNMDATETIMEWMKEYDOWNW;
  6783. LPNMDATETIMEWMKEYDOWNW = ^tagNMDATETIMEWMKEYDOWNW;
  6784. TNMDATETIMEWMKEYDOWNW = tagNMDATETIMEWMKEYDOWNW;
  6785. PNMDATETIMEWMKEYDOWNW = ^tagNMDATETIMEWMKEYDOWNW;
  6786. {$IFDEF UNICODE}
  6787. CONST
  6788. DTN_WMKEYDOWN = DTN_WMKEYDOWNW;
  6789. TYPE
  6790. NMDATETIMEWMKEYDOWN = NMDATETIMEWMKEYDOWNW;
  6791. LPNMDATETIMEWMKEYDOWN= LPNMDATETIMEWMKEYDOWNW;
  6792. {$ELSE}
  6793. CONST
  6794. DTN_WMKEYDOWN = DTN_WMKEYDOWNA;
  6795. TYPE
  6796. NMDATETIMEWMKEYDOWN = NMDATETIMEWMKEYDOWNA;
  6797. LPNMDATETIMEWMKEYDOWN= LPNMDATETIMEWMKEYDOWNA;
  6798. {$ENDIF}
  6799. CONST
  6800. DTN_FORMATA = (DTN_FIRST + 4); // query display for app format field (X)
  6801. DTN_FORMATW = (DTN_FIRST + 17);
  6802. TYPE
  6803. tagNMDATETIMEFORMATA = Record
  6804. nmhdr : NMHDR;
  6805. pszFormat : LPCSTR; // format substring
  6806. st : SYSTEMTIME; // current systemtime
  6807. pszDisplay : LPCSTR; // string to display
  6808. szDisplay : Array [0..63] OF CHAR; // buffer pszDisplay originally points at
  6809. END;
  6810. NMDATETIMEFORMATA = tagNMDATETIMEFORMATA;
  6811. LPNMDATETIMEFORMATA = ^tagNMDATETIMEFORMATA;
  6812. TNMDATETIMEFORMATA = tagNMDATETIMEFORMATA;
  6813. PNMDATETIMEFORMATA = ^tagNMDATETIMEFORMATA;
  6814. tagNMDATETIMEFORMATW = Record
  6815. nmhdr : NMHDR;
  6816. pszFormat : LPCWSTR; // format substring
  6817. st : SYSTEMTIME; // current systemtime
  6818. pszDisplay : LPCWSTR; // string to display
  6819. szDisplay : Array [0..63] OF WCHAR; // buffer pszDisplay originally points at
  6820. END;
  6821. NMDATETIMEFORMATW = tagNMDATETIMEFORMATW;
  6822. LPNMDATETIMEFORMATW = ^tagNMDATETIMEFORMATW;
  6823. TNMDATETIMEFORMATW = tagNMDATETIMEFORMATW;
  6824. PNMDATETIMEFORMATW = ^tagNMDATETIMEFORMATW;
  6825. {$IFDEF UNICODE}
  6826. CONST
  6827. DTN_FORMAT = DTN_FORMATW;
  6828. TYPE
  6829. NMDATETIMEFORMAT = NMDATETIMEFORMATW;
  6830. LPNMDATETIMEFORMAT = LPNMDATETIMEFORMATW;
  6831. {$ELSE}
  6832. CONST
  6833. DTN_FORMAT = DTN_FORMATA;
  6834. TYPE
  6835. NMDATETIMEFORMAT = NMDATETIMEFORMATA;
  6836. LPNMDATETIMEFORMAT = LPNMDATETIMEFORMATA;
  6837. {$ENDIF}
  6838. CONST
  6839. DTN_FORMATQUERYA = (DTN_FIRST + 5); // query formatting info for app format field (X)
  6840. DTN_FORMATQUERYW = (DTN_FIRST + 18);
  6841. TYPE
  6842. tagNMDATETIMEFORMATQUERYA = Record
  6843. nmhdr : NMHDR;
  6844. pszFormat : LPCSTR; // format substring
  6845. szMax : SIZE; // max bounding rectangle app will use for this format string
  6846. END;
  6847. NMDATETIMEFORMATQUERYA = tagNMDATETIMEFORMATQUERYA;
  6848. LPNMDATETIMEFORMATQUERYA = ^tagNMDATETIMEFORMATQUERYA;
  6849. TNMDATETIMEFORMATQUERYA = tagNMDATETIMEFORMATQUERYA;
  6850. PNMDATETIMEFORMATQUERYA = ^tagNMDATETIMEFORMATQUERYA;
  6851. tagNMDATETIMEFORMATQUERYW = Record
  6852. nmhdr : NMHDR;
  6853. pszFormat : LPCWSTR; // format substring
  6854. szMax : SIZE; // max bounding rectangle app will use for this format string
  6855. END;
  6856. NMDATETIMEFORMATQUERYW = tagNMDATETIMEFORMATQUERYW;
  6857. LPNMDATETIMEFORMATQUERYW = ^tagNMDATETIMEFORMATQUERYW;
  6858. TNMDATETIMEFORMATQUERYW = tagNMDATETIMEFORMATQUERYW;
  6859. PNMDATETIMEFORMATQUERYW = ^tagNMDATETIMEFORMATQUERYW;
  6860. {$IFDEF UNICODE}
  6861. CONST
  6862. DTN_FORMATQUERY = DTN_FORMATQUERYW;
  6863. TYPE
  6864. NMDATETIMEFORMATQUERY= NMDATETIMEFORMATQUERYW;
  6865. LPNMDATETIMEFORMATQUERY= LPNMDATETIMEFORMATQUERYW;
  6866. {$ELSE}
  6867. CONST
  6868. DTN_FORMATQUERY = DTN_FORMATQUERYA;
  6869. TYPE
  6870. NMDATETIMEFORMATQUERY= NMDATETIMEFORMATQUERYA;
  6871. LPNMDATETIMEFORMATQUERY= LPNMDATETIMEFORMATQUERYA;
  6872. {$ENDIF}
  6873. CONST
  6874. DTN_DROPDOWN = (DTN_FIRST + 6); // MonthCal has dropped down
  6875. DTN_CLOSEUP = (DTN_FIRST + 7); // MonthCal is popping up
  6876. GDTR_MIN = $0001;
  6877. GDTR_MAX = $0002;
  6878. GDT_ERROR = -1;
  6879. GDT_VALID = 0;
  6880. GDT_NONE = 1;
  6881. {$ENDIF} // _WIN32
  6882. {$ENDIF} // NODATETIMEPICK
  6883. {$ifdef ie4plus}
  6884. {$IFNDEF NOIPADDRESS}
  6885. ///////////////////////////////////////////////
  6886. /// IP Address edit control
  6887. // Messages sent to IPAddress controls
  6888. IPM_CLEARADDRESS = (WM_USER+100); // no parameters
  6889. IPM_SETADDRESS = (WM_USER+101); // lparam = TCP/IP address
  6890. IPM_GETADDRESS = (WM_USER+102); // lresult = # of non black fields. lparam = LPDWORD for TCP/IP address
  6891. IPM_SETRANGE = (WM_USER+103); // wparam = field, lparam = range
  6892. IPM_SETFOCUS = (WM_USER+104); // wparam = field
  6893. IPM_ISBLANK = (WM_USER+105); // no parameters
  6894. WC_IPADDRESSW = {L}'SysIPAddress32'#$0000;
  6895. WC_IPADDRESSA = 'SysIPAddress32';
  6896. {$IFDEF UNICODE}
  6897. WC_IPADDRESS = WC_IPADDRESSW;
  6898. {$ELSE}
  6899. WC_IPADDRESS = WC_IPADDRESSA;
  6900. {$ENDIF}
  6901. CONST
  6902. IPN_FIELDCHANGED = (IPN_FIRST - 0);
  6903. TYPE
  6904. tagNMIPADDRESS = Record
  6905. hdr : NMHDR;
  6906. iField : cint;
  6907. iValue : cint;
  6908. END;
  6909. NMIPADDRESS = tagNMIPADDRESS;
  6910. LPNMIPADDRESS = ^tagNMIPADDRESS;
  6911. TNMIPADDRESS = tagNMIPADDRESS;
  6912. PNMIPADDRESS = ^tagNMIPADDRESS;
  6913. // The following is a useful macro for passing the range values in the
  6914. // IPM_SETRANGE message.
  6915. // Macro 286
  6916. // #define MAKEIPRANGE(low, high) ((LPARAM)(WORD)(((BYTE)(high) << 8) + (BYTE)(low)))
  6917. // And this is a useful macro for making the IP Address to be passed
  6918. // as a LPARAM.
  6919. // Macro 287
  6920. // #define MAKEIPADDRESS(b1,b2,b3,b4) ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<<16)+((DWORD)(b3)<<8)+((DWORD)(b4))))
  6921. // Get individual number
  6922. // Macro 288
  6923. // #define FIRST_IPADDRESS(x) ((x>>24) & 0xff)
  6924. // Macro 289
  6925. // #define SECOND_IPADDRESS(x) ((x>>16) & 0xff)
  6926. // Macro 290
  6927. // #define THIRD_IPADDRESS(x) ((x>>8) & 0xff)
  6928. // Macro 291
  6929. // #define FOURTH_IPADDRESS(x) (x & 0xff)
  6930. {$ENDIF} // NOIPADDRESS
  6931. //---------------------------------------------------------------------------------------
  6932. //---------------------------------------------------------------------------------------
  6933. /// ====================== Pager Control =============================
  6934. //---------------------------------------------------------------------------------------
  6935. //---------------------------------------------------------------------------------------
  6936. {$IFNDEF NOPAGESCROLLER}
  6937. //Pager Class Name
  6938. CONST
  6939. WC_PAGESCROLLERW = {L}'SysPager'#$0000;
  6940. WC_PAGESCROLLERA = 'SysPager';
  6941. {$IFDEF UNICODE}
  6942. WC_PAGESCROLLER = WC_PAGESCROLLERW;
  6943. {$ELSE}
  6944. WC_PAGESCROLLER = WC_PAGESCROLLERA;
  6945. {$ENDIF}
  6946. //---------------------------------------------------------------------------------------
  6947. // Pager Control Styles
  6948. //---------------------------------------------------------------------------------------
  6949. // begin_r_commctrl
  6950. CONST
  6951. PGS_VERT = $00000000;
  6952. PGS_HORZ = $00000001;
  6953. PGS_AUTOSCROLL = $00000002;
  6954. PGS_DRAGNDROP = $00000004;
  6955. // end_r_commctrl
  6956. //---------------------------------------------------------------------------------------
  6957. // Pager Button State
  6958. //---------------------------------------------------------------------------------------
  6959. //The scroll can be in one of the following control State
  6960. PGF_INVISIBLE = 0; // Scroll button is not visible
  6961. PGF_NORMAL = 1; // Scroll button is in normal state
  6962. PGF_GRAYED = 2; // Scroll button is in grayed state
  6963. PGF_DEPRESSED = 4; // Scroll button is in depressed state
  6964. PGF_HOT = 8; // Scroll button is in hot state
  6965. // The following identifiers specifies the button control
  6966. PGB_TOPORLEFT = 0;
  6967. PGB_BOTTOMORRIGHT = 1;
  6968. //---------------------------------------------------------------------------------------
  6969. // Pager Control Messages
  6970. //---------------------------------------------------------------------------------------
  6971. PGM_SETCHILD = (PGM_FIRST + 1); // lParam == hwnd
  6972. // Macro 292
  6973. Procedure Pager_SetChild( hwnd : hwnd; hwndChild : LPARAM);
  6974. CONST
  6975. PGM_RECALCSIZE = (PGM_FIRST + 2);
  6976. // Macro 293
  6977. Procedure Pager_RecalcSize( hwnd : hwnd);
  6978. CONST
  6979. PGM_FORWARDMOUSE = (PGM_FIRST + 3);
  6980. // Macro 294
  6981. Procedure Pager_ForwardMouse( hwnd : hwnd; bForward : WPARAM);
  6982. CONST
  6983. PGM_SETBKCOLOR = (PGM_FIRST + 4);
  6984. // Macro 295
  6985. Function Pager_SetBkColor( hwnd : hwnd; clr : LPARAM):COLORREF;
  6986. CONST
  6987. PGM_GETBKCOLOR = (PGM_FIRST + 5);
  6988. // Macro 296
  6989. Function Pager_GetBkColor( hwnd : hwnd):COLORREF;
  6990. CONST
  6991. PGM_SETBORDER = (PGM_FIRST + 6);
  6992. // Macro 297
  6993. Function Pager_SetBorder( hwnd : hwnd; iBorder : LPARAM):cint;
  6994. CONST
  6995. PGM_GETBORDER = (PGM_FIRST + 7);
  6996. // Macro 298
  6997. Function Pager_GetBorder( hwnd : hwnd):cint;
  6998. CONST
  6999. PGM_SETPOS = (PGM_FIRST + 8);
  7000. // Macro 299
  7001. Function Pager_SetPos( hwnd : hwnd; iPos : LPARAM):cint;
  7002. CONST
  7003. PGM_GETPOS = (PGM_FIRST + 9);
  7004. // Macro 300
  7005. Function Pager_GetPos( hwnd : hwnd):cint;
  7006. CONST
  7007. PGM_SETBUTTONSIZE = (PGM_FIRST + 10);
  7008. // Macro 301
  7009. Function Pager_SetButtonSize( hwnd : hwnd; iSize : LPARAM):cint;
  7010. CONST
  7011. PGM_GETBUTTONSIZE = (PGM_FIRST + 11);
  7012. // Macro 302
  7013. Function Pager_GetButtonSize( hwnd : hwnd):cint;
  7014. CONST
  7015. PGM_GETBUTTONSTATE = (PGM_FIRST + 12);
  7016. // Macro 303
  7017. Function Pager_GetButtonState( hwnd : hwnd; iButton : LPARAM):DWORD;
  7018. CONST
  7019. PGM_GETDROPTARGET = CCM_GETDROPTARGET;
  7020. // Macro 304
  7021. Procedure Pager_GetDropTarget( hwnd : hwnd; ppdt : LPARAM);
  7022. //---------------------------------------------------------------------------------------
  7023. //Pager Control Notification Messages
  7024. //---------------------------------------------------------------------------------------
  7025. // PGN_SCROLL Notification Message
  7026. CONST
  7027. PGN_SCROLL = (PGN_FIRST-1);
  7028. PGF_SCROLLUP = 1;
  7029. PGF_SCROLLDOWN = 2;
  7030. PGF_SCROLLLEFT = 4;
  7031. PGF_SCROLLRIGHT = 8;
  7032. //Keys down
  7033. PGK_SHIFT = 1;
  7034. PGK_CONTROL = 2;
  7035. PGK_MENU = 4;
  7036. {$IFDEF _WIN32}
  7037. // #include <pshpack1.h>
  7038. {$ENDIF}
  7039. // This structure is sent along with PGN_SCROLL notifications
  7040. TYPE
  7041. DummyStruct17 = Record
  7042. hdr : NMHDR;
  7043. fwKeys : WORD; // Specifies which keys are down when this notification is send
  7044. rcParent : RECT; // Contains Parent Window Rect
  7045. iDir : cint; // Scrolling Direction
  7046. iXpos : cint; // Horizontal scroll position
  7047. iYpos : cint; // Vertical scroll position
  7048. iScroll : cint; // [in/out] Amount to scroll
  7049. END;
  7050. NMPGSCROLL = DummyStruct17;
  7051. LPNMPGSCROLL = ^DummyStruct17;
  7052. TNMPGScroll = NMPGSCROLL;
  7053. PNMPGScroll = LPNMPGSCROLL;
  7054. {$IFDEF _WIN32}
  7055. // #include <poppack.h>
  7056. {$ENDIF}
  7057. // PGN_CALCSIZE Notification Message
  7058. CONST
  7059. PGN_CALCSIZE = (PGN_FIRST-2);
  7060. PGF_CALCWIDTH = 1;
  7061. PGF_CALCHEIGHT = 2;
  7062. TYPE
  7063. DummyStruct18 = Record
  7064. hdr : NMHDR;
  7065. dwFlag : DWORD;
  7066. iWidth : cint;
  7067. iHeight : cint;
  7068. END;
  7069. NMPGCALCSIZE = DummyStruct18;
  7070. LPNMPGCALCSIZE = ^DummyStruct18;
  7071. TNMPGCalcSize = DummyStruct18;
  7072. PNMPGCalcSize = LPNMPGCALCSIZE;
  7073. // PGN_HOTITEMCHANGE Notification Message
  7074. CONST
  7075. PGN_HOTITEMCHANGE = (PGN_FIRST-3);
  7076. {
  7077. The PGN_HOTITEMCHANGE notification uses these notification
  7078. flags defined in TOOLBAR:
  7079. HICF_ENTERING = $00000010; // idOld is invalid
  7080. HICF_LEAVING = $00000020; // idNew is invalid
  7081. }
  7082. // Structure for PGN_HOTITEMCHANGE notification
  7083. //
  7084. TYPE
  7085. tagNMPGHOTITEM = Record
  7086. hdr : NMHDR;
  7087. idOld : cint;
  7088. idNew : cint;
  7089. dwFlags : DWORD; // HICF_*
  7090. END;
  7091. NMPGHOTITEM = tagNMPGHOTITEM;
  7092. LPNMPGHOTITEM = ^tagNMPGHOTITEM;
  7093. TNMPGHOTITEM = tagNMPGHOTITEM;
  7094. PNMPGHOTITEM = ^tagNMPGHOTITEM;
  7095. {$ENDIF} // NOPAGESCROLLER
  7096. ////====================== End Pager Control ==========================================
  7097. //
  7098. // === Native Font Control ===
  7099. //
  7100. {$IFNDEF NONATIVEFONTCTL}
  7101. //NativeFont Class Name
  7102. CONST
  7103. WC_NATIVEFONTCTLW = {L}'NativeFontCtl'#$0000;
  7104. WC_NATIVEFONTCTLA = 'NativeFontCtl';
  7105. {$IFDEF UNICODE}
  7106. WC_NATIVEFONTCTL = WC_NATIVEFONTCTLW;
  7107. {$ELSE}
  7108. WC_NATIVEFONTCTL = WC_NATIVEFONTCTLA;
  7109. {$ENDIF}
  7110. // begin_r_commctrl
  7111. // style definition
  7112. CONST
  7113. NFS_EDIT = $0001;
  7114. NFS_STATIC = $0002;
  7115. NFS_LISTCOMBO = $0004;
  7116. NFS_BUTTON = $0008;
  7117. NFS_ALL = $0010;
  7118. NFS_USEFONTASSOC = $0020;
  7119. // end_r_commctrl
  7120. {$ENDIF} // NONATIVEFONTCTL
  7121. // === End Native Font Control ===
  7122. /// ====================== Button Control =============================
  7123. {$IFNDEF NOBUTTON}
  7124. {$IFDEF _WIN32}
  7125. // Button Class Name
  7126. WC_BUTTONA = 'Button';
  7127. WC_BUTTONW = {L}'Button'#$0000;
  7128. CONST
  7129. {$IFDEF UNICODE}
  7130. WC_BUTTON = WC_BUTTONW;
  7131. {$ELSE}
  7132. WC_BUTTON = WC_BUTTONA;
  7133. {$ENDIF}
  7134. {$ELSE}
  7135. WC_BUTTON = 'Button';
  7136. {$ENDIF}
  7137. {$ifdef win32xp}
  7138. BUTTON_IMAGELIST_ALIGN_LEFT = 0;
  7139. BUTTON_IMAGELIST_ALIGN_RIGHT = 1;
  7140. BUTTON_IMAGELIST_ALIGN_TOP = 2;
  7141. BUTTON_IMAGELIST_ALIGN_BOTTOM = 3;
  7142. BUTTON_IMAGELIST_ALIGN_CENTER = 4; // Doesn't draw text
  7143. TYPE
  7144. DummyStruct19 = Record
  7145. himl : HIMAGELIST; // Index: Normal, hot pushed, disabled. If count is less than 4, we use index 1
  7146. margin : RECT; // Margin around icon.
  7147. uAlign : UINT;
  7148. END;
  7149. BUTTON_IMAGELIST = DummyStruct19;
  7150. PBUTTON_IMAGELIST = ^DummyStruct19;
  7151. TDummyStruct19 = DummyStruct19;
  7152. PDummyStruct19 = ^DummyStruct19;
  7153. CONST
  7154. BCM_GETIDEALSIZE = (BCM_FIRST + $0001);
  7155. // Macro 305
  7156. Function Button_GetIdealSize( hwnd : hwnd; psize : LPARAM):BOOL;
  7157. CONST
  7158. BCM_SETIMAGELIST = (BCM_FIRST + $0002);
  7159. // Macro 306
  7160. Function Button_SetImageList( hwnd : hwnd; pbuttonImagelist : LPARAM):BOOL;
  7161. CONST
  7162. BCM_GETIMAGELIST = (BCM_FIRST + $0003);
  7163. // Macro 307
  7164. Function Button_GetImageList( hwnd : hwnd; pbuttonImagelist : LPARAM):BOOL;
  7165. CONST
  7166. BCM_SETTEXTMARGIN = (BCM_FIRST + $0004);
  7167. // Macro 308
  7168. Function Button_SetTextMargin( hwnd : hwnd; pmargin : LPARAM):BOOL;
  7169. CONST
  7170. BCM_GETTEXTMARGIN = (BCM_FIRST + $0005);
  7171. // Macro 309
  7172. Function Button_GetTextMargin( hwnd : hwnd; pmargin : LPARAM):BOOL;
  7173. TYPE
  7174. tagNMBCHOTITEM = Record
  7175. hdr : NMHDR;
  7176. dwFlags : DWORD; // HICF_*
  7177. END;
  7178. NMBCHOTITEM = tagNMBCHOTITEM;
  7179. LPNMBCHOTITEM = ^tagNMBCHOTITEM;
  7180. TNMBCHOTITEM = tagNMBCHOTITEM;
  7181. PNMBCHOTITEM = ^tagNMBCHOTITEM;
  7182. CONST
  7183. BCN_HOTITEMCHANGE = (BCN_FIRST + $0001);
  7184. BST_HOT = $0200;
  7185. {$ifdef win32vista}
  7186. BST_DROPDOWNPUSHED = $0400;
  7187. // BUTTON STYLES
  7188. BS_SPLITBUTTON = $00000000C; // This block L suffixed (unsigned)
  7189. BS_DEFSPLITBUTTON = $00000000D;
  7190. BS_COMMANDLINK = $00000000E;
  7191. BS_DEFCOMMANDLINK = $00000000F;
  7192. // SPLIT BUTTON INFO mask flags
  7193. BCSIF_GLYPH = $00001;
  7194. BCSIF_IMAGE = $00002;
  7195. BCSIF_STYLE = $00004;
  7196. BCSIF_SIZE = $00008;
  7197. // SPLIT BUTTON STYLE flags
  7198. BCSS_NOSPLIT = $00001;
  7199. BCSS_STRETCH = $00002;
  7200. BCSS_ALIGNLEFT = $00004;
  7201. BCSS_IMAGE = $00008;
  7202. BCM_SETDROPDOWNSTATE = (BCM_FIRST + $0006);
  7203. BCM_SETSPLITINFO = (BCM_FIRST + $0007);
  7204. BCM_GETSPLITINFO = (BCM_FIRST + $0008);
  7205. BCM_SETNOTE = (BCM_FIRST + $0009);
  7206. BCM_GETNOTE = (BCM_FIRST + $000A);
  7207. BCM_GETNOTELENGTH = (BCM_FIRST + $000B);
  7208. BCM_SETSHIELD = (BCM_FIRST + $000C);
  7209. // Value to pass to BCM_SETIMAGELIST to indicate that no glyph should be
  7210. // displayed
  7211. BCCL_NOGLYPH = HIMAGELIST(-1);
  7212. BCN_DROPDOWN = (BCN_FIRST + $0002);
  7213. Type
  7214. tagBUTTON_SPLITINFO = record
  7215. mask : UINT;
  7216. himlGlyph : HIMAGELIST;
  7217. uSplitStyle : UINT;
  7218. size : SIZE;
  7219. end;
  7220. BUTTON_SPLITINFO = tagBUTTON_SPLITINFO;
  7221. PBUTTON_SPLITINFO = ^BUTTON_SPLITINFO;
  7222. LPBUTTON_SPLITINFO = PBUTTON_SPLITINFO;
  7223. { NOTIFICATION MESSAGES }
  7224. tagNMBCDROPDOWN = packed record
  7225. hdr : NMHDR;
  7226. rcButton : RECT;
  7227. end;
  7228. NMBCDROPDOWN = tagNMBCDROPDOWN;
  7229. PNMBCDROPDOWN = ^NMBCDROPDOWN;
  7230. LPNMBCDROPDOWN = PNMBCDROPDOWN;
  7231. // BUTTON MESSAGES
  7232. function Button_SetDropDownState(hwnd:HWND; fDropDown:BOOL) : BOOL;
  7233. // (BOOL)SNDMSG((hwnd), BCM_SETDROPDOWNSTATE, (WPARAM)(fDropDown), 0)
  7234. function Button_SetSplitInfo(hwnd:HWND; pInfo:PBUTTON_SPLITINFO):BOOL;
  7235. // (BOOL)SNDMSG((hwnd), BCM_SETSPLITINFO, 0, (LPARAM)(pInfo))
  7236. function Button_GetSplitInfo(hwnd:HWND; pInfo:PBUTTON_SPLITINFO) :BOOL;
  7237. // (BOOL)SNDMSG((hwnd), BCM_GETSPLITINFO, 0, (LPARAM)(pInfo))
  7238. function Button_SetNote(hwnd:HWND; psz:LPCWSTR) :BOOL;
  7239. // (BOOL)SNDMSG((hwnd), BCM_SETNOTE, 0, (LPARAM)(psz))
  7240. function Button_GetNote(hwnd:HWND; psz:LPCWSTR; pcc:cint) :BOOL;
  7241. // (BOOL)SNDMSG((hwnd), BCM_GETNOTE, (WPARAM)pcc, (LPARAM)psz)
  7242. function Button_GetNoteLength(hwnd:HWND) :LRESULT;
  7243. // (LRESULT)SNDMSG((hwnd), BCM_GETNOTELENGTH, 0, 0)
  7244. // Macro to use on a button or command link to display an elevated icon
  7245. function Button_SetElevationRequiredState(hwnd:HWND; fRequired:BOOL) :LRESULT;
  7246. // (LRESULT)SNDMSG((hwnd), BCM_SETSHIELD, 0, (LPARAM)fRequired)
  7247. {$endif}
  7248. {$ENDIF}
  7249. {$ENDIF} // NOBUTTON
  7250. /// ===================== End Button Control =========================
  7251. /// ====================== Static Control =============================
  7252. {$IFNDEF NOSTATIC}
  7253. const
  7254. {$IFDEF _WIN32}
  7255. // Static Class Name
  7256. WC_STATICA = 'Static';
  7257. WC_STATICW = {L}'Static'#$0000;
  7258. {$IFDEF UNICODE}
  7259. WC_STATIC = WC_STATICW;
  7260. {$ELSE}
  7261. WC_STATIC = WC_STATICA;
  7262. {$ENDIF}
  7263. {$ELSE}
  7264. CONST
  7265. WC_STATIC = 'Static';
  7266. {$ENDIF}
  7267. {$ENDIF} // NOSTATIC
  7268. /// ===================== End Static Control =========================
  7269. /// ====================== Edit Control =============================
  7270. {$IFNDEF NOEDIT}
  7271. {$IFDEF _WIN32}
  7272. // Edit Class Name
  7273. WC_EDITA = 'Edit';
  7274. WC_EDITW = {L}'Edit'#$0000;
  7275. {$IFDEF UNICODE}
  7276. WC_EDIT = WC_EDITW;
  7277. {$ELSE}
  7278. WC_EDIT = WC_EDITA;
  7279. {$ENDIF}
  7280. {$ELSE}
  7281. CONST
  7282. WC_EDIT = 'Edit';
  7283. {$ENDIF}
  7284. {$ifdef win32xp}
  7285. EM_SETCUEBANNER = (ECM_FIRST + 1); // Set the cue banner with the lParm = LPCWSTR
  7286. // Macro 310
  7287. Function Edit_SetCueBannerText( hwnd : hwnd; lpcwText : LPARAM):BOOL;
  7288. CONST
  7289. EM_GETCUEBANNER = (ECM_FIRST + 2); // Set the cue banner with the lParm = LPCWSTR
  7290. // Macro 311
  7291. Function Edit_GetCueBannerText( hwnd : hwnd; lpwText : WPARAM; cchText : LPARAM):BOOL;
  7292. TYPE
  7293. _tagEDITBALLOONTIP = Record
  7294. cbStruct : DWORD;
  7295. pszTitle : LPCWSTR;
  7296. pszText : LPCWSTR;
  7297. ttiIcon : cint; // From TTI_*
  7298. END;
  7299. EDITBALLOONTIP = _tagEDITBALLOONTIP;
  7300. PEDITBALLOONTIP = ^_tagEDITBALLOONTIP;
  7301. TEDITBALLOONTIP = _tagEDITBALLOONTIP;
  7302. CONST
  7303. EM_SHOWBALLOONTIP = (ECM_FIRST + 3); // Show a balloon tip associated to the edit control
  7304. // Macro 312
  7305. Function Edit_ShowBalloonTip( hwnd : hwnd; peditballoontip : LPARAM):BOOL;
  7306. CONST
  7307. EM_HIDEBALLOONTIP = (ECM_FIRST + 4); // Hide any balloon tip associated with the edit control
  7308. // Macro 313
  7309. Function Edit_HideBalloonTip( hwnd : hwnd):BOOL;
  7310. {$ifdef win32vista}
  7311. const
  7312. EM_SETHILITE = (ECM_FIRST + 5);
  7313. EM_GETHILITE = (ECM_FIRST + 6);
  7314. // both are "unimplemented" in MSDN, so probably typing is off.
  7315. procedure Edit_SetHilite(hwndCtl:hwnd; ichStart:Wparam; ichEnd:lparam);
  7316. // ((void)SNDMSG((hwndCtl), EM_SETHILITE, (ichStart), (ichEnd)))
  7317. function Edit_GetHilite(hwndCtl:hwnd):DWORD;
  7318. // ((DWORD)SNDMSG((hwndCtl), EM_GETHILITE, 0L, 0L))
  7319. {$endif}
  7320. {$ENDIF}
  7321. {$ENDIF} // NOEDIT
  7322. /// ===================== End Edit Control =========================
  7323. /// ====================== Listbox Control =============================
  7324. {$IFNDEF NOLISTBOX}
  7325. {$IFDEF _WIN32}
  7326. // Listbox Class Name
  7327. CONST
  7328. WC_LISTBOXA = 'ListBox';
  7329. WC_LISTBOXW = 'ListBox'#$0000;
  7330. {$IFDEF UNICODE}
  7331. WC_LISTBOX = WC_LISTBOXW;
  7332. {$ELSE}
  7333. WC_LISTBOX = WC_LISTBOXA;
  7334. {$ENDIF}
  7335. {$ELSE}
  7336. CONST
  7337. WC_LISTBOX = 'ListBox';
  7338. {$ENDIF}
  7339. {$ENDIF} // NOLISTBOX
  7340. /// ===================== End Listbox Control =========================
  7341. /// ====================== Combobox Control =============================
  7342. {$IFNDEF NOCOMBOBOX}
  7343. {$IFDEF _WIN32}
  7344. // Combobox Class Name
  7345. WC_COMBOBOXA = 'ComboBox';
  7346. WC_COMBOBOXW = {L}'ComboBox'#$0000;
  7347. {$IFDEF UNICODE}
  7348. WC_COMBOBOX = WC_COMBOBOXW;
  7349. {$ELSE}
  7350. WC_COMBOBOX = WC_COMBOBOXA;
  7351. {$ENDIF}
  7352. {$ELSE}
  7353. CONST
  7354. WC_COMBOBOX = 'ComboBox';
  7355. {$ENDIF}
  7356. {$ENDIF} // NOCOMBOBOX
  7357. {$ifdef win32xp}
  7358. // custom combobox control messages
  7359. CB_SETMINVISIBLE = (CBM_FIRST + 1);
  7360. CB_GETMINVISIBLE = (CBM_FIRST + 2);
  7361. // Macro 314
  7362. Function ComboBox_SetMinVisible( hwnd : hwnd; iMinVisible : WPARAM):BOOL;
  7363. // Macro 315
  7364. Function ComboBox_GetMinVisible( hwnd : hwnd):cint;
  7365. {$ENDIF}
  7366. /// ===================== End Combobox Control =========================
  7367. /// ====================== Scrollbar Control ============================
  7368. {$IFNDEF NOSCROLLBAR}
  7369. {$IFDEF _WIN32}
  7370. // Scrollbar Class Name
  7371. CONST
  7372. WC_SCROLLBARA = 'ScrollBar';
  7373. WC_SCROLLBARW = {L}'ScrollBar'#$0000;
  7374. {$IFDEF UNICODE}
  7375. WC_SCROLLBAR = WC_SCROLLBARW;
  7376. {$ELSE}
  7377. WC_SCROLLBAR = WC_SCROLLBARA;
  7378. {$ENDIF}
  7379. {$ELSE}
  7380. CONST
  7381. WC_SCROLLBAR = 'ScrollBar';
  7382. {$ENDIF}
  7383. {$ENDIF} // NOSCROLLBAR
  7384. /// ===================== End Scrollbar Control =========================
  7385. //====== SysLink control =========================================
  7386. {$IFDEF _WIN32}
  7387. {$ifdef win32xp}
  7388. INVALID_LINK_INDEX = (-1);
  7389. WC_LINK = {L}'SysLink'#$0000;
  7390. LWS_TRANSPARENT = $0001;
  7391. LWS_IGNORERETURN = $0002;
  7392. {$ifdef win32vista}
  7393. LWS_NOPREFIX = $0004;
  7394. LWS_USEVISUALSTYLE = $0008;
  7395. LWS_USECUSTOMTEXT = $0010;
  7396. LWS_RIGHT = $0020;
  7397. {$endif}
  7398. LIF_ITEMINDEX = $00000001;
  7399. LIF_STATE = $00000002;
  7400. LIF_ITEMID = $00000004;
  7401. LIF_URL = $00000008;
  7402. LIS_FOCUSED = $00000001;
  7403. LIS_ENABLED = $00000002;
  7404. LIS_VISITED = $00000004;
  7405. {$ifdef win32vista}
  7406. LIS_HOTTRACK = $00000008;
  7407. LIS_DEFAULTCOLORS = $00000010; // Don't use any custom text colors
  7408. {$endif}
  7409. TYPE
  7410. tagLHITTESTINFO = Record
  7411. pt : POINT;
  7412. item : LITEM;
  7413. END;
  7414. LHITTESTINFO = tagLHITTESTINFO;
  7415. PLHITTESTINFO = ^tagLHITTESTINFO;
  7416. TLHITTESTINFO = tagLHITTESTINFO;
  7417. // PLHITTESTINFO = ^tagLHITTESTINFO;
  7418. tagNMLINK = Record
  7419. hdr : NMHDR;
  7420. item : LITEM;
  7421. END;
  7422. NMLINK = tagNMLINK;
  7423. PNMLINK = ^tagNMLINK;
  7424. TNMLINK = tagNMLINK;
  7425. // PNMLINK = ^tagNMLINK;
  7426. // SysLink notifications
  7427. // NM_CLICK // wParam: control ID, lParam: PNMLINK, ret: ignored.
  7428. // LinkWindow messages
  7429. CONST
  7430. LM_HITTEST = (WM_USER+$300); // wParam: n/a, lparam: PLHITTESTINFO, ret: BOOL
  7431. LM_GETIDEALHEIGHT = (WM_USER+$301); // wParam: n/a, lparam: n/a, ret: cy
  7432. LM_SETITEM = (WM_USER+$302); // wParam: n/a, lparam: LITEM*, ret: BOOL
  7433. LM_GETITEM = (WM_USER+$303); // wParam: n/a, lparam: LITEM*, ret: BOOL
  7434. {$ENDIF}
  7435. {$ENDIF} // _WIN32
  7436. //====== End SysLink control =========================================
  7437. //
  7438. // === MUI APIs ===
  7439. //
  7440. {$IFNDEF NOMUI}
  7441. procedure InitMUILanguage(uiLang:LANGID); stdcall; external commctrldll name 'InitMUILanguage';
  7442. function GetMUILanguage:LANGID; stdcall; external commctrldll name 'GetMUILanguage';
  7443. {$ENDIF} // NOMUI
  7444. {$ENDIF} // _WIN32_IE >= 0x0400
  7445. {$IFDEF _WIN32}
  7446. //====== TrackMouseEvent =====================================================
  7447. {$IFNDEF NOTRACKMOUSEEVENT}
  7448. //
  7449. // If the messages for TrackMouseEvent have not been defined then define them
  7450. // now.
  7451. //
  7452. {$IFNDEF WM_MOUSEHOVER}
  7453. CONST
  7454. WM_MOUSEHOVER = $02A1;
  7455. WM_MOUSELEAVE = $02A3;
  7456. {$ENDIF}
  7457. //
  7458. // If the TRACKMOUSEEVENT structure and associated flags havent been declared
  7459. // then declare them now.
  7460. //
  7461. {$IFNDEF TME_HOVER}
  7462. TME_HOVER = $00000001;
  7463. TME_LEAVE = $00000002;
  7464. {$ifdef win32xp}
  7465. TME_NONCLIENT = $00000010;
  7466. {$ENDIF} { WINVER >= 0x0500 }
  7467. TME_QUERY = $40000000;
  7468. TME_CANCEL = $80000000;
  7469. HOVER_DEFAULT = $FFFFFFFF;
  7470. TYPE
  7471. tagTRACKMOUSEEVENT = Record
  7472. cbSize : DWORD;
  7473. dwFlags : DWORD;
  7474. hwndTrack : HWND;
  7475. dwHoverTime : DWORD;
  7476. END;
  7477. TRACKMOUSEEVENT = tagTRACKMOUSEEVENT;
  7478. LPTRACKMOUSEEVENT = ^tagTRACKMOUSEEVENT;
  7479. TTRACKMOUSEEVENT = tagTRACKMOUSEEVENT;
  7480. PTRACKMOUSEEVENT = ^tagTRACKMOUSEEVENT;
  7481. {$ENDIF} // !TME_HOVER
  7482. //
  7483. // Declare _TrackMouseEvent. This API tries to use the window manager's
  7484. // implementation of TrackMouseEvent if it is present, otherwise it emulates.
  7485. //
  7486. function _TrackMouseEvent(lpEventTrack:LPTRACKMOUSEEVENT):BOOL; stdcall; external commctrldll name '_TrackMouseEvent';
  7487. {$ENDIF} // !NOTRACKMOUSEEVENT
  7488. {$ifdef ie4plus}
  7489. //====== Flat Scrollbar APIs=========================================
  7490. {$IFNDEF NOFLATSBAPIS}
  7491. CONST
  7492. WSB_PROP_CYVSCROLL = LONG($00000001);
  7493. WSB_PROP_CXHSCROLL = LONG($00000002);
  7494. WSB_PROP_CYHSCROLL = LONG($00000004);
  7495. WSB_PROP_CXVSCROLL = LONG($00000008);
  7496. WSB_PROP_CXHTHUMB = LONG($00000010);
  7497. WSB_PROP_CYVTHUMB = LONG($00000020);
  7498. WSB_PROP_VBKGCOLOR = LONG($00000040);
  7499. WSB_PROP_HBKGCOLOR = LONG($00000080);
  7500. WSB_PROP_VSTYLE = LONG($00000100);
  7501. WSB_PROP_HSTYLE = LONG($00000200);
  7502. WSB_PROP_WINSTYLE = LONG($00000400);
  7503. WSB_PROP_PALETTE = LONG($00000800);
  7504. WSB_PROP_MASK = LONG($00000FFF);
  7505. FSB_FLAT_MODE = 2;
  7506. FSB_ENCARTA_MODE = 1;
  7507. FSB_REGULAR_MODE = 0;
  7508. function FlatSB_EnableScrollBar(hwnd:HWND;code : cint;p3 : UINT):BOOL; stdcall; external commctrldll name 'FlatSB_EnableScrollBar';
  7509. function FlatSB_ShowScrollBar(hwnd:HWND;code : cint;p3 : BOOL):BOOL; stdcall; external commctrldll name 'FlatSB_ShowScrollBar';
  7510. function FlatSB_GetScrollRange(hwnd:HWND;code : cint;p3 : LPINT;p4 : LPINT):BOOL; stdcall; external commctrldll name 'FlatSB_GetScrollRange';
  7511. function FlatSB_GetScrollRange(hwnd:HWND;code : cint;var p3,p4 : cint):BOOL; stdcall; external commctrldll name 'FlatSB_GetScrollRange';
  7512. function FlatSB_GetScrollInfo(hwnd:HWND;code : cint;ScrollInfo : LPSCROLLINFO):BOOL; stdcall; external commctrldll name 'FlatSB_GetScrollInfo';
  7513. function FlatSB_GetScrollInfo(hwnd:HWND;code : cint;var ScrollInfo : TSCROLLINFO):BOOL; stdcall; external commctrldll name 'FlatSB_GetScrollInfo';
  7514. function FlatSB_GetScrollPos(hwnd:HWND;code : cint):cint; stdcall; external commctrldll name 'FlatSB_GetScrollPos';
  7515. function FlatSB_GetScrollProp(hwnd:HWND):BOOL; stdcall; external commctrldll name 'FlatSB_GetScrollProp';
  7516. {$IFDEF _WIN64}
  7517. function FlatSB_GetScrollPropPtr(hwnd:HWND;propIndex : cint;p3 : LPINT):BOOL; stdcall; external commctrldll name 'FlatSB_GetScrollPropPtr';
  7518. {$ELSE}
  7519. function FlatSB_GetScrollPropPtr(hwnd:HWND;code : cint):BOOL; stdcall; external commctrldll name 'FlatSB_GetScrollProp';
  7520. {$ENDIF}
  7521. function FlatSB_SetScrollPos(hWnd:HWND;nBar,nPos:cint;bRedraw:BOOL):cint; stdcall; external commctrldll name 'FlatSB_SetScrollPos';
  7522. function FlatSB_SetScrollInfo(hWnd:HWND;BarFlag:cint;const ScrollInfo:TScrollInfo;Redraw:BOOL):cint; stdcall; external commctrldll name 'FlatSB_SetScrollInfo';
  7523. function FlatSB_SetScrollRange(hWnd: HWND; nBar,nMinPos,nMaxPos: cint; bRedraw: BOOL):cint; stdcall; external commctrldll name 'FlatSB_SetScrollRange';
  7524. function FlatSB_SetScrollProp(p1: HWND; index : UINT; newValue: INT_PTR; p4: BOOL):BOOL; stdcall; external commctrldll name 'FlatSB_SetScrollProp';
  7525. function InitializeFlatSB(hWnd:HWND):BOOL; stdcall; external commctrldll name 'InitializeFlatSB';
  7526. function UninitializeFlatSB(hWnd:HWND):HRESULT; stdcall; external commctrldll name 'UninitializeFlatSB';
  7527. {$ENDIF} // NOFLATSBAPIS
  7528. {$ENDIF} // _WIN32_IE >= 0x0400
  7529. {$ENDIF} { _WIN32 }
  7530. {$ENDIF} // _WIN32_IE >= 0x0300
  7531. {$ifdef win32xp}
  7532. //
  7533. // subclassing stuff
  7534. //
  7535. TYPE
  7536. subclassproc=function (hwnd:HWND;uMsg:cUINT; wParam:WPARAM;lparam:LPARAM;uISubClass : UINT_PTR;dwRefData:DWORD_PTR):LRESULT; stdcall;
  7537. {
  7538. (CALLBACK *SUBCLASSPROC)(HWND hWnd, UINT uMsg, WPARAM wParam, = LRESULT
  7539. LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData);
  7540. typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND hWnd, UINT uMsg, WPARAM wParam,
  7541. LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData);
  7542. hwnd:HWND;uMsg:cUINT; wParam:WPARAM;lparam:LPARAM;uISubClass : CUINT_PTR;dwRefData:DWORD_PTR):LRESULT; stdcall;
  7543. }
  7544. function SetWindowSubclass(hWnd:HWND;pfnSubclass:SUBCLASSPROC;uIdSubclass:UINT_PTR;dwRefData:DWORD_PTR):BOOL; stdcall; external commctrldll name 'SetWindowSubclass';
  7545. function GetWindowSubclass(hWnd:HWND;pfnSubclass:SUBCLASSPROC;uIdSubclass:UINT_PTR;pdwRefData:PDWORD_PTR):BOOL; stdcall; external commctrldll name 'GetWindowSubclass';
  7546. function RemoveWindowSubclass(hWnd:HWND;pfnSubclass:SUBCLASSPROC;uIdSubclass:UINT_PTR):BOOL; stdcall; external commctrldll name 'RemoveWindowSubclass';
  7547. function DefSubclassProc(hWnd:HWND;uMsg:UINT;wParam:WPARAM;lParam:LPARAM):LRESULT; stdcall; external commctrldll name 'DefSubclassProc';
  7548. {$ENDIF}
  7549. {$ifdef NTDDI_VISTA}
  7550. type _LI_METRIC= (
  7551. LIM_SMALL=0, // corresponds to SM_CXSMICON/SM_CYSMICON
  7552. LIM_LARGE // corresponds to SM_CXICON/SM_CYICON
  7553. );
  7554. Function LoadIconMetric( hinst:HINST; pszName:LPCWStr;lims:cint; var phico: HICON ):HRESULT; stdcall; external commctrldll name 'LoadIconMetric';
  7555. Function LoadIconWithScaleDown( hinst:HINST; pszName:LPCWStr;cx:cint;cy:cint;var phico: HICON ):HRESULT; stdcall; external commctrldll name 'LoadIconWithScaleDown';
  7556. {$endif}
  7557. {$ifdef win32xp}
  7558. function DrawShadowText(hdc:HDC;pszText:LPCWSTR;cch:UINT;prc:PRECT;dwFlags:DWORD;crText:COLORREF;crShadow:COLORREF;ixOffset:cint;iyOffset:cint):cint; stdcall; external commctrldll name 'DrawShadowText';
  7559. {$ENDIF}
  7560. // ===================== Task Dialog =========================
  7561. Type
  7562. PFTASKDIALOGCALLBACK = function(hwnd: HWND; msg: UINT; wParam: WPARAM; lParam: LPARAM; lpRefData: LONG_PTR): HRESULT; stdcall;
  7563. // _TASKDIALOG_FLAGS enum
  7564. const
  7565. TDF_ENABLE_HYPERLINKS = $0001;
  7566. TDF_USE_HICON_MAIN = $0002;
  7567. TDF_USE_HICON_FOOTER = $0004;
  7568. TDF_ALLOW_DIALOG_CANCELLATION = $0008;
  7569. TDF_USE_COMMAND_LINKS = $0010;
  7570. TDF_USE_COMMAND_LINKS_NO_ICON = $0020;
  7571. TDF_EXPAND_FOOTER_AREA = $0040;
  7572. TDF_EXPANDED_BY_DEFAULT = $0080;
  7573. TDF_VERIFICATION_FLAG_CHECKED = $0100;
  7574. TDF_SHOW_PROGRESS_BAR = $0200;
  7575. TDF_SHOW_MARQUEE_PROGRESS_BAR = $0400;
  7576. TDF_CALLBACK_TIMER = $0800;
  7577. TDF_POSITION_RELATIVE_TO_WINDOW = $1000;
  7578. TDF_RTL_LAYOUT = $2000;
  7579. TDF_NO_DEFAULT_RADIO_BUTTON = $4000;
  7580. TDF_CAN_BE_MINIMIZED = $8000;
  7581. type
  7582. TASKDIALOG_FLAGS = Integer; // Note: _TASKDIALOG_FLAGS is an int
  7583. // _TASKDIALOG_MESSAGES enum
  7584. const
  7585. TDM_NAVIGATE_PAGE = WM_USER+101;
  7586. TDM_CLICK_BUTTON = WM_USER+102; // wParam = Button ID
  7587. TDM_SET_MARQUEE_PROGRESS_BAR = WM_USER+103; // wParam = 0 (nonMarque) wParam != 0 (Marquee)
  7588. TDM_SET_PROGRESS_BAR_STATE = WM_USER+104; // wParam = new progress state
  7589. TDM_SET_PROGRESS_BAR_RANGE = WM_USER+105; // lParam = MAKELPARAM(nMinRange, nMaxRange)
  7590. TDM_SET_PROGRESS_BAR_POS = WM_USER+106; // wParam = new position
  7591. TDM_SET_PROGRESS_BAR_MARQUEE = WM_USER+107; // wParam = 0 (stop marquee), wParam != 0 (start marquee), lparam = speed (milliseconds between repaints)
  7592. TDM_SET_ELEMENT_TEXT = WM_USER+108; // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
  7593. TDM_CLICK_RADIO_BUTTON = WM_USER+110; // wParam = Radio Button ID
  7594. TDM_ENABLE_BUTTON = WM_USER+111; // lParam = 0 (disable), lParam != 0 (enable), wParam = Button ID
  7595. TDM_ENABLE_RADIO_BUTTON = WM_USER+112; // lParam = 0 (disable), lParam != 0 (enable), wParam = Radio Button ID
  7596. TDM_CLICK_VERIFICATION = WM_USER+113; // wParam = 0 (unchecked), 1 (checked), lParam = 1 (set key focus)
  7597. TDM_UPDATE_ELEMENT_TEXT = WM_USER+114; // wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
  7598. TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE = WM_USER+115; // wParam = Button ID, lParam = 0 (elevation not required), lParam != 0 (elevation required)
  7599. TDM_UPDATE_ICON = WM_USER+116; // wParam = icon element (TASKDIALOG_ICON_ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise)
  7600. // _TASKDIALOG_NOTIFICATIONS enum
  7601. const
  7602. TDN_CREATED = 0;
  7603. TDN_NAVIGATED = 1;
  7604. TDN_BUTTON_CLICKED = 2; // wParam = Button ID
  7605. TDN_HYPERLINK_CLICKED = 3; // lParam = (LPCWSTR)pszHREF
  7606. TDN_TIMER = 4; // wParam = Milliseconds since dialog created or timer reset
  7607. TDN_DESTROYED = 5;
  7608. TDN_RADIO_BUTTON_CLICKED = 6; // wParam = Radio Button ID
  7609. TDN_DIALOG_CONSTRUCTED = 7;
  7610. TDN_VERIFICATION_CLICKED = 8; // wParam = 1 if checkbox checked, 0 if not, lParam is unused and always 0
  7611. TDN_HELP = 9;
  7612. TDN_EXPANDO_BUTTON_CLICKED = 10; // wParam = 0 (dialog is now collapsed), wParam != 0 (dialog is now expanded)
  7613. type
  7614. _TASKDIALOG_BUTTON = packed record
  7615. nButtonID: Integer;
  7616. pszButtonText: PCWSTR;
  7617. end;
  7618. TASKDIALOG_BUTTON = _TASKDIALOG_BUTTON;
  7619. TTASKDIALOG_BUTTON = TASKDIALOG_BUTTON;
  7620. PTASKDIALOG_BUTTON = ^TASKDIALOG_BUTTON;
  7621. // _TASKDIALOG_ELEMENTS enum
  7622. const
  7623. TDE_CONTENT = 0;
  7624. TDE_EXPANDED_INFORMATION = 1;
  7625. TDE_FOOTER = 2;
  7626. TDE_MAIN_INSTRUCTION = 3;
  7627. // _TASKDIALOG_ICON_ELEMENTS enum
  7628. TDIE_ICON_MAIN = 0;
  7629. TDIE_ICON_FOOTER = 1;
  7630. TD_WARNING_ICON = MAKEINTRESOURCEW(Word(-1));
  7631. TD_ERROR_ICON = MAKEINTRESOURCEW(Word(-2));
  7632. TD_INFORMATION_ICON = MAKEINTRESOURCEW(Word(-3));
  7633. TD_SHIELD_ICON = MAKEINTRESOURCEW(Word(-4));
  7634. TD_SHIELD_GRADIENT_ICON = MAKEINTRESOURCEW(Word(-5));
  7635. TD_SHIELD_WARNING_ICON = MAKEINTRESOURCEW(Word(-6));
  7636. TD_SHIELD_ERROR_ICON = MAKEINTRESOURCEW(Word(-7));
  7637. TD_SHIELD_OK_ICON = MAKEINTRESOURCEW(Word(-8));
  7638. TD_SHIELD_GRAY_ICON = MAKEINTRESOURCEW(Word(-9));
  7639. // _TASKDIALOG_COMMON_BUTTON_FLAGS enum
  7640. TDCBF_OK_BUTTON = $0001; // selected control return value IDOK
  7641. TDCBF_YES_BUTTON = $0002; // selected control return value IDYES
  7642. TDCBF_NO_BUTTON = $0004; // selected control return value IDNO
  7643. TDCBF_CANCEL_BUTTON = $0008; // selected control return value IDCANCEL
  7644. TDCBF_RETRY_BUTTON = $0010; // selected control return value IDRETRY
  7645. TDCBF_CLOSE_BUTTON = $0020; // selected control return value IDCLOSE
  7646. type
  7647. TASKDIALOG_COMMON_BUTTON_FLAGS = Integer; // Note: _TASKDIALOG_COMMON_BUTTON_FLAGS is an int
  7648. _TASKDIALOGCONFIG = packed record
  7649. cbSize: UINT;
  7650. hwndParent: HWND;
  7651. hInstance: HINST; // used for MAKEINTRESOURCE() strings
  7652. dwFlags: TASKDIALOG_FLAGS; // TASKDIALOG_FLAGS (TDF_XXX) flags
  7653. dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS; // TASKDIALOG_COMMON_BUTTON (TDCBF_XXX) flags
  7654. pszWindowTitle: PCWSTR; // string or MAKEINTRESOURCE()
  7655. case PtrInt of
  7656. 0: (hMainIcon: HICON);
  7657. 1: (
  7658. pszMainIcon: PCWSTR;
  7659. pszMainInstruction: PCWSTR;
  7660. pszContent: PCWSTR;
  7661. cButtons: UINT;
  7662. pButtons: PTASKDIALOG_BUTTON;
  7663. nDefaultButton: Integer;
  7664. cRadioButtons: UINT;
  7665. pRadioButtons: PTASKDIALOG_BUTTON;
  7666. nDefaultRadioButton: Integer;
  7667. pszVerificationText: PCWSTR;
  7668. pszExpandedInformation: PCWSTR;
  7669. pszExpandedControlText: PCWSTR;
  7670. pszCollapsedControlText: PCWSTR;
  7671. case PtrInt of
  7672. 0: (hFooterIcon: HICON);
  7673. 1: (
  7674. pszFooterIcon: PCWSTR;
  7675. pszFooter: PCWSTR;
  7676. pfCallback: PFTASKDIALOGCALLBACK;
  7677. lpCallbackData: LONG_PTR;
  7678. cxWidth: UINT; // width of the Task Dialog's client area in DLU's. If 0, Task Dialog will calculate the ideal width.
  7679. );
  7680. );
  7681. end;
  7682. TASKDIALOGCONFIG = _TASKDIALOGCONFIG;
  7683. PTASKDIALOGCONFIG = ^TASKDIALOGCONFIG;
  7684. TTASKDIALOGCONFIG = TASKDIALOGCONFIG;
  7685. var
  7686. TaskDialogIndirect: function(const pTaskConfig: PTASKDIALOGCONFIG; pnButton: PInteger; pnRadioButton: PInteger; pfVerificationFlagChecked: PBOOL): HRESULT; stdcall;
  7687. TaskDialog: function(hwndParent: HWND; hInstance: HINST; pszWindowTitle: PCWSTR; pszMainInstruction: PCWSTR; pszContent: PCWSTR;
  7688. dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS; pszIcon: PCWSTR; pnButton: PInteger): HRESULT; stdcall;
  7689. // ==================== End TaskDialog =======================
  7690. IMPLEMENTATION
  7691. // Macro 8
  7692. //#define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
  7693. // (fn)((hwnd), (int)(wParam), (NMHDR *)(lParam))
  7694. Procedure HANDLE_WM_NOTIFY( hwnd : hwnd; wParam : cint;var _lParam : NMHDR ;fn:Pointer);
  7695. TYPE FnType=procedure ( hwnd : hwnd; wParam : cint;tst:LPARAM); stdcall;
  7696. Begin
  7697. fnType(fn)(hwnd, wParam, LPARAM(@_lParam));
  7698. end;
  7699. // Macro 9
  7700. //#define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \
  7701. // (LRESULT)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(idFrom), (LPARAM)(NMHDR *)(pnmhdr))
  7702. Function FORWARD_WM_NOTIFY( hwnd : hwnd; idFrom : cint;var pnmhdr : NMHDR ; fn : pointer ):LRESULT;
  7703. TYPE FnType=Function( hwnd : hwnd; wParam : cint;wparam2:cint;lparam1:lparam):LResult; stdcall;
  7704. Begin
  7705. Result:=LRESULT(fntype(fn)(hwnd, WM_NOTIFY, idFrom, LPARAM(@pnmhdr)));
  7706. end;
  7707. // Macro 10
  7708. // #define CCSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member))
  7709. // Macro 11
  7710. // #define ImageList_AddIcon(himl, hicon) ImageList_ReplaceIcon(himl, -1, hicon)
  7711. Function ImageList_AddIcon(Himl:HIMAGELIST;hicon:HICON):cint;
  7712. Begin
  7713. Result:=ImageList_ReplaceIcon(himl,-1,hicon);
  7714. end;
  7715. // Macro 12
  7716. // #define INDEXTOOVERLAYMASK(i) ((i) << 8)
  7717. // Macro 13
  7718. // #define ImageList_RemoveAll(himl) ImageList_Remove(himl, -1)
  7719. Procedure ImageList_RemoveAll(himl:HIMAGELIST);
  7720. Begin
  7721. ImageList_Remove(himl, -1)
  7722. End;
  7723. // Macro 14
  7724. // #define ImageList_ExtractIcon(hi, himl, i) ImageList_GetIcon(himl, i, 0)
  7725. function ImageList_ExtractIcon(hi:longint; himl:HIMAGELIST;i:longint):HICON;
  7726. Begin
  7727. result:=ImageList_GetIcon(himl, i,0);
  7728. end;
  7729. // Macro 15
  7730. // #define ImageList_LoadBitmap(hi, lpbmp, cx, cGrow, crMask)
  7731. // ImageList_LoadImage(hi, lpbmp, cx, cGrow, crMask, IMAGE_BITMAP, 0)
  7732. Procedure ImageList_LoadBitmap(hi:HINST;bmp:LPCTSTR;cx:cint;cGrow:cint;crMask:COLORREF);
  7733. Begin
  7734. ImageList_LoadImage(hi, bmp, cx, cGrow, crMask, IMAGE_BITMAP, 0);
  7735. End;
  7736. // Macro 16
  7737. // #define Header_GetItemCount(hwndHD) \
  7738. // (int)SNDMSG((hwndHD), HDM_GETITEMCOUNT, 0, DWord(0))
  7739. Function Header_GetItemCount( hwndHD : hwnd):cint;
  7740. Begin
  7741. Result:=cint(SendMessage((hwndHD), HDM_GETITEMCOUNT, 0, LPARAM(0)))
  7742. end;
  7743. // Macro 17
  7744. //#define Header_InsertItem(hwndHD, i, phdi) \
  7745. // (int)SNDMSG((hwndHD), HDM_INSERTITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM *)(phdi))
  7746. Function Header_InsertItem( hwndHD : hwnd; i : cint;const phdi : HD_ITEM ):cint;
  7747. Begin
  7748. Result:=cint(SendMessage((hwndHD), HDM_INSERTITEM, (i), LPARAM(@phdi)));
  7749. end;
  7750. // Macro 18
  7751. //#define Header_DeleteItem(hwndHD, i) \
  7752. // (BOOL)SNDMSG((hwndHD), HDM_DELETEITEM, (WPARAM)(int)(i), LPARAM(0))
  7753. Function Header_DeleteItem( hwndHD : hwnd; i : cint):BOOL;
  7754. Begin
  7755. Result:=BOOL(SendMessage((hwndHD), HDM_DELETEITEM, (i), LPARAM(0)));
  7756. end;
  7757. // Macro 19
  7758. // #define Header_GetItem(hwndHD, i, phdi) \
  7759. // (BOOL)SNDMSG((hwndHD), HDM_GETITEM, (WPARAM)(int)(i), (LPARAM)(HD_ITEM *)(phdi))
  7760. Function Header_GetItem( hwndHD : hwnd; i : cint;var phdi : HD_ITEM ):BOOL;
  7761. Begin
  7762. Result:=BOOL(SendMessage((hwndHD), HDM_GETITEM, (i), LPARAM(@phdi)));
  7763. end;
  7764. // Macro 20
  7765. // #define Header_SetItem(hwndHD, i, phdi) \
  7766. // (BOOL)SNDMSG((hwndHD), HDM_SETITEM, (WPARAM)(int)(i), (LPARAM)(const HD_ITEM *)(phdi))
  7767. Function Header_SetItem( hwndHD : hwnd; i : cint;const phdi : HD_ITEM ):BOOL;
  7768. Begin
  7769. Result:=BOOL(SendMessage((hwndHD), HDM_SETITEM, (i), LPARAM(@phdi)));
  7770. end;
  7771. // Macro 21
  7772. // #define Header_Layout(hwndHD, playout) \
  7773. // (BOOL)SNDMSG((hwndHD), HDM_LAYOUT, 0, (LPARAM)(HD_LAYOUT *)(playout))
  7774. Function Header_Layout( hwndHD : hwnd;var playout : HD_LAYOUT ):BOOL;
  7775. Begin
  7776. Result:=BOOL(SendMessage((hwndHD), HDM_LAYOUT, 0, LPARAM(@playout)))
  7777. end;
  7778. // Macro 22
  7779. // #define Header_GetItemRect(hwnd, iItem, lprc) \
  7780. // (BOOL)SNDMSG((hwnd), HDM_GETITEMRECT, (WPARAM)(iItem), (LPARAM)(lprc))
  7781. Function Header_GetItemRect( hwnd : hwnd; iItem : WPARAM; lprc : LPARAM):BOOL;
  7782. Begin
  7783. Result:=BOOL(SendMessage((hwnd), HDM_GETITEMRECT, iItem, lprc));
  7784. end;
  7785. // Macro 23
  7786. // #define Header_SetImageList(hwnd, himl) \
  7787. // (HIMAGELIST)SNDMSG((hwnd), HDM_SETIMAGELIST, 0, (LPARAM)(himl))
  7788. Function Header_SetImageList( hwnd : hwnd; himl : LPARAM):HIMAGELIST;
  7789. Begin
  7790. Result:=HIMAGELIST(SendMessage((hwnd), HDM_SETIMAGELIST, 0, himl))
  7791. end;
  7792. // Macro 24
  7793. // #define Header_GetImageList(hwnd) \
  7794. // (HIMAGELIST)SNDMSG((hwnd), HDM_GETIMAGELIST, 0, 0)
  7795. Function Header_GetImageList( hwnd : hwnd):HIMAGELIST;
  7796. Begin
  7797. Result:=HIMAGELIST(SendMessage((hwnd), HDM_GETIMAGELIST, 0, 0))
  7798. end;
  7799. // Macro 25
  7800. // #define Header_OrderToIndex(hwnd, i) \
  7801. // (int)SNDMSG((hwnd), HDM_ORDERTOINDEX, (WPARAM)(i), 0)
  7802. Function Header_OrderToIndex( hwnd : hwnd; i : WPARAM):cint;
  7803. Begin
  7804. Result:=cint(SendMessage((hwnd), HDM_ORDERTOINDEX, (i), 0))
  7805. end;
  7806. // Macro 26
  7807. // #define Header_CreateDragImage(hwnd, i) \
  7808. // (HIMAGELIST)SNDMSG((hwnd), HDM_CREATEDRAGIMAGE, (WPARAM)(i), 0)
  7809. Function Header_CreateDragImage( hwnd : hwnd; i : WPARAM):HIMAGELIST;
  7810. Begin
  7811. Result:=HIMAGELIST(SendMessage((hwnd), HDM_CREATEDRAGIMAGE, (i), 0))
  7812. end;
  7813. // Macro 27
  7814. // #define Header_GetOrderArray(hwnd, iCount, lpi) \
  7815. // (BOOL)SNDMSG((hwnd), HDM_GETORDERARRAY, (WPARAM)(iCount), (LPARAM)(lpi))
  7816. Function Header_GetOrderArray( hwnd : hwnd; iCount : WPARAM; lpi : LPARAM):BOOL;
  7817. Begin
  7818. Result:=BOOL(SendMessage((hwnd), HDM_GETORDERARRAY, iCount, lpi))
  7819. end;
  7820. // Macro 28
  7821. // #define Header_SetOrderArray(hwnd, iCount, lpi) \
  7822. // (BOOL)SNDMSG((hwnd), HDM_SETORDERARRAY, (WPARAM)(iCount), (LPARAM)(lpi))
  7823. Function Header_SetOrderArray( hwnd : hwnd; iCount : WPARAM; lpi : PInteger):BOOL;inline;
  7824. Begin
  7825. Result:=BOOL(SendMessage((hwnd), HDM_SETORDERARRAY, iCount, LPARAM(lpi)))
  7826. end;
  7827. // Macro 29
  7828. // #define Header_SetHotDivider(hwnd, fPos, dw) \
  7829. // (int)SNDMSG((hwnd), HDM_SETHOTDIVIDER, (WPARAM)(fPos), (LPARAM)(dw))
  7830. Function Header_SetHotDivider( hwnd : hwnd; fPos : WPARAM; dw : LPARAM):cint;
  7831. Begin
  7832. Result:=cint(SendMessage((hwnd), HDM_SETHOTDIVIDER, fPos, dw))
  7833. end;
  7834. {$ifdef ie5plus}
  7835. // Macro 30
  7836. // #define Header_SetBitmapMargin(hwnd, iWidth) \
  7837. // (int)SNDMSG((hwnd), HDM_SETBITMAPMARGIN, (WPARAM)(iWidth), 0)
  7838. Function Header_SetBitmapMargin( hwnd : hwnd; iWidth : WPARAM):cint;
  7839. Begin
  7840. Result:=cint(SendMessage((hwnd), HDM_SETBITMAPMARGIN, iWidth, 0))
  7841. end;
  7842. // Macro 31
  7843. // #define Header_GetBitmapMargin(hwnd) \
  7844. // (int)SNDMSG((hwnd), HDM_GETBITMAPMARGIN, 0, 0)
  7845. Function Header_GetBitmapMargin( hwnd : hwnd):cint;
  7846. Begin
  7847. Result:=cint(SendMessage((hwnd), HDM_GETBITMAPMARGIN, 0, 0))
  7848. end;
  7849. {$ENDIF}
  7850. // Macro 32
  7851. // #define Header_SetUnicodeFormat(hwnd, fUnicode) \
  7852. // (BOOL)SNDMSG((hwnd), HDM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
  7853. Function Header_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
  7854. Begin
  7855. Result:=BOOL(SendMessage((hwnd), HDM_SETUNICODEFORMAT, fUnicode, 0));
  7856. end;
  7857. // Macro 33
  7858. // #define Header_GetUnicodeFormat(hwnd) \
  7859. // (BOOL)SNDMSG((hwnd), HDM_GETUNICODEFORMAT, 0, 0)
  7860. Function Header_GetUnicodeFormat( hwnd : hwnd):BOOL;
  7861. Begin
  7862. Result:=BOOL(SendMessage((hwnd), HDM_GETUNICODEFORMAT, 0, 0))
  7863. end;
  7864. {$ifdef IE5plus}
  7865. // Macro 34
  7866. // #define Header_SetFilterChangeTimeout(hwnd, i) \
  7867. // (int)SNDMSG((hwnd), HDM_SETFILTERCHANGETIMEOUT, 0, (LPARAM)(i))
  7868. Function Header_SetFilterChangeTimeout( hwnd : hwnd; i : LPARAM):cint;
  7869. Begin
  7870. Result:=cint(SendMessage((hwnd), HDM_SETFILTERCHANGETIMEOUT, 0, (i)))
  7871. end;
  7872. // Macro 35
  7873. // #define Header_EditFilter(hwnd, i, fDiscardChanges) \
  7874. // (int)SNDMSG((hwnd), HDM_EDITFILTER, (WPARAM)(i), MAKELPARAM(fDiscardChanges, 0))
  7875. Function Header_EditFilter( hwnd : hwnd; i : WPARAM; fDiscardChanges :cint ):cint;
  7876. Begin
  7877. Result:=cint(SendMessage((hwnd), HDM_EDITFILTER, (i), MAKELPARAM(fDiscardChanges, 0)));
  7878. end;
  7879. // Macro 36
  7880. // #define Header_ClearFilter(hwnd, i) \
  7881. // (int)SNDMSG((hwnd), HDM_CLEARFILTER, (WPARAM)(i), 0)
  7882. Function Header_ClearFilter( hwnd : hwnd; i : WPARAM):cint;
  7883. Begin
  7884. Result:=cint(SendMessage((hwnd), HDM_CLEARFILTER, (i), 0))
  7885. end;
  7886. // Macro 37
  7887. // #define Header_ClearAllFilters(hwnd) \
  7888. // (int)SNDMSG((hwnd), HDM_CLEARFILTER, (WPARAM)-1, 0)
  7889. Function Header_ClearAllFilters( hwnd : hwnd):cint;
  7890. Begin
  7891. Result:=cint(SendMessage((hwnd), HDM_CLEARFILTER, WPARAM(-1), 0))
  7892. end;
  7893. {$endif}
  7894. {$ifdef win32vista}
  7895. // macro 37a ..37d
  7896. function Header_GetOverflowRect( hwnd : hwnd; lprc:lprect):bool;
  7897. begin
  7898. result:=bool(sendmessage(hwnd, HDM_GETOVERFLOWRECT, 0, LPARAM(lprc)));
  7899. end;
  7900. function Header_GetFocusedItem(hwnd : hwnd):cint;
  7901. begin
  7902. Result:=cint(SendMessage((hwnd), HDM_GETFOCUSEDITEM, WPARAM(0), LPARAM(0)));
  7903. end;
  7904. function Header_SetFocusedItem(hwnd:hwnd; iItem:cint):BOOL;
  7905. begin
  7906. result:=bool(sendmessage(hwnd, HDM_SETFOCUSEDITEM, WPARAM(0),LPARAM(iItem)));
  7907. end;
  7908. function Header_GetItemDropDownRect(hwnd : hwnd;iItem:cint; lprc:lprect):bool;
  7909. begin
  7910. result:=bool(sendmessage(hwnd, HDM_GETITEMDROPDOWNRECT, WPARAM(iItem), LPARAM(lprc)));
  7911. end;
  7912. {$endif}
  7913. // Macro 38
  7914. // #define ListView_SetUnicodeFormat(hwnd, fUnicode) \
  7915. // (BOOL)SNDMSG((hwnd), LVM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
  7916. Function ListView_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
  7917. Begin
  7918. Result:=BOOL(SendMessage((hwnd), LVM_SETUNICODEFORMAT, fUnicode, 0));
  7919. end;
  7920. // Macro 39
  7921. // #define ListView_GetUnicodeFormat(hwnd) \
  7922. // (BOOL)SNDMSG((hwnd), LVM_GETUNICODEFORMAT, 0, 0)
  7923. Function ListView_GetUnicodeFormat( hwnd : hwnd):BOOL;
  7924. Begin
  7925. Result:=BOOL(SendMessage((hwnd), LVM_GETUNICODEFORMAT, 0, 0))
  7926. end;
  7927. // Macro 40
  7928. // #define ListView_GetBkColor(hwnd) \
  7929. // (COLORREF)SNDMSG((hwnd), LVM_GETBKCOLOR, 0, LPARAM(0))
  7930. Function ListView_GetBkColor( hwnd : hwnd):COLORREF;
  7931. Begin
  7932. Result:=COLORREF(SendMessage((hwnd), LVM_GETBKCOLOR, 0, LPARAM(0)))
  7933. end;
  7934. // Macro 41
  7935. // #define ListView_SetBkColor(hwnd, clrBk) \
  7936. // (BOOL)SNDMSG((hwnd), LVM_SETBKCOLOR, 0, (LPARAM)(COLORREF)(clrBk))
  7937. Function ListView_SetBkColor( hwnd : hwnd; clrBk : COLORREF):BOOL;
  7938. Begin
  7939. Result:=BOOL(SendMessage((hwnd), LVM_SETBKCOLOR, 0, clrBk))
  7940. end;
  7941. // Macro 42
  7942. // #define ListView_GetImageList(hwnd, iImageList) \
  7943. // (HIMAGELIST)SNDMSG((hwnd), LVM_GETIMAGELIST, (WPARAM)(INT)(iImageList), DWord(0))
  7944. Function ListView_GetImageList( hwnd : hwnd; iImageList : CINT):HIMAGELIST;
  7945. Begin
  7946. Result:=HIMAGELIST(SendMessage((hwnd), LVM_GETIMAGELIST, iImageList, LPARAM(0)))
  7947. end;
  7948. // Macro 43
  7949. // #define ListView_SetImageList(hwnd, himl, iImageList) \
  7950. // (HIMAGELIST)SNDMSG((hwnd), LVM_SETIMAGELIST, (WPARAM)(iImageList), (LPARAM)(HIMAGELIST)(himl))
  7951. Function ListView_SetImageList( hwnd : hwnd; himl : HIMAGELIST; iImageList : WPARAM):HIMAGELIST;
  7952. Begin
  7953. Result:=HIMAGELIST(SendMessage((hwnd), LVM_SETIMAGELIST, iImageList, himl))
  7954. end;
  7955. // Macro 44
  7956. // #define ListView_GetItemCount(hwnd) \
  7957. // (int)SNDMSG((hwnd), LVM_GETITEMCOUNT, 0, DWord(0))
  7958. Function ListView_GetItemCount( hwnd : hwnd):cint;
  7959. Begin
  7960. Result:=cint(SendMessage((hwnd), LVM_GETITEMCOUNT, 0, LPARAM(0)))
  7961. end;
  7962. // Macro 45
  7963. // #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
  7964. // Macro 46
  7965. // #define ListView_GetItem(hwnd, pitem) \
  7966. // (BOOL)SNDMSG((hwnd), LVM_GETITEM, 0, (LPARAM)(LV_ITEM *)(pitem))
  7967. Function ListView_GetItem( hwnd : hwnd;var pitem : LV_ITEM ):BOOL;
  7968. Begin
  7969. Result:=BOOL(SendMessage((hwnd), LVM_GETITEM, 0, LPARAM(@pitem)))
  7970. end;
  7971. // Macro 47
  7972. // #define ListView_SetItem(hwnd, pitem) \
  7973. // (BOOL)SNDMSG((hwnd), LVM_SETITEM, 0, (LPARAM)(const LV_ITEM *)(pitem))
  7974. Function ListView_SetItem( hwnd : hwnd;const pitem : LV_ITEM ):BOOL;
  7975. Begin
  7976. Result:=BOOL(SendMessage((hwnd), LVM_SETITEM, 0, LPARAM(@pitem)))
  7977. end;
  7978. // Macro 48
  7979. // #define ListView_InsertItem(hwnd, pitem) \
  7980. // (int)SNDMSG((hwnd), LVM_INSERTITEM, 0, (LPARAM)(const LV_ITEM *)(pitem))
  7981. Function ListView_InsertItem( hwnd : hwnd;Const pitem : LV_ITEM ):cint;
  7982. Begin
  7983. Result:=cint(SendMessage((hwnd), LVM_INSERTITEM, 0, LPARAM(@pitem)))
  7984. end;
  7985. // Macro 49
  7986. // #define ListView_DeleteItem(hwnd, i) \
  7987. // (BOOL)SNDMSG((hwnd), LVM_DELETEITEM, (WPARAM)(int)(i), DWord(0))
  7988. Function ListView_DeleteItem( hwnd : hwnd; i : cint):BOOL;
  7989. Begin
  7990. Result:=BOOL(SendMessage((hwnd), LVM_DELETEITEM, (i), LPARAM(0)))
  7991. end;
  7992. // Macro 50
  7993. // #define ListView_DeleteAllItems(hwnd) \
  7994. // (BOOL)SNDMSG((hwnd), LVM_DELETEALLITEMS, 0, DWord(0))
  7995. Function ListView_DeleteAllItems( hwnd : hwnd):BOOL;
  7996. Begin
  7997. Result:=BOOL(SendMessage((hwnd), LVM_DELETEALLITEMS, 0, LPARAM(0)))
  7998. end;
  7999. // Macro 51
  8000. // #define ListView_GetCallbackMask(hwnd) \
  8001. // (BOOL)SNDMSG((hwnd), LVM_GETCALLBACKMASK, 0, 0)
  8002. Function ListView_GetCallbackMask( hwnd : hwnd):BOOL;
  8003. Begin
  8004. Result:=BOOL(SendMessage((hwnd), LVM_GETCALLBACKMASK, 0, 0))
  8005. end;
  8006. // Macro 52
  8007. // #define ListView_SetCallbackMask(hwnd, mask) \
  8008. // (BOOL)SNDMSG((hwnd), LVM_SETCALLBACKMASK, (WPARAM)(UINT)(mask), 0)
  8009. Function ListView_SetCallbackMask( hwnd : hwnd; mask : UINT):BOOL;
  8010. Begin
  8011. Result:=BOOL(SendMessage((hwnd), LVM_SETCALLBACKMASK, mask, 0))
  8012. end;
  8013. // Macro 53
  8014. // #define ListView_GetNextItem(hwnd, i, flags) \
  8015. // (int)SNDMSG((hwnd), LVM_GETNEXTITEM, (WPARAM)(int)(i), MAKELPARAM((flags), 0))
  8016. Function ListView_GetNextItem( hwnd : hwnd; i : cint; flags : cint):cint;
  8017. Begin
  8018. Result:=cint(SendMessage((hwnd), LVM_GETNEXTITEM, (i), MAKELPARAM((flags), 0)))
  8019. end;
  8020. // Macro 54
  8021. // #define ListView_FindItem(hwnd, iStart, plvfi) \
  8022. // (int)SNDMSG((hwnd), LVM_FINDITEM, (WPARAM)(int)(iStart), (LPARAM)(const LV_FINDINFO *)(plvfi))
  8023. Function ListView_FindItem( hwnd : hwnd; iStart : cint;const plvfi : LV_FINDINFO ):cint;
  8024. Begin
  8025. Result:=cint(SendMessage((hwnd), LVM_FINDITEM, iStart, LPARAM(@plvfi)))
  8026. end;
  8027. // Macro 55
  8028. // #define ListView_GetItemRect(hwnd, i, prc, code) \
  8029. // (BOOL)SNDMSG((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i), \
  8030. // ((prc) ? (((RECT *)(prc))->left = (code),(LPARAM)(RECT *)(prc)) : (LPARAM)(RECT *)NULL))
  8031. Function ListView_GetItemRect( hwnd : hwnd; i : cint;var prc : TRect;code : cint):BOOL;
  8032. begin
  8033. if assigned(@prc) then
  8034. begin
  8035. prc.left:=Code;
  8036. Result:=BOOL(SendMessage(hWnd,LVM_GETITEMRECT,i,LPARAM(@prc)));
  8037. end
  8038. else
  8039. Result:=BOOL(SendMessage(hWnd,LVM_GETITEMRECT,i,0));
  8040. end;
  8041. // Macro 56
  8042. // #define ListView_SetItemPosition(hwndLV, i, x, y) \
  8043. // (BOOL)SNDMSG((hwndLV), LVM_SETITEMPOSITION, (WPARAM)(int)(i), MAKELPARAM((x), (y)))
  8044. Function ListView_SetItemPosition( hwndLV : hwnd; i : cint; x : cint ; y : cint ):BOOL;
  8045. Begin
  8046. Result:=BOOL(SendMessage((hwndLV), LVM_SETITEMPOSITION, (i), MAKELPARAM((x), (y))))
  8047. end;
  8048. // Macro 57
  8049. // #define ListView_GetItemPosition(hwndLV, i, ppt) \
  8050. // (BOOL)SNDMSG((hwndLV), LVM_GETITEMPOSITION, (WPARAM)(int)(i), (LPARAM)(POINT *)(ppt))
  8051. Function ListView_GetItemPosition( hwndLV : hwnd; i : cint;var ppt : POINT ):BOOL;
  8052. Begin
  8053. Result:=BOOL(SendMessage((hwndLV), LVM_GETITEMPOSITION, (i), LPAram(@ppt)))
  8054. end;
  8055. // Macro 58
  8056. // #define ListView_GetStringWidth(hwndLV, psz) \
  8057. // (int)SNDMSG((hwndLV), LVM_GETSTRINGWIDTH, 0, (LPARAM)(LPCTSTR)(psz))
  8058. Function ListView_GetStringWidth( hwndLV : hwnd; psz : LPCTSTR):cint;
  8059. Begin
  8060. Result:=cint(SendMessage((hwndLV), LVM_GETSTRINGWIDTH, 0, LPARAM(psz)))
  8061. end;
  8062. // Macro 59
  8063. // #define ListView_HitTest(hwndLV, pinfo) \
  8064. // (int)SNDMSG((hwndLV), LVM_HITTEST, 0, (LPARAM)(LV_HITTESTINFO *)(pinfo))
  8065. Function ListView_HitTest( hwndLV : hwnd;var pinfo : LV_HITTESTINFO ):cint;
  8066. Begin
  8067. Result:=cint(SendMessage((hwndLV), LVM_HITTEST, 0, LParam(@pinfo)))
  8068. end;
  8069. // Macro 60
  8070. // #define ListView_EnsureVisible(hwndLV, i, fPartialOK) \
  8071. // (BOOL)SNDMSG((hwndLV), LVM_ENSUREVISIBLE, (WPARAM)(int)(i), MAKELPARAM((fPartialOK), 0))
  8072. Function ListView_EnsureVisible( hwndLV : hwnd; i : cint; fPartialOK : cint ):BOOL;inline;
  8073. Begin
  8074. Result:=BOOL(SendMessage((hwndLV), LVM_ENSUREVISIBLE, (i), MAKELPARAM((fPartialOK), 0)))
  8075. end;
  8076. Function ListView_EnsureVisible( hwndLV : hwnd; i : cint; fPartialOK : BOOL ):BOOL;inline;
  8077. Begin
  8078. Result:=BOOL(SendMessage((hwndLV), LVM_ENSUREVISIBLE, (i), LPARAM(fPartialOK)))
  8079. end;
  8080. // Macro 61
  8081. // #define ListView_Scroll(hwndLV, dx, dy) \
  8082. // (BOOL)SNDMSG((hwndLV), LVM_SCROLL, (WPARAM)(int)(dx), (LPARAM)(int)(dy))
  8083. Function ListView_Scroll( hwndLV : hwnd; dx : cint; dy : cint):BOOL;
  8084. Begin
  8085. Result:=BOOL(SendMessage((hwndLV), LVM_SCROLL, dx, dy))
  8086. end;
  8087. // Macro 62
  8088. // #define ListView_RedrawItems(hwndLV, iFirst, iLast) \
  8089. // (BOOL)SNDMSG((hwndLV), LVM_REDRAWITEMS, (WPARAM)(int)(iFirst), (LPARAM)(int)(iLast))
  8090. Function ListView_RedrawItems( hwndLV : hwnd; iFirst : cint; iLast : cint):BOOL;
  8091. Begin
  8092. Result:=BOOL(SendMessage((hwndLV), LVM_REDRAWITEMS, iFirst, iLast))
  8093. end;
  8094. // Macro 63
  8095. // #define ListView_Arrange(hwndLV, code) \
  8096. // (BOOL)SNDMSG((hwndLV), LVM_ARRANGE, (WPARAM)(UINT)(code), DWord(0))
  8097. Function ListView_Arrange( hwndLV : hwnd; code : UINT):BOOL;
  8098. Begin
  8099. Result:=BOOL(SendMessage((hwndLV), LVM_ARRANGE, code, LPARAM(0)))
  8100. end;
  8101. // Macro 64
  8102. // #define ListView_EditLabel(hwndLV, i) \
  8103. // (HWND)SNDMSG((hwndLV), LVM_EDITLABEL, (WPARAM)(int)(i), DWord(0))
  8104. Function ListView_EditLabel( hwndLV : hwnd; i : cint):HWND;
  8105. Begin
  8106. Result:=HWND(SendMessage((hwndLV), LVM_EDITLABEL, (i), LPARAM(0)))
  8107. end;
  8108. // Macro 65
  8109. // #define ListView_GetEditControl(hwndLV) \
  8110. // (HWND)SNDMSG((hwndLV), LVM_GETEDITCONTROL, 0, DWord(0))
  8111. Function ListView_GetEditControl( hwndLV : hwnd):HWND;
  8112. Begin
  8113. Result:=HWND(SendMessage((hwndLV), LVM_GETEDITCONTROL, 0, LPARAM(0)))
  8114. end;
  8115. // Macro 66
  8116. // #define ListView_GetColumn(hwnd, iCol, pcol) \
  8117. // (BOOL)SNDMSG((hwnd), LVM_GETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(LV_COLUMN *)(pcol))
  8118. Function ListView_GetColumn( hwnd : hwnd; iCol : cint;var pcol : LV_COLUMN ):BOOL;
  8119. Begin
  8120. Result:=BOOL(SendMessage((hwnd), LVM_GETCOLUMN, iCol, LPARAM(@pcol)))
  8121. end;
  8122. // Macro 67
  8123. // #define ListView_SetColumn(hwnd, iCol, pcol) \
  8124. // (BOOL)SNDMSG((hwnd), LVM_SETCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN *)(pcol))
  8125. Function ListView_SetColumn( hwnd : hwnd; iCol : cint; Const pcol : LV_COLUMN ):BOOL;
  8126. Begin
  8127. Result:=BOOL(SendMessage((hwnd), LVM_SETCOLUMN, iCol, LPARAM(@pcol)))
  8128. end;
  8129. // Macro 68
  8130. // #define ListView_InsertColumn(hwnd, iCol, pcol) \
  8131. // (int)SNDMSG((hwnd), LVM_INSERTCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN *)(pcol))
  8132. Function ListView_InsertColumn( hwnd : hwnd; iCol : cint;const pcol : LV_COLUMN ):cint;
  8133. Begin
  8134. Result:=cint(SendMessage((hwnd), LVM_INSERTCOLUMN, iCol, LPARAM(@pcol)))
  8135. end;
  8136. // Macro 69
  8137. // #define ListView_DeleteColumn(hwnd, iCol) \
  8138. // (BOOL)SNDMSG((hwnd), LVM_DELETECOLUMN, (WPARAM)(int)(iCol), 0)
  8139. Function ListView_DeleteColumn( hwnd : hwnd; iCol : cint):BOOL;
  8140. Begin
  8141. Result:=BOOL(SendMessage((hwnd), LVM_DELETECOLUMN, iCol, 0))
  8142. end;
  8143. // Macro 70
  8144. // #define ListView_GetColumnWidth(hwnd, iCol) \
  8145. // (int)SNDMSG((hwnd), LVM_GETCOLUMNWIDTH, (WPARAM)(int)(iCol), 0)
  8146. Function ListView_GetColumnWidth( hwnd : hwnd; iCol : cint):cint;
  8147. Begin
  8148. Result:=cint(SendMessage((hwnd), LVM_GETCOLUMNWIDTH, iCol, 0))
  8149. end;
  8150. // Macro 71
  8151. // #define ListView_SetColumnWidth(hwnd, iCol, cx) \
  8152. // (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNWIDTH, (WPARAM)(int)(iCol), MAKELPARAM((cx), 0))
  8153. Function ListView_SetColumnWidth( hwnd : hwnd; iCol : cint; cx :cint ):BOOL;
  8154. Begin
  8155. Result:=BOOL(SendMessage((hwnd), LVM_SETCOLUMNWIDTH, iCol, MAKELPARAM((cx), 0)))
  8156. end;
  8157. // Macro 72
  8158. // #define ListView_GetHeader(hwnd)\
  8159. // (HWND)SNDMSG((hwnd), LVM_GETHEADER, 0, DWord(0))
  8160. Function ListView_GetHeader( hwnd : hwnd):HWND;
  8161. Begin
  8162. Result:=Windows.HWND(SendMessage((hwnd), LVM_GETHEADER, 0, LPARAM(0)));
  8163. end;
  8164. // Macro 73
  8165. // #define ListView_CreateDragImage(hwnd, i, lpptUpLeft) \
  8166. // (HIMAGELIST)SNDMSG((hwnd), LVM_CREATEDRAGIMAGE, (WPARAM)(int)(i), (LPARAM)(LPPOINT)(lpptUpLeft))
  8167. Function ListView_CreateDragImage( hwnd : hwnd; i : cint; lpptUpLeft : LPPOINT):HIMAGELIST;inline;
  8168. Begin
  8169. Result:=HIMAGELIST(SendMessage((hwnd), LVM_CREATEDRAGIMAGE, WPARAM(i), LPARAM(lpptUpLeft)))
  8170. end;
  8171. Function ListView_CreateDragImage( hwnd : hwnd; i : cint; const lpptUpLeft : POINT):HIMAGELIST;inline;
  8172. Begin
  8173. Result:=HIMAGELIST(SendMessage((hwnd), LVM_CREATEDRAGIMAGE, WPARAM(i), LPARAM(@lpptUpLeft)))
  8174. end;
  8175. // Macro 74
  8176. // #define ListView_GetViewRect(hwnd, prc) \
  8177. // (BOOL)SNDMSG((hwnd), LVM_GETVIEWRECT, 0, (LPARAM)(RECT *)(prc))
  8178. Function ListView_GetViewRect( hwnd : hwnd;var prc : RECT ):BOOL;
  8179. Begin
  8180. Result:=BOOL(SendMessage((hwnd), LVM_GETVIEWRECT, 0, LPARAM(@prc)))
  8181. end;
  8182. // Macro 75
  8183. // #define ListView_GetTextColor(hwnd) \
  8184. // (COLORREF)SNDMSG((hwnd), LVM_GETTEXTCOLOR, 0, DWord(0))
  8185. Function ListView_GetTextColor( hwnd : hwnd):COLORREF;
  8186. Begin
  8187. Result:=COLORREF(SendMessage((hwnd), LVM_GETTEXTCOLOR, 0, LPARAM(0)))
  8188. end;
  8189. // Macro 76
  8190. // #define ListView_SetTextColor(hwnd, clrText) \
  8191. // (BOOL)SNDMSG((hwnd), LVM_SETTEXTCOLOR, 0, (LPARAM)(COLORREF)(clrText))
  8192. Function ListView_SetTextColor( hwnd : hwnd; clrText : COLORREF):BOOL;
  8193. Begin
  8194. Result:=BOOL(SendMessage((hwnd), LVM_SETTEXTCOLOR, 0, clrText))
  8195. end;
  8196. // Macro 77
  8197. // #define ListView_GetTextBkColor(hwnd) \
  8198. // (COLORREF)SNDMSG((hwnd), LVM_GETTEXTBKCOLOR, 0, DWord(0))
  8199. Function ListView_GetTextBkColor( hwnd : hwnd):COLORREF;
  8200. Begin
  8201. Result:=COLORREF(SendMessage((hwnd), LVM_GETTEXTBKCOLOR, 0, LPARAM(0)))
  8202. end;
  8203. // Macro 78
  8204. // #define ListView_SetTextBkColor(hwnd, clrTextBk) \
  8205. // (BOOL)SNDMSG((hwnd), LVM_SETTEXTBKCOLOR, 0, (LPARAM)(COLORREF)(clrTextBk))
  8206. Function ListView_SetTextBkColor( hwnd : hwnd; clrTextBk : COLORREF):BOOL;
  8207. Begin
  8208. Result:=BOOL(SendMessage((hwnd), LVM_SETTEXTBKCOLOR, 0, clrTextBk))
  8209. end;
  8210. // Macro 79
  8211. // #define ListView_GetTopIndex(hwndLV) \
  8212. // (int)SNDMSG((hwndLV), LVM_GETTOPINDEX, 0, 0)
  8213. Function ListView_GetTopIndex( hwndLV : hwnd):cint;
  8214. Begin
  8215. Result:=cint(SendMessage((hwndLV), LVM_GETTOPINDEX, 0, 0))
  8216. end;
  8217. // Macro 80
  8218. // #define ListView_GetCountPerPage(hwndLV) \
  8219. // (int)SNDMSG((hwndLV), LVM_GETCOUNTPERPAGE, 0, 0)
  8220. Function ListView_GetCountPerPage( hwndLV : hwnd):cint;
  8221. Begin
  8222. Result:=cint(SendMessage((hwndLV), LVM_GETCOUNTPERPAGE, 0, 0))
  8223. end;
  8224. // Macro 81
  8225. //
  8226. // #define ListView_GetOrigin(hwndLV, ppt) \
  8227. // (BOOL)SNDMSG((hwndLV), LVM_GETORIGIN, (WPARAM)0, (LPARAM)(POINT *)(ppt))
  8228. Function ListView_GetOrigin( hwndLV : hwnd;var ppt : POINT ):BOOL;
  8229. Begin
  8230. Result:=BOOL(SendMessage((hwndLV), LVM_GETORIGIN, WPARAM(0), LPARAM(@ppt)))
  8231. end;
  8232. // Macro 82
  8233. // #define ListView_Update(hwndLV, i) \
  8234. // (BOOL)SNDMSG((hwndLV), LVM_UPDATE, (WPARAM)(i), DWord(0))
  8235. Function ListView_Update( hwndLV : hwnd; i : WPARAM):BOOL;
  8236. Begin
  8237. Result:=BOOL(SendMessage((hwndLV), LVM_UPDATE, (i), LPARAM(0)))
  8238. end;
  8239. // Macro 83
  8240. // #define ListView_SetItemState(hwndLV, i, data, mask) \
  8241. // { LV_ITEM _ms_lvi;\
  8242. // _ms_lvi.stateMask = mask;\
  8243. // _ms_lvi.state = data;\
  8244. // SNDMSG((hwndLV), LVM_SETITEMSTATE, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi);\
  8245. // }
  8246. Procedure ListView_SetItemState(hwndLV :hwnd; i :cint ;data,mask:UINT);
  8247. Var _ms_lvi : LV_ITEM;
  8248. Begin
  8249. _ms_lvi.stateMask:=mask;
  8250. _ms_lvi.state:=data;
  8251. SendMessage(hwndLV, LVM_SETITEMSTATE, i,LPARAM(@_ms_lvi));
  8252. end;
  8253. // Macro 84
  8254. // #define ListView_SetCheckState(hwndLV, i, fCheck) \
  8255. // ListView_SetItemState(hwndLV, i, INDEXTOSTATEIMAGEMASK((fCheck)?2:1), LVIS_STATEIMAGEMASK)
  8256. Procedure ListView_SetCheckState( hwndLV : hwnd; i : cint ; fCheck : BOOL );
  8257. var j:longint;
  8258. Begin
  8259. IF not fCheck Then // (or inc(longint(fCheck)) if you like it dirty)
  8260. j:=1
  8261. Else
  8262. j:=2;
  8263. ListView_SetItemState(hwndLV, i, INDEXTOSTATEIMAGEMASK(j), LVIS_STATEIMAGEMASK);
  8264. end;
  8265. // Macro 85
  8266. // #define ListView_GetItemState(hwndLV, i, mask) \
  8267. // (UINT)SNDMSG((hwndLV), LVM_GETITEMSTATE, (WPARAM)(i), (LPARAM)(mask))
  8268. Function ListView_GetItemState( hwndLV : hwnd; i : WPARAM; mask : LPARAM):UINT;
  8269. Begin
  8270. Result:=UINT(SendMessage((hwndLV), LVM_GETITEMSTATE, (i), mask))
  8271. end;
  8272. // Macro 86
  8273. // #define ListView_GetCheckState(hwndLV, i) \
  8274. // ((((UINT)(SNDMSG((hwndLV), LVM_GETITEMSTATE, (WPARAM)(i), LVIS_STATEIMAGEMASK))) >> 12) -1)
  8275. Function ListView_GetCheckState( hwndLV : hwnd; i : WPARAM):UINT;
  8276. Begin
  8277. Result:=(SendMessage((hwndLV), LVM_GETITEMSTATE, (i), LVIS_STATEIMAGEMASK) shr 12) -1;
  8278. end;
  8279. // Macro 87
  8280. // #define ListView_GetItemText(hwndLV, i, iSubItem_, pszText_, cchTextMax_) \
  8281. // { LV_ITEM _ms_lvi;\
  8282. // _ms_lvi.iSubItem = iSubItem_;\
  8283. // _ms_lvi.cchTextMax = cchTextMax_;\
  8284. // _ms_lvi.pszText = pszText_;\
  8285. // SNDMSG((hwndLV), LVM_GETITEMTEXT, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi);\
  8286. // }
  8287. Procedure ListView_GetItemText(hwndLV:hwnd; i : WPARAM ;iSubItem : cint ;pszText : Pointer;cchTextMax :cint);
  8288. Var _ms_lvi : LV_ITEM;
  8289. Begin
  8290. _ms_lvi.iSubItem := iSubItem;
  8291. _ms_lvi.cchTextMax := cchTextMax;
  8292. _ms_lvi.pszText := pszText; // unicode dependant!
  8293. SendMessage(hwndLV, LVM_GETITEMTEXT, i, LPARAM(@_ms_LVI));
  8294. end;
  8295. // Macro 88
  8296. // #define ListView_SetItemText(hwndLV, i, iSubItem_, pszText_) \
  8297. // { LV_ITEM _ms_lvi;\
  8298. // _ms_lvi.iSubItem = iSubItem_;\
  8299. // _ms_lvi.pszText = pszText_;\
  8300. // SNDMSG((hwndLV), LVM_SETITEMTEXT, (WPARAM)(i), (LPARAM)(LV_ITEM *)&_ms_lvi);\
  8301. // }
  8302. Procedure ListView_SetItemText(hwndLV:hwnd; i : WPARAM ;iSubItem : cint ;pszText : Pointer);
  8303. Var _ms_lvi : LV_ITEM;
  8304. Begin
  8305. _ms_lvi.iSubItem := iSubItem;
  8306. _ms_lvi.pszText := pszText; // unicode dependant!
  8307. SendMessage(hwndLV, LVM_SETITEMTEXT, i, LPARAM(@_ms_lvi));
  8308. End;
  8309. // Macro 89
  8310. // #define ListView_SetItemCount(hwndLV, cItems) \
  8311. // SNDMSG((hwndLV), LVM_SETITEMCOUNT, (WPARAM)(cItems), 0)
  8312. Procedure ListView_SetItemCount( hwndLV : hwnd; cItems : WPARAM);
  8313. Begin
  8314. SendMessage((hwndLV), LVM_SETITEMCOUNT, cItems, 0)
  8315. end;
  8316. // Macro 90
  8317. // #define ListView_SetItemCountEx(hwndLV, cItems, dwFlags) \
  8318. // SNDMSG((hwndLV), LVM_SETITEMCOUNT, (WPARAM)(cItems), (LPARAM)(dwFlags))
  8319. Procedure ListView_SetItemCountEx( hwndLV : hwnd; cItems : WPARAM; dwFlags : LPARAM);
  8320. Begin
  8321. SendMessage((hwndLV), LVM_SETITEMCOUNT, cItems, dwFlags)
  8322. end;
  8323. // Macro 91
  8324. // #define ListView_SortItems(hwndLV, _pfnCompare, _lPrm) \
  8325. // (BOOL)SNDMSG((hwndLV), LVM_SORTITEMS, (WPARAM)(LPARAM)(_lPrm), \
  8326. // (LPARAM)(PFNLVCOMPARE)(_pfnCompare))
  8327. Function ListView_SortItems( hwndLV : hwnd;pfnCompare : PFNLVCOMPARE; lPrm : LPARAM):BOOL;
  8328. Begin
  8329. Result:=BOOL(SendMessage((hwndLV), LVM_SORTITEMS, lPrm, LPARAM(@pfncompare)));
  8330. end;
  8331. // Macro 92
  8332. // #define ListView_SetItemPosition32(hwndLV, i, x0, y0) \
  8333. // { POINT ptNewPos; \
  8334. // ptNewPos.x = x0; ptNewPos.y = y0; \
  8335. // SNDMSG((hwndLV), LVM_SETITEMPOSITION32, (WPARAM)(int)(i), (LPARAM)&ptNewPos); \
  8336. // }
  8337. Procedure ListView_SetItemPosition32(hwndLV:hwnd; i:cint;x0,y0:long);
  8338. Var ptNewPos:POINT;
  8339. Begin
  8340. ptNewPos.X:=x0; ptNewPos.Y:=y0;
  8341. SendMessage(hwndlv, LVM_SETITEMPOSITION32, I,LPARAM(@ptNewPos));
  8342. end;
  8343. // Macro 93
  8344. // #define ListView_GetSelectedCount(hwndLV) \
  8345. // (UINT)SNDMSG((hwndLV), LVM_GETSELECTEDCOUNT, 0, DWord(0))
  8346. Function ListView_GetSelectedCount( hwndLV : hwnd):UINT;
  8347. Begin
  8348. Result:=SendMessage(hwndLV, LVM_GETSELECTEDCOUNT, 0, LPARAM(0));
  8349. end;
  8350. // Macro 94
  8351. // #define ListView_GetItemSpacing(hwndLV, fSmall) \
  8352. // (DWORD)SNDMSG((hwndLV), LVM_GETITEMSPACING, fSmall, DWord(0))
  8353. Function ListView_GetItemSpacing( hwndLV : hwnd; fSmall : cint ):DWORD;
  8354. Begin
  8355. Result:=LPARAM(SendMessage((hwndLV), LVM_GETITEMSPACING, fSmall, LPARAM(0)));
  8356. end;
  8357. // Macro 95
  8358. // #define ListView_GetISearchString(hwndLV, lpsz) \
  8359. // (BOOL)SNDMSG((hwndLV), LVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)(lpsz))
  8360. Function ListView_GetISearchString( hwndLV : hwnd; lpsz : LPTSTR):BOOL;
  8361. Begin
  8362. Result:=BOOL(SendMessage((hwndLV), LVM_GETISEARCHSTRING, 0, LPARAM(lpsz)))
  8363. end;
  8364. // Macro 96
  8365. // #define ListView_SetIconSpacing(hwndLV, cx, cy) \
  8366. // (DWORD)SNDMSG((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy))
  8367. Function ListView_SetIconSpacing( hwndLV : hwnd; cx,cy : cint ):DWORD;
  8368. Begin
  8369. Result:=DWORD(SendMessage((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy)))
  8370. end;
  8371. // Macro 97
  8372. // #define ListView_SetExtendedListViewStyle(hwndLV, dw)\
  8373. // (DWORD)SNDMSG((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw)
  8374. Function ListView_SetExtendedListViewStyle( hwndLV : hwnd; dw :cint ):DWORD;
  8375. Begin
  8376. Result:=DWORD(SendMessage((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dw))
  8377. end;
  8378. // Macro 98
  8379. // #define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw)\
  8380. // (DWORD)SNDMSG((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, dwMask, dw)
  8381. Function ListView_SetExtendedListViewStyleEx( hwndLV : hwnd; dwMask, dw : cint ):DWORD;
  8382. Begin
  8383. Result:=DWORD(SendMessage((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, dwMask, dw))
  8384. end;
  8385. // Macro 99
  8386. // #define ListView_GetExtendedListViewStyle(hwndLV)\
  8387. // (DWORD)SNDMSG((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
  8388. Function ListView_GetExtendedListViewStyle( hwndLV : hwnd):DWORD;
  8389. Begin
  8390. Result:=DWORD(SendMessage((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0))
  8391. end;
  8392. // Macro 100
  8393. // #define ListView_GetSubItemRect(hwnd, iItem, iSubItem, code, prc) \
  8394. // (BOOL)SNDMSG((hwnd), LVM_GETSUBITEMRECT, (WPARAM)(int)(iItem), \
  8395. // ((prc) ? ((((LPRECT)(prc))->top = iSubItem), (((LPRECT)(prc))->left = code), (LPARAM)(prc)) : (LPARAM)(LPRECT)NULL))
  8396. Function ListView_GetSubItemRect( hwnd : hwnd; iItem : cint;iSubItem, code :cint ;prc:LPRECT):BOOL;
  8397. VAR LastParam : LPRECT;
  8398. Begin
  8399. if prc<>nil then
  8400. begin
  8401. prc^.top:=iSubItem;
  8402. prc^.left:=code;
  8403. lastparam:=prc;
  8404. end
  8405. else
  8406. lastparam:=nil;
  8407. Result:=bool(SendMessage((hwnd), LVM_GETSUBITEMRECT, iItem, LPARAM(lastparam)));
  8408. End;
  8409. // Macro 101
  8410. // #define ListView_SubItemHitTest(hwnd, plvhti) \
  8411. // (int)SNDMSG((hwnd), LVM_SUBITEMHITTEST, 0, (LPARAM)(LPLVHITTESTINFO)(plvhti))
  8412. Function ListView_SubItemHitTest( hwnd : hwnd; plvhti : LPLVHITTESTINFO):cint;
  8413. Begin
  8414. Result:=cint(SendMessage((hwnd), LVM_SUBITEMHITTEST, 0, LParam(plvhti)))
  8415. end;
  8416. // Macro 102
  8417. // #define ListView_SetColumnOrderArray(hwnd, iCount, pi) \
  8418. // (BOOL)SNDMSG((hwnd), LVM_SETCOLUMNORDERARRAY, (WPARAM)(iCount), (LPARAM)(LPINT)(pi))
  8419. Function ListView_SetColumnOrderArray( hwnd : hwnd; iCount : WPARAM; pi : LPINT):BOOL;
  8420. Begin
  8421. Result:=BOOL(SendMessage((hwnd), LVM_SETCOLUMNORDERARRAY, iCount, LPARAM(pi)));
  8422. end;
  8423. // Macro 103
  8424. // #define ListView_GetColumnOrderArray(hwnd, iCount, pi) \
  8425. // (BOOL)SNDMSG((hwnd), LVM_GETCOLUMNORDERARRAY, (WPARAM)(iCount), (LPARAM)(LPINT)(pi))
  8426. Function ListView_GetColumnOrderArray( hwnd : hwnd; iCount : WPARAM; pi : LPINT):BOOL;
  8427. Begin
  8428. Result:=BOOL(SendMessage((hwnd), LVM_GETCOLUMNORDERARRAY, iCount, LPARAM(pi)))
  8429. end;
  8430. // Macro 104
  8431. // #define ListView_SetHotItem(hwnd, i) \
  8432. // (int)SNDMSG((hwnd), LVM_SETHOTITEM, (WPARAM)(i), 0)
  8433. Function ListView_SetHotItem( hwnd : hwnd; i : WPARAM):cint;
  8434. Begin
  8435. Result:=cint(SendMessage((hwnd), LVM_SETHOTITEM, (i), 0))
  8436. end;
  8437. // Macro 105
  8438. // #define ListView_GetHotItem(hwnd) \
  8439. // (int)SNDMSG((hwnd), LVM_GETHOTITEM, 0, 0)
  8440. Function ListView_GetHotItem( hwnd : hwnd):cint;
  8441. Begin
  8442. Result:=cint(SendMessage((hwnd), LVM_GETHOTITEM, 0, 0))
  8443. end;
  8444. // Macro 106
  8445. // #define ListView_SetHotCursor(hwnd, hcur) \
  8446. // (HCURSOR)SNDMSG((hwnd), LVM_SETHOTCURSOR, 0, (LPARAM)(hcur))
  8447. Function ListView_SetHotCursor( hwnd : hwnd; hcur : LPARAM):HCURSOR;
  8448. Begin
  8449. Result:=HCURSOR(SendMessage((hwnd), LVM_SETHOTCURSOR, 0, hcur))
  8450. end;
  8451. // Macro 107
  8452. // #define ListView_GetHotCursor(hwnd) \
  8453. // (HCURSOR)SNDMSG((hwnd), LVM_GETHOTCURSOR, 0, 0)
  8454. Function ListView_GetHotCursor( hwnd : hwnd):HCURSOR;
  8455. Begin
  8456. Result:=HCURSOR(SendMessage((hwnd), LVM_GETHOTCURSOR, 0, 0))
  8457. end;
  8458. // Macro 108
  8459. // #define ListView_ApproximateViewRect(hwnd, iWidth, iHeight, iCount) \
  8460. // (DWORD)SNDMSG((hwnd), LVM_APPROXIMATEVIEWRECT, iCount, MAKELPARAM(iWidth, iHeight))
  8461. Function ListView_ApproximateViewRect( hwnd : hwnd; iWidth, iHeight, iCount : cint ):DWORD;
  8462. Begin
  8463. Result:=DWORD(SendMessage((hwnd), LVM_APPROXIMATEVIEWRECT, iCount, MAKELPARAM(iWidth, iHeight)));
  8464. end;
  8465. // Macro 109
  8466. // #define ListView_SetWorkAreas(hwnd, nWorkAreas, prc) \
  8467. // (BOOL)SNDMSG((hwnd), LVM_SETWORKAREAS, (WPARAM)(int)(nWorkAreas), (LPARAM)(RECT *)(prc))
  8468. Function ListView_SetWorkAreas( hwnd : hwnd; nWorkAreas : cint;var prc : RECT ):BOOL;inline;
  8469. Begin
  8470. Result:=BOOL(SendMessage((hwnd), LVM_SETWORKAREAS, nWorkAreas, LPARAM(@prc)))
  8471. end;
  8472. Function ListView_SetWorkAreas( hwnd : hwnd; nWorkAreas : cint; prc : PRECT ):BOOL;inline;
  8473. Begin
  8474. Result:=BOOL(SendMessage((hwnd), LVM_SETWORKAREAS, nWorkAreas, LPARAM(prc)))
  8475. end;
  8476. // Macro 110
  8477. // #define ListView_GetWorkAreas(hwnd, nWorkAreas, prc) \
  8478. // (BOOL)SNDMSG((hwnd), LVM_GETWORKAREAS, (WPARAM)(int)(nWorkAreas), (LPARAM)(RECT *)(prc))
  8479. Function ListView_GetWorkAreas( hwnd : hwnd; nWorkAreas : cint;var prc : RECT ):BOOL;
  8480. Begin
  8481. Result:=BOOL(SendMessage((hwnd), LVM_GETWORKAREAS, nWorkAreas, LPARAM(@prc)))
  8482. end;
  8483. // Macro 111
  8484. // #define ListView_GetNumberOfWorkAreas(hwnd, pnWorkAreas) \
  8485. // (BOOL)SNDMSG((hwnd), LVM_GETNUMBEROFWORKAREAS, 0, (LPARAM)(UINT *)(pnWorkAreas))
  8486. Function ListView_GetNumberOfWorkAreas( hwnd : hwnd;var pnWorkAreas : UINT ):BOOL;
  8487. Begin
  8488. Result:=BOOL(SendMessage((hwnd), LVM_GETNUMBEROFWORKAREAS, 0, LPARAM(@pnWorkAreas)))
  8489. end;
  8490. // Macro 112
  8491. // #define ListView_GetSelectionMark(hwnd) \
  8492. // (int)SNDMSG((hwnd), LVM_GETSELECTIONMARK, 0, 0)
  8493. Function ListView_GetSelectionMark( hwnd : hwnd):cint;
  8494. Begin
  8495. Result:=cint(SendMessage((hwnd), LVM_GETSELECTIONMARK, 0, 0))
  8496. end;
  8497. // Macro 113
  8498. // #define ListView_SetSelectionMark(hwnd, i) \
  8499. // (int)SNDMSG((hwnd), LVM_SETSELECTIONMARK, 0, (LPARAM)(i))
  8500. Function ListView_SetSelectionMark( hwnd : hwnd; i : LPARAM):cint;
  8501. Begin
  8502. Result:=cint(SendMessage((hwnd), LVM_SETSELECTIONMARK, 0, (i)))
  8503. end;
  8504. // Macro 114
  8505. // #define ListView_SetHoverTime(hwndLV, dwHoverTimeMs)\
  8506. // (DWORD)SNDMSG((hwndLV), LVM_SETHOVERTIME, 0, (LPARAM)(dwHoverTimeMs))
  8507. Function ListView_SetHoverTime( hwndLV : hwnd; dwHoverTimeMs : LPARAM):DWORD;
  8508. Begin
  8509. Result:=DWORD(SendMessage((hwndLV), LVM_SETHOVERTIME, 0, dwHoverTimeMs))
  8510. end;
  8511. // Macro 115
  8512. // #define ListView_GetHoverTime(hwndLV)\
  8513. // (DWORD)SNDMSG((hwndLV), LVM_GETHOVERTIME, 0, 0)
  8514. Function ListView_GetHoverTime( hwndLV : hwnd):DWORD;
  8515. Begin
  8516. Result:=DWORD(SendMessage((hwndLV), LVM_GETHOVERTIME, 0, 0))
  8517. end;
  8518. // Macro 116
  8519. // #define ListView_SetToolTips(hwndLV, hwndNewHwnd)\
  8520. // (HWND)SNDMSG((hwndLV), LVM_SETTOOLTIPS, (WPARAM)(hwndNewHwnd), 0)
  8521. Function ListView_SetToolTips( hwndLV : hwnd; hwndNewHwnd : WPARAM):HWND;
  8522. Begin
  8523. Result:=HWND(SendMessage((hwndLV), LVM_SETTOOLTIPS, hwndNewHwnd, 0))
  8524. end;
  8525. // Macro 117
  8526. // #define ListView_GetToolTips(hwndLV)\
  8527. // (HWND)SNDMSG((hwndLV), LVM_GETTOOLTIPS, 0, 0)
  8528. Function ListView_GetToolTips( hwndLV : hwnd):HWND;
  8529. Begin
  8530. Result:=HWND(SendMessage((hwndLV), LVM_GETTOOLTIPS, 0, 0))
  8531. end;
  8532. // Macro 118
  8533. // #define ListView_SortItemsEx(hwndLV, _pfnCompare, _lPrm) \
  8534. // (BOOL)SNDMSG((hwndLV), LVM_SORTITEMSEX, (WPARAM)(LPARAM)(_lPrm), (LPARAM)(PFNLVCOMPARE)(_pfnCompare))
  8535. Function ListView_SortItemsEx( hwndLV : hwnd; _pfnCompare : PFNLVCOMPARE; _lPrm : LPARAM):BOOL;
  8536. Begin
  8537. Result:=BOOL(SendMessage((hwndLV), LVM_SORTITEMSEX, _lPrm, LPAram(@_pfnCompare)))
  8538. end;
  8539. {$ifdef win32xp}
  8540. // Macro 119
  8541. // #define ListView_SetSelectedColumn(hwnd, iCol) \
  8542. // SNDMSG((hwnd), LVM_SETSELECTEDCOLUMN, (WPARAM)iCol, 0)
  8543. Procedure ListView_SetSelectedColumn( hwnd : hwnd; iCol : WPARAM);
  8544. Begin
  8545. SendMessage((hwnd), LVM_SETSELECTEDCOLUMN, iCol, 0)
  8546. end;
  8547. // Macro 120
  8548. // #define ListView_SetTileWidth(hwnd, cpWidth) \
  8549. // SNDMSG((hwnd), LVM_SETTILEWIDTH, (WPARAM)cpWidth, 0)
  8550. Procedure ListView_SetTileWidth( hwnd : hwnd; cpWidth : WPARAM);
  8551. Begin
  8552. SendMessage((hwnd), LVM_SETTILEWIDTH, cpWidth, 0)
  8553. end;
  8554. // Macro 121
  8555. // #define ListView_SetView(hwnd, iView) \
  8556. // (DWORD)SNDMSG((hwnd), LVM_SETVIEW, (WPARAM)(DWORD)iView, 0)
  8557. Function ListView_SetView( hwnd : hwnd; iView : DWORD):DWORD;
  8558. Begin
  8559. Result:=DWORD(SendMessage((hwnd), LVM_SETVIEW, iView, 0))
  8560. end;
  8561. // Macro 122
  8562. // #define ListView_GetView(hwnd) \
  8563. // (DWORD)SNDMSG((hwnd), LVM_GETVIEW, 0, 0)
  8564. Function ListView_GetView( hwnd : hwnd):DWORD;
  8565. Begin
  8566. Result:=DWORD(SendMessage((hwnd), LVM_GETVIEW, 0, 0))
  8567. end;
  8568. // Macro 123
  8569. // #define ListView_InsertGroup(hwnd, index, pgrp) \
  8570. // SNDMSG((hwnd), LVM_INSERTGROUP, (WPARAM)index, (LPARAM)pgrp)
  8571. Procedure ListView_InsertGroup( hwnd : hwnd; index : WPARAM; pgrp : LPARAM);
  8572. Begin
  8573. SendMessage((hwnd), LVM_INSERTGROUP, index, pgrp)
  8574. end;
  8575. // Macro 124
  8576. // #define ListView_SetGroupInfo(hwnd, iGroupId, pgrp) \
  8577. // SNDMSG((hwnd), LVM_SETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp)
  8578. Procedure ListView_SetGroupInfo( hwnd : hwnd; iGroupId : WPARAM; pgrp : LPARAM);
  8579. Begin
  8580. SendMessage((hwnd), LVM_SETGROUPINFO, iGroupId, pgrp)
  8581. end;
  8582. // Macro 125
  8583. // #define ListView_GetGroupInfo(hwnd, iGroupId, pgrp) \
  8584. // SNDMSG((hwnd), LVM_GETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp)
  8585. Procedure ListView_GetGroupInfo( hwnd : hwnd; iGroupId : WPARAM; pgrp : LPARAM);
  8586. Begin
  8587. SendMessage((hwnd), LVM_GETGROUPINFO, iGroupId, pgrp)
  8588. end;
  8589. // Macro 126
  8590. // #define ListView_RemoveGroup(hwnd, iGroupId) \
  8591. // SNDMSG((hwnd), LVM_REMOVEGROUP, (WPARAM)iGroupId, 0)
  8592. Procedure ListView_RemoveGroup( hwnd : hwnd; iGroupId : WPARAM);
  8593. Begin
  8594. SendMessage((hwnd), LVM_REMOVEGROUP, iGroupId, 0)
  8595. end;
  8596. // Macro 127
  8597. // #define ListView_MoveGroup(hwnd, iGroupId, toIndex) \
  8598. // SNDMSG((hwnd), LVM_MOVEGROUP, (WPARAM)iGroupId, (LPARAM)toIndex)
  8599. Procedure ListView_MoveGroup( hwnd : hwnd; iGroupId : WPARAM; toIndex : LPARAM);
  8600. Begin
  8601. SendMessage((hwnd), LVM_MOVEGROUP, iGroupId, toIndex)
  8602. end;
  8603. // Macro 128
  8604. // #define ListView_MoveItemToGroup(hwnd, idItemFrom, idGroupTo) \
  8605. // SNDMSG((hwnd), LVM_MOVEITEMTOGROUP, (WPARAM)idItemFrom, (LPARAM)idGroupTo)
  8606. Procedure ListView_MoveItemToGroup( hwnd : hwnd; idItemFrom : WPARAM; idGroupTo : LPARAM);
  8607. Begin
  8608. SendMessage((hwnd), LVM_MOVEITEMTOGROUP, idItemFrom, idGroupTo)
  8609. end;
  8610. // Macro 129
  8611. // #define ListView_SetGroupMetrics(hwnd, pGroupMetrics) \
  8612. // SNDMSG((hwnd), LVM_SETGROUPMETRICS, 0, (LPARAM)pGroupMetrics)
  8613. Procedure ListView_SetGroupMetrics( hwnd : hwnd; pGroupMetrics : LPARAM);
  8614. Begin
  8615. SendMessage((hwnd), LVM_SETGROUPMETRICS, 0, pGroupMetrics)
  8616. end;
  8617. // Macro 130
  8618. // #define ListView_GetGroupMetrics(hwnd, pGroupMetrics) \
  8619. // SNDMSG((hwnd), LVM_GETGROUPMETRICS, 0, (LPARAM)pGroupMetrics)
  8620. Procedure ListView_GetGroupMetrics( hwnd : hwnd; pGroupMetrics : LPARAM);
  8621. Begin
  8622. SendMessage((hwnd), LVM_GETGROUPMETRICS, 0, pGroupMetrics)
  8623. end;
  8624. // Macro 131
  8625. // #define ListView_EnableGroupView(hwnd, fEnable) \
  8626. // SNDMSG((hwnd), LVM_ENABLEGROUPVIEW, (WPARAM)fEnable, 0)
  8627. Procedure ListView_EnableGroupView( hwnd : hwnd; fEnable : WPARAM);
  8628. Begin
  8629. SendMessage((hwnd), LVM_ENABLEGROUPVIEW, fEnable, 0)
  8630. end;
  8631. // Macro 132
  8632. // #define ListView_SortGroups(hwnd, _pfnGroupCompate, _plv) \
  8633. // SNDMSG((hwnd), LVM_SORTGROUPS, (WPARAM)_pfnGroupCompate, (LPARAM)_plv)
  8634. Procedure ListView_SortGroups( hwnd : hwnd; _pfnGroupCompate : WPARAM; _plv : LPARAM);
  8635. Begin
  8636. SendMessage((hwnd), LVM_SORTGROUPS, _pfnGroupCompate, _plv)
  8637. end;
  8638. // Macro 133
  8639. // #define ListView_InsertGroupSorted(hwnd, structInsert) \
  8640. // SNDMSG((hwnd), LVM_INSERTGROUPSORTED, (WPARAM)structInsert, 0)
  8641. Procedure ListView_InsertGroupSorted( hwnd : hwnd; structInsert : WPARAM);
  8642. Begin
  8643. SendMessage((hwnd), LVM_INSERTGROUPSORTED, structInsert, 0)
  8644. end;
  8645. // Macro 134
  8646. // #define ListView_RemoveAllGroups(hwnd) \
  8647. // SNDMSG((hwnd), LVM_REMOVEALLGROUPS, 0, 0)
  8648. Procedure ListView_RemoveAllGroups( hwnd : hwnd);
  8649. Begin
  8650. SendMessage((hwnd), LVM_REMOVEALLGROUPS, 0, 0)
  8651. end;
  8652. // Macro 135
  8653. // #define ListView_HasGroup(hwnd, dwGroupId) \
  8654. // SNDMSG((hwnd), LVM_HASGROUP, dwGroupId, 0)
  8655. Procedure ListView_HasGroup( hwnd : hwnd; dwGroupId :DWORD );
  8656. Begin
  8657. SendMessage((hwnd), LVM_HASGROUP, dwGroupId, 0)
  8658. end;
  8659. // Macro 136
  8660. // #define ListView_SetTileViewInfo(hwnd, ptvi) \
  8661. // SNDMSG((hwnd), LVM_SETTILEVIEWINFO, 0, (LPARAM)ptvi)
  8662. Procedure ListView_SetTileViewInfo( hwnd : hwnd; ptvi : LPARAM);
  8663. Begin
  8664. SendMessage((hwnd), LVM_SETTILEVIEWINFO, 0, ptvi)
  8665. end;
  8666. // Macro 137
  8667. // #define ListView_GetTileViewInfo(hwnd, ptvi) \
  8668. // SNDMSG((hwnd), LVM_GETTILEVIEWINFO, 0, (LPARAM)ptvi)
  8669. Procedure ListView_GetTileViewInfo( hwnd : hwnd; ptvi : LPARAM);
  8670. Begin
  8671. SendMessage((hwnd), LVM_GETTILEVIEWINFO, 0, ptvi)
  8672. end;
  8673. // Macro 138
  8674. // #define ListView_SetTileInfo(hwnd, pti) \
  8675. // SNDMSG((hwnd), LVM_SETTILEINFO, 0, (LPARAM)pti)
  8676. Procedure ListView_SetTileInfo( hwnd : hwnd; pti : LPARAM);
  8677. Begin
  8678. SendMessage((hwnd), LVM_SETTILEINFO, 0, pti)
  8679. end;
  8680. // Macro 139
  8681. // #define ListView_GetTileInfo(hwnd, pti) \
  8682. // SNDMSG((hwnd), LVM_GETTILEINFO, 0, (LPARAM)pti)
  8683. Procedure ListView_GetTileInfo( hwnd : hwnd; pti : LPARAM);
  8684. Begin
  8685. SendMessage((hwnd), LVM_GETTILEINFO, 0, pti)
  8686. end;
  8687. // Macro 140
  8688. // #define ListView_SetInsertMark(hwnd, lvim) \
  8689. // (BOOL)SNDMSG((hwnd), LVM_SETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim))
  8690. Function ListView_SetInsertMark( hwnd : hwnd; lvim : lparam ):BOOL;
  8691. Begin
  8692. Result:=BOOL(SendMessage((hwnd), LVM_SETINSERTMARK, 0, lvim));
  8693. end;
  8694. // Macro 141
  8695. // #define ListView_GetInsertMark(hwnd, lvim) \
  8696. // (BOOL)SNDMSG((hwnd), LVM_GETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim))
  8697. Function ListView_GetInsertMark( hwnd : hwnd; lvim : lparam ):BOOL;
  8698. Begin
  8699. Result:=BOOL(SendMessage((hwnd), LVM_GETINSERTMARK, WPARAM (0), LPARAM (lvim)));
  8700. end;
  8701. // Macro 142
  8702. // #define ListView_InsertMarkHitTest(hwnd, point, lvim) \
  8703. // (int)SNDMSG((hwnd), LVM_INSERTMARKHITTEST, (WPARAM)(LPPOINT)(point), (LPARAM)(LPLVINSERTMARK)(lvim))
  8704. Function ListView_InsertMarkHitTest( hwnd : hwnd; point : LPPOINT; lvim : LPLVINSERTMARK):cint;
  8705. Begin
  8706. Result:=cint(SendMessage((hwnd), LVM_INSERTMARKHITTEST, wparam(point), lparam(lvim)));
  8707. end;
  8708. // Macro 143
  8709. // #define ListView_GetInsertMarkRect(hwnd, rc) \
  8710. // (int)SNDMSG((hwnd), LVM_GETINSERTMARKRECT, (WPARAM)0, (LPARAM)(LPRECT)(rc))
  8711. Function ListView_GetInsertMarkRect( hwnd : hwnd; rc : LPRECT):cint;
  8712. Begin
  8713. Result:=cint(SendMessage((hwnd), LVM_GETINSERTMARKRECT, WPARAM(0), LPARAM(rc)))
  8714. end;
  8715. // Macro 144
  8716. // #define ListView_SetInsertMarkColor(hwnd, color) \
  8717. // (COLORREF)SNDMSG((hwnd), LVM_SETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color))
  8718. Function ListView_SetInsertMarkColor( hwnd : hwnd; color : COLORREF):COLORREF;
  8719. Begin
  8720. Result:=COLORREF(SendMessage((hwnd), LVM_SETINSERTMARKCOLOR, WPARAM(0), color));
  8721. end;
  8722. // Macro 145
  8723. // #define ListView_GetInsertMarkColor(hwnd) \
  8724. // (COLORREF)SNDMSG((hwnd), LVM_GETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)0)
  8725. Function ListView_GetInsertMarkColor( hwnd : hwnd):COLORREF;
  8726. Begin
  8727. Result:=COLORREF(SendMessage((hwnd), LVM_GETINSERTMARKCOLOR, WPARAM(0), LPARAM(0)));
  8728. end;
  8729. // Macro 146
  8730. // #define ListView_SetInfoTip(hwndLV, plvInfoTip)\
  8731. // (BOOL)SNDMSG((hwndLV), LVM_SETINFOTIP, (WPARAM)0, (LPARAM)plvInfoTip)
  8732. Function ListView_SetInfoTip( hwndLV : hwnd; plvInfoTip : LPARAM):BOOL;
  8733. Begin
  8734. Result:=BOOL(SendMessage((hwndLV), LVM_SETINFOTIP, WPARAM(0), plvInfoTip));
  8735. end;
  8736. // Macro 147
  8737. // #define ListView_GetSelectedColumn(hwnd) \
  8738. // (UINT)SNDMSG((hwnd), LVM_GETSELECTEDCOLUMN, 0, 0)
  8739. Function ListView_GetSelectedColumn( hwnd : hwnd):UINT;
  8740. Begin
  8741. Result:=UINT(SendMessage((hwnd), LVM_GETSELECTEDCOLUMN, 0, 0));
  8742. end;
  8743. // Macro 148
  8744. // #define ListView_IsGroupViewEnabled(hwnd) \
  8745. // (BOOL)SNDMSG((hwnd), LVM_ISGROUPVIEWENABLED, 0, 0)
  8746. Function ListView_IsGroupViewEnabled( hwnd : hwnd):BOOL;
  8747. Begin
  8748. Result:=BOOL(SendMessage((hwnd), LVM_ISGROUPVIEWENABLED, 0, 0));
  8749. end;
  8750. // Macro 149
  8751. // #define ListView_GetOutlineColor(hwnd) \
  8752. // (COLORREF)SNDMSG((hwnd), LVM_GETOUTLINECOLOR, 0, 0)
  8753. Function ListView_GetOutlineColor( hwnd : hwnd):COLORREF;
  8754. Begin
  8755. Result:=COLORREF(SendMessage((hwnd), LVM_GETOUTLINECOLOR, 0, 0));
  8756. end;
  8757. // Macro 150
  8758. // #define ListView_SetOutlineColor(hwnd, color) \
  8759. // (COLORREF)SNDMSG((hwnd), LVM_SETOUTLINECOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color))
  8760. Function ListView_SetOutlineColor( hwnd : hwnd; color : COLORREF):COLORREF;
  8761. Begin
  8762. Result:=COLORREF(SendMessage((hwnd), LVM_SETOUTLINECOLOR, WPARAM(0), color));
  8763. end;
  8764. // Macro 151
  8765. // #define ListView_CancelEditLabel(hwnd) \
  8766. // (VOID)SNDMSG((hwnd), LVM_CANCELEDITLABEL, (WPARAM)0, (LPARAM)0)
  8767. procedure ListView_CancelEditLabel( hwnd : hwnd);
  8768. Begin
  8769. SendMessage((hwnd), LVM_CANCELEDITLABEL, WPARAM(0), LPARAM(0));
  8770. end;
  8771. // Macro 152
  8772. // #define ListView_MapIndexToID(hwnd, index) \
  8773. // (UINT)SNDMSG((hwnd), LVM_MAPINDEXTOID, (WPARAM)index, (LPARAM)0)
  8774. Function ListView_MapIndexToID( hwnd : hwnd; index : WPARAM):UINT;
  8775. Begin
  8776. Result:=UINT(SendMessage((hwnd), LVM_MAPINDEXTOID, index, LPARAM(0)));
  8777. end;
  8778. // Macro 153
  8779. // #define ListView_MapIDToIndex(hwnd, id) \
  8780. // (UINT)SNDMSG((hwnd), LVM_MAPIDTOINDEX, (WPARAM)id, (LPARAM)0)
  8781. Function ListView_MapIDToIndex( hwnd : hwnd; id : WPARAM):UINT;
  8782. Begin
  8783. Result:=UINT(SendMessage((hwnd), LVM_MAPIDTOINDEX, id, LPARAM(0)));
  8784. end;
  8785. function ListView_IsItemVisible(hwnd:hwnd; aindex:cuint):cuint;
  8786. begin
  8787. Result:=UINT(SendMessage((hwnd),LVM_ISITEMVISIBLE, WPARAM(aindex), LPARAM(0)));
  8788. end;
  8789. {$ENDIF}
  8790. {$ifdef win32vista}
  8791. function ListView_SetGroupHeaderImageList(hwnd:HWNd;himl:HIMAGELIST):HIMAGELIST;
  8792. begin
  8793. Result:=HIMAGELIST(SendMessage((hwnd),LVM_SETIMAGELIST, WPARAM(LVSIL_GROUPHEADER), LPARAM(HIMAGELIST((himl)))));
  8794. end;
  8795. function ListView_GetGroupHeaderImageList(hwnd:HWND):HIMAGELIST;
  8796. begin
  8797. Result:=HIMAGELIST(SendMessage((hwnd),LVM_GETIMAGELIST, WPARAM(LVSIL_GROUPHEADER),LPARAM(0)));
  8798. end;
  8799. function ListView_GetEmptyText(hwnd:HWND;pszText:LPWSTR; cchText:CUINT):BOOL;
  8800. begin
  8801. Result:=BOOL(SendMessage((hwnd),LVM_GETEMPTYTEXT, WPARAM(cchText), LPARAM(pszText)));
  8802. end;
  8803. function ListView_GetFooterRect(hwnd:HWND; prc:PRECT):BOOL;
  8804. begin
  8805. Result:=BOOL(SendMessage((hwnd),LVM_GETFOOTERRECT, WPARAM(0), LPARAM(prc)));
  8806. end;
  8807. function ListView_GetFooterInfo(hwnd:HWND;plvfi: LPLVFOOTERINFO ):BOOL;
  8808. begin
  8809. Result:=BOOL(SendMessage((hwnd),LVM_GETFOOTERINFO, WPARAM(0), LPARAM(plvfi)));
  8810. end;
  8811. function ListView_GetFooterItemRect(hwnd:HWND;iItem:CUINT;prc:PRECT):BOOL;
  8812. begin
  8813. Result:=BOOL(SendMessage((hwnd),LVM_GETFOOTERITEMRECT, WPARAM(iItem), LPARAM(prc)));
  8814. end;
  8815. function ListView_GetFooterItem(hwnd:HWND;iItem:CUINT; pfi:PLVFOOTERITEM):BOOL;
  8816. begin
  8817. Result:=BOOL(SendMessage((hwnd),LVM_GETFOOTERITEM, WPARAM(iItem), LPARAM(pfi)));
  8818. end;
  8819. // (hwnd), LVM_GETITEMINDEXRECT, (WPARAM)(LVITEMINDEX*)(plvii), \
  8820. // ((prc) ? ((((LPRECT)(prc))->top = (iSubItem)), (((LPRECT)(prc))->left = (code)), (LPARAM)(prc)) : (LPARAM)(LPRECT)NULL))
  8821. function ListView_GetItemIndexRect(hwnd:hwnd; plvii:PLVITEMINDEX; iSubItem:clong; code:clong; prc:LPRECT) :BOOL;
  8822. begin
  8823. if assigned(prc) then
  8824. begin
  8825. prc^.top:=iSubItem;
  8826. prc^.left:=code;
  8827. end;
  8828. Result:=BOOL(SendMessage((hwnd), LVM_GETITEMINDEXRECT, WPARAM(pLVITEMINDEX(plvii)), LPARAM(PRC)));
  8829. end;
  8830. function ListView_SetItemIndexState(hwndLV:HWND; plvii:PLVITEMINDEX; data:CUINT; mask:CUINT):HRESULT;
  8831. var macro_lvi: LV_ITEM ;
  8832. begin
  8833. macro_lvi.stateMask := (mask);
  8834. macro_lvi.state := (data);
  8835. Result:=HRESULT(SendMessage((hwndLV),LVM_SETITEMINDEXSTATE, WPARAM(pLVITEMINDEX(plvii)), LPARAM(PLV_ITEM(@macro_lvi))));
  8836. end;
  8837. function ListView_GetNextItemIndex(hwnd:HWND;plvii:PLVITEMINDEX; flags:LPARAM):BOOL;
  8838. begin
  8839. Result:=BOOL(SendMessage((hwnd),LVM_GETNEXTITEMINDEX, WPARAM(pLVITEMINDEX(plvii)), MAKELPARAM(flags, 0)));
  8840. end;
  8841. {$endif}
  8842. // Macro 154
  8843. // #define ListView_SetBkImage(hwnd, plvbki) \
  8844. // (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)(plvbki))
  8845. Function ListView_SetBkImage( hwnd : hwnd; plvbki : LPARAM):BOOL;
  8846. Begin
  8847. Result:=BOOL(SendMessage((hwnd), LVM_SETBKIMAGE, 0, plvbki));
  8848. end;
  8849. // Macro 155
  8850. // #define ListView_GetBkImage(hwnd, plvbki) \
  8851. // (BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)(plvbki))
  8852. Function ListView_GetBkImage( hwnd : hwnd; plvbki : LPARAM):BOOL;
  8853. Begin
  8854. Result:=BOOL(SendMessage((hwnd), LVM_GETBKIMAGE, 0, plvbki));
  8855. end;
  8856. // Macro 156
  8857. // #define TreeView_InsertItem(hwnd, lpis) \
  8858. // (HTREEITEM)SNDMSG((hwnd), TVM_INSERTITEM, 0, (LPARAM)(LPTV_INSERTSTRUCT)(lpis))
  8859. Function TreeView_InsertItem( hwnd : hwnd; lpis : LPTV_INSERTSTRUCT):HTREEITEM;inline;
  8860. Begin
  8861. Result:=HTREEITEM(SendMessage((hwnd), TVM_INSERTITEM, 0, LPARAM(lpis)));
  8862. end;
  8863. Function TreeView_InsertItem( hwnd : hwnd; const lpis : TV_INSERTSTRUCT):HTREEITEM;inline;
  8864. Begin
  8865. Result:=HTREEITEM(SendMessage((hwnd), TVM_INSERTITEM, 0, LPARAM(@lpis)));
  8866. end;
  8867. // Macro 157
  8868. // #define TreeView_DeleteItem(hwnd, hitem) \
  8869. // (BOOL)SNDMSG((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hitem))
  8870. Function TreeView_DeleteItem( hwnd : hwnd; hitem : HTREEITEM):BOOL;
  8871. Begin
  8872. Result:=BOOL(SendMessage((hwnd), TVM_DELETEITEM, 0, LPARAM(hitem)));
  8873. end;
  8874. // Macro 158
  8875. // #define TreeView_DeleteAllItems(hwnd) \
  8876. // (BOOL)SNDMSG((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT)
  8877. Function TreeView_DeleteAllItems( hwnd : hwnd):BOOL;
  8878. Begin
  8879. Result:=BOOL(SendMessage((hwnd), TVM_DELETEITEM, 0, LPARAM(HTREEITEM(TVI_ROOT))));
  8880. end;
  8881. // Macro 159
  8882. // #define TreeView_Expand(hwnd, hitem, code) \
  8883. // (BOOL)SNDMSG((hwnd), TVM_EXPAND, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem))
  8884. Function TreeView_Expand( hwnd : hwnd; hitem : HTREEITEM; code : WPARAM):BOOL;
  8885. Begin
  8886. Result:=BOOL(SendMessage((hwnd), TVM_EXPAND, code, lparam(hitem)))
  8887. end;
  8888. // Macro 160
  8889. // #define TreeView_GetItemRect(hwnd, hitem, prc, code) \
  8890. // (*(HTREEITEM *)prc = (hitem), (BOOL)SNDMSG((hwnd), TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT *)(prc)))
  8891. Function TreeView_GetItemRect( hwnd : hwnd; hitem: HTREEITEM; prc : pRECT; code : WPARAM):BOOL;inline;
  8892. Begin
  8893. PHTREEITEM(prc)^:=HITEM;
  8894. Result:=Bool(SendMessage((hwnd), TVM_GETITEMRECT, code, LPARAM(prc)));
  8895. end;
  8896. Function TreeView_GetItemRect( hwnd : hwnd; hitem: HTREEITEM; var prc : TRECT;code : Bool):BOOL;inline;
  8897. Begin
  8898. HTREEITEM(Pointer(@prc)^):=HITEM;
  8899. Result:=Bool(SendMessage((hwnd), TVM_GETITEMRECT, WPARAM(code), LPARAM(@prc)));
  8900. end;
  8901. // Macro 161
  8902. // #define TreeView_GetCount(hwnd) \
  8903. // (UINT)SNDMSG((hwnd), TVM_GETCOUNT, 0, 0)
  8904. Function TreeView_GetCount( hwnd : hwnd):UINT;
  8905. Begin
  8906. Result:=UINT(SendMessage((hwnd), TVM_GETCOUNT, 0, 0))
  8907. end;
  8908. // Macro 162
  8909. // #define TreeView_GetIndent(hwnd) \
  8910. // (UINT)SNDMSG((hwnd), TVM_GETINDENT, 0, 0)
  8911. Function TreeView_GetIndent( hwnd : hwnd):UINT;
  8912. Begin
  8913. Result:=UINT(SendMessage((hwnd), TVM_GETINDENT, 0, 0))
  8914. end;
  8915. // Macro 163
  8916. // #define TreeView_SetIndent(hwnd, indent) \
  8917. // (BOOL)SNDMSG((hwnd), TVM_SETINDENT, (WPARAM)(indent), 0)
  8918. Function TreeView_SetIndent( hwnd : hwnd; indent : WPARAM):BOOL;
  8919. Begin
  8920. Result:=BOOL(SendMessage((hwnd), TVM_SETINDENT, indent, 0))
  8921. end;
  8922. // Macro 164
  8923. // #define TreeView_GetImageList(hwnd, iImage) \
  8924. // (HIMAGELIST)SNDMSG((hwnd), TVM_GETIMAGELIST, iImage, 0)
  8925. Function TreeView_GetImageList( hwnd : hwnd; iImage : cint ):HIMAGELIST;
  8926. Begin
  8927. Result:=HIMAGELIST(SendMessage((hwnd), TVM_GETIMAGELIST, iImage, 0))
  8928. end;
  8929. // Macro 165
  8930. // #define TreeView_SetImageList(hwnd, himl, iImage) \
  8931. // (HIMAGELIST)SNDMSG((hwnd), TVM_SETIMAGELIST, iImage, (LPARAM)(HIMAGELIST)(himl))
  8932. Function TreeView_SetImageList( hwnd : hwnd; himl : HIMAGELIST; iImage : cint ):HIMAGELIST;
  8933. Begin
  8934. Result:=HIMAGELIST(SendMessage((hwnd), TVM_SETIMAGELIST, iImage, himl))
  8935. end;
  8936. // Macro 166
  8937. // #define TreeView_GetNextItem(hwnd, hitem, code) \
  8938. // (HTREEITEM)SNDMSG((hwnd), TVM_GETNEXTITEM, (WPARAM)(code), (LPARAM)(HTREEITEM)(hitem))
  8939. Function TreeView_GetNextItem( hwnd : hwnd; hitem : HTREEITEM; code : WPARAM):HTREEITEM;
  8940. Begin
  8941. Result:=HTREEITEM(SendMessage((hwnd), TVM_GETNEXTITEM, code, lparam(hitem)))
  8942. end;
  8943. // Macro 167
  8944. function TreeView_GetChild(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;
  8945. Begin
  8946. Result:=TreeView_GetNextItem(hwnd, hitem, TVGN_CHILD)
  8947. End;
  8948. // Macro 168
  8949. // #define TreeView_GetNextSibling(hwnd:hwnd; hitem:HTREEITEM);
  8950. // (hwnd, hitem)
  8951. // TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)
  8952. function TreeView_GetNextSibling(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;
  8953. // (hwnd, hitem)
  8954. // TreeView_GetNextItem(hwnd, hitem, TVGN_NEXT)
  8955. Begin
  8956. Result:=TreeView_getNextItem(hwnd,hitem,TVGN_NEXT);
  8957. end;
  8958. // Macro 169
  8959. function TreeView_GetPrevSibling(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;
  8960. begin
  8961. Result:=TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUS);
  8962. end;
  8963. // Macro 170
  8964. function TreeView_GetParent(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;
  8965. begin
  8966. Result:=TreeView_GetNextItem(hwnd, hitem, TVGN_PARENT)
  8967. end;
  8968. // Macro 171
  8969. // #define TreeView_GetFirstVisible(hwnd:hwnd);
  8970. // TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
  8971. function TreeView_GetFirstVisible(hwnd:hwnd) : HTREEITEM;inline;
  8972. begin
  8973. Result:=TreeView_GetNextItem(hwnd, NIL, TVGN_FIRSTVISIBLE)
  8974. end;
  8975. // Macro 172
  8976. //#define TreeView_GetNextVisible(hwnd:hwnd; hitem:HTREEITEM);
  8977. //(hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)
  8978. function TreeView_GetNextVisible(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;inline;
  8979. begin
  8980. Result:=TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTVISIBLE)
  8981. end;
  8982. // Macro 173
  8983. //#define TreeView_GetPrevVisible(hwnd:hwnd; hitem:HTREEITEM);
  8984. // (hwnd, hitem) TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE)
  8985. function TreeView_GetPrevVisible(hwnd:hwnd; hitem:HTREEITEM) : HTREEITEM;inline;
  8986. Begin
  8987. Result:=TreeView_GetNextItem(hwnd, hitem, TVGN_PREVIOUSVISIBLE);
  8988. end;
  8989. // Macro 174
  8990. function TreeView_GetSelection(hwnd:hwnd) : HTREEITEM;inline;
  8991. begin
  8992. Result:=TreeView_GetNextItem(hwnd, NIL, TVGN_CARET);
  8993. end;
  8994. // Macro 175
  8995. //#define TreeView_GetDropHilight(hwnd:hwnd);
  8996. //TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
  8997. function TreeView_GetDropHilight(hwnd:hwnd) : HTREEITEM;inline;
  8998. begin
  8999. Result:=TreeView_GetNextItem(hwnd, NIL, TVGN_DROPHILITE);
  9000. end;
  9001. function TreeView_GetDropHilite(hwnd:hwnd) : HTREEITEM;inline;
  9002. begin
  9003. Result:=TreeView_GetNextItem(hwnd, NIL, TVGN_DROPHILITE);
  9004. end;
  9005. // Macro 176
  9006. function TreeView_GetRoot(hwnd:hwnd) : HTREEITEM;inline;
  9007. begin
  9008. Result:=TreeView_GetNextItem(hwnd, NIL, TVGN_ROOT);
  9009. end;
  9010. // Macro 177
  9011. //#define TreeView_GetLastVisible(hwnd:hwnd);
  9012. //TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
  9013. function TreeView_GetLastVisible(hwnd:hwnd) : HTREEITEM;inline;
  9014. begin
  9015. Result:=TreeView_GetNextItem(hwnd, NIL, TVGN_LASTVISIBLE)
  9016. end;
  9017. // Macro 178
  9018. Function TreeView_Select( hwnd : hwnd; hitem : HTREEITEM; code : WPARAM):BOOL;
  9019. Begin
  9020. Result:=BOOL(SendMessage((hwnd), TVM_SELECTITEM, code, LPARAM(hitem)))
  9021. end;
  9022. // Macro 179
  9023. // #define TreeView_SelectItem(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_CARET)
  9024. // Macro 180
  9025. // #define TreeView_SelectDropTarget(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
  9026. // Macro 181
  9027. // #define TreeView_SelectSetFirstVisible(hwnd, hitem) TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
  9028. // Macro 179
  9029. Procedure TreeView_SelectItem(hwnd:hwnd; hitem:HTREEITEM);
  9030. Begin
  9031. TreeView_Select(hwnd, hitem, TVGN_CARET)
  9032. End;
  9033. // Macro 180
  9034. Procedure TreeView_SelectDropTarget(hwnd:hwnd; hitem:HTREEITEM);
  9035. Begin
  9036. TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
  9037. End;
  9038. // Macro 181
  9039. Procedure TreeView_SelectSetFirstVisible(hwnd:hwnd; hitem:HTREEITEM);
  9040. Begin
  9041. TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
  9042. End;
  9043. // Macro 182
  9044. // #define TreeView_GetItem(hwnd, pitem) \
  9045. // (BOOL)SNDMSG((hwnd), TVM_GETITEM, 0, (LPARAM)(TV_ITEM *)(pitem))
  9046. Function TreeView_GetItem( hwnd : hwnd;var pitem : TV_ITEM ):BOOL;
  9047. Begin
  9048. Result:=BOOL(SendMessage((hwnd), TVM_GETITEM, 0, LPARAM(@pitem)))
  9049. end;
  9050. // Macro 183
  9051. //#define TreeView_SetItem(hwnd, pitem) \
  9052. // (BOOL)SNDMSG((hwnd), TVM_SETITEM, 0, (LPARAM)(const TV_ITEM *)(pitem))
  9053. Function TreeView_SetItem( hwnd : hwnd;const pitem : TV_ITEM ):BOOL;
  9054. Begin
  9055. Result:=BOOL(SendMessage((hwnd), TVM_SETITEM, 0, LParam(@pitem)))
  9056. end;
  9057. // Macro 184
  9058. //#define TreeView_EditLabel(hwnd, hitem) \
  9059. // (HWND)SNDMSG((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
  9060. Function TreeView_EditLabel( hwnd : hwnd; hitem : HTREEITEM):HWND;
  9061. Begin
  9062. Result:=Windows.HWND(SendMessage((hwnd), TVM_EDITLABEL, 0, LParam(hitem)))
  9063. end;
  9064. // Macro 185
  9065. //#define TreeView_GetEditControl(hwnd) \
  9066. // (HWND)SNDMSG((hwnd), TVM_GETEDITCONTROL, 0, 0)
  9067. Function TreeView_GetEditControl( hwnd : hwnd):HWND;
  9068. Begin
  9069. Result:=Windows.HWND(SendMessage((hwnd), TVM_GETEDITCONTROL, 0, 0))
  9070. end;
  9071. // Macro 186
  9072. //#define TreeView_GetVisibleCount(hwnd) \
  9073. // (UINT)SNDMSG((hwnd), TVM_GETVISIBLECOUNT, 0, 0)
  9074. Function TreeView_GetVisibleCount( hwnd : hwnd):UINT;
  9075. Begin
  9076. Result:=UINT(SendMessage((hwnd), TVM_GETVISIBLECOUNT, 0, 0))
  9077. end;
  9078. // Macro 187
  9079. //#define TreeView_HitTest(hwnd, lpht) \
  9080. // (HTREEITEM)SNDMSG((hwnd), TVM_HITTEST, 0, (LPARAM)(LPTV_HITTESTINFO)(lpht))
  9081. Function TreeView_HitTest( hwnd : hwnd; lpht : LPTV_HITTESTINFO):HTREEITEM;inline;
  9082. Begin
  9083. Result:=HTREEITEM(SendMessage((hwnd), TVM_HITTEST, 0, lparam(lpht)))
  9084. end;
  9085. Function TreeView_HitTest( hwnd : hwnd; var lpht : TV_HITTESTINFO):HTREEITEM;inline;
  9086. Begin
  9087. Result:=HTREEITEM(SendMessage((hwnd), TVM_HITTEST, 0, lparam(@lpht)))
  9088. end;
  9089. // Macro 188
  9090. //#define TreeView_CreateDragImage(hwnd, hitem) \
  9091. // (HIMAGELIST)SNDMSG((hwnd), TVM_CREATEDRAGIMAGE, 0, (LPARAM)(HTREEITEM)(hitem))
  9092. Function TreeView_CreateDragImage( hwnd : hwnd; hitem : HTREEITEM):HIMAGELIST;
  9093. Begin
  9094. Result:=HIMAGELIST(SendMessage((hwnd), TVM_CREATEDRAGIMAGE, 0, Lparam(hitem)))
  9095. end;
  9096. // Macro 189
  9097. //#define TreeView_SortChildren(hwnd, hitem, recurse) \
  9098. // (BOOL)SNDMSG((hwnd), TVM_SORTCHILDREN, (WPARAM)(recurse), (LPARAM)(HTREEITEM)(hitem))
  9099. Function TreeView_SortChildren( hwnd : hwnd; hitem : HTREEITEM; recurse : WPARAM):BOOL;
  9100. Begin
  9101. Result:=BOOL(SendMessage((hwnd), TVM_SORTCHILDREN, recurse, LParam(hitem)))
  9102. end;
  9103. // Macro 190
  9104. //#define TreeView_EnsureVisible(hwnd, hitem) \
  9105. // (BOOL)SNDMSG((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(HTREEITEM)(hitem))
  9106. Function TreeView_EnsureVisible( hwnd : hwnd; hitem : HTREEITEM):BOOL;
  9107. Begin
  9108. Result:=BOOL(SendMessage((hwnd), TVM_ENSUREVISIBLE, 0, LParam(hitem)))
  9109. end;
  9110. // Macro 191
  9111. //#define TreeView_SortChildrenCB(hwnd, psort, recurse) \
  9112. // (BOOL)SNDMSG((hwnd), TVM_SORTCHILDRENCB, (WPARAM)(recurse), \
  9113. // (LPARAM)(LPTV_SORTCB)(psort))
  9114. Function TreeView_SortChildrenCB( hwnd : hwnd;psort :lpTV_sortcb; recurse : WPARAM):BOOL;inline;
  9115. Begin
  9116. Result:=BOOL(SendMessage((hwnd), TVM_SORTCHILDRENCB, recurse, LPARAM(psort)))
  9117. end;
  9118. Function TreeView_SortChildrenCB( hwnd : hwnd;const psort :tagTVsortcb; recurse : WPARAM):BOOL;inline;
  9119. Begin
  9120. Result:=BOOL(SendMessage((hwnd), TVM_SORTCHILDRENCB, recurse, LPARAM(@psort)))
  9121. end;
  9122. // Macro 192
  9123. //#define TreeView_EndEditLabelNow(hwnd, fCancel) \
  9124. // (BOOL)SNDMSG((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)(fCancel), 0)
  9125. Function TreeView_EndEditLabelNow( hwnd : hwnd; fCancel : WPARAM):BOOL;inline;
  9126. Begin
  9127. Result:=BOOL(SendMessage((hwnd), TVM_ENDEDITLABELNOW, fCancel, 0))
  9128. end;
  9129. Function TreeView_EndEditLabelNow( hwnd : hwnd; fCancel : Bool):BOOL;inline;
  9130. Begin
  9131. Result:=BOOL(SendMessage((hwnd), TVM_ENDEDITLABELNOW, WPARAM(fCancel), 0))
  9132. end;
  9133. // Macro 193
  9134. //#define TreeView_SetToolTips(hwnd, hwndTT) \
  9135. // (HWND)SNDMSG((hwnd), TVM_SETTOOLTIPS, (WPARAM)(hwndTT), 0)
  9136. Function TreeView_SetToolTips( hwnd : hwnd; hwndTT : WPARAM):HWND;
  9137. Begin
  9138. Result:=Windows.HWND(SendMessage((hwnd), TVM_SETTOOLTIPS, hwndTT, 0))
  9139. end;
  9140. // Macro 194
  9141. //#define TreeView_GetToolTips(hwnd) \
  9142. // (HWND)SNDMSG((hwnd), TVM_GETTOOLTIPS, 0, 0)
  9143. Function TreeView_GetToolTips( hwnd : hwnd):HWND;
  9144. Begin
  9145. Result:=Windows.HWND(SendMessage((hwnd), TVM_GETTOOLTIPS, 0, 0))
  9146. end;
  9147. // Macro 195
  9148. //#define TreeView_GetISearchString(hwndTV, lpsz) \
  9149. // (BOOL)SNDMSG((hwndTV), TVM_GETISEARCHSTRING, 0, (LPARAM)(LPTSTR)(lpsz))
  9150. Function TreeView_GetISearchString( hwndTV : hwnd; lpsz : LPTSTR):BOOL;
  9151. Begin
  9152. Result:=BOOL(SendMessage((hwndTV), TVM_GETISEARCHSTRING, 0, LPARAM(lpsz)))
  9153. end;
  9154. // Macro 196
  9155. //#define TreeView_SetInsertMark(hwnd, hItem, fAfter) \
  9156. // (BOOL)SNDMSG((hwnd), TVM_SETINSERTMARK, (WPARAM) (fAfter), (LPARAM) (hItem))
  9157. Function TreeView_SetInsertMark( hwnd : hwnd; hItem : LParam ; fAfter : WParam ):BOOL;
  9158. Begin
  9159. Result:=BOOL(SendMessage((hwnd), TVM_SETINSERTMARK, (fAfter), (hItem)))
  9160. end;
  9161. // Macro 197
  9162. //#define TreeView_SetUnicodeFormat(hwnd, fUnicode) \
  9163. // (BOOL)SNDMSG((hwnd), TVM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
  9164. Function TreeView_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
  9165. Begin
  9166. Result:=BOOL(SendMessage((hwnd), TVM_SETUNICODEFORMAT, fUnicode, 0))
  9167. end;
  9168. // Macro 198
  9169. //#define TreeView_GetUnicodeFormat(hwnd) \
  9170. // (BOOL)SNDMSG((hwnd), TVM_GETUNICODEFORMAT, 0, 0)
  9171. Function TreeView_GetUnicodeFormat( hwnd : hwnd):BOOL;
  9172. Begin
  9173. Result:=BOOL(SendMessage((hwnd), TVM_GETUNICODEFORMAT, 0, 0))
  9174. end;
  9175. // Macro 199
  9176. //#define TreeView_SetItemHeight(hwnd, iHeight) \
  9177. // (int)SNDMSG((hwnd), TVM_SETITEMHEIGHT, (WPARAM)(iHeight), 0)
  9178. Function TreeView_SetItemHeight( hwnd : hwnd; iHeight : WPARAM):cint;
  9179. Begin
  9180. Result:=cint(SendMessage((hwnd), TVM_SETITEMHEIGHT, iHeight, 0))
  9181. end;
  9182. // Macro 200
  9183. //#define TreeView_GetItemHeight(hwnd) \
  9184. // (int)SNDMSG((hwnd), TVM_GETITEMHEIGHT, 0, 0)
  9185. Function TreeView_GetItemHeight( hwnd : hwnd):cint;
  9186. Begin
  9187. Result:=cint(SendMessage((hwnd), TVM_GETITEMHEIGHT, 0, 0))
  9188. end;
  9189. // Macro 201
  9190. //#define TreeView_SetBkColor(hwnd, clr) \
  9191. // (COLORREF)SNDMSG((hwnd), TVM_SETBKCOLOR, 0, (LPARAM)(clr))
  9192. Function TreeView_SetBkColor( hwnd : hwnd; clr : LPARAM):COLORREF;
  9193. Begin
  9194. Result:=COLORREF(SendMessage((hwnd), TVM_SETBKCOLOR, 0, clr))
  9195. end;
  9196. // Macro 202
  9197. //#define TreeView_SetTextColor(hwnd, clr) \
  9198. // (COLORREF)SNDMSG((hwnd), TVM_SETTEXTCOLOR, 0, (LPARAM)(clr))
  9199. Function TreeView_SetTextColor( hwnd : hwnd; clr : LPARAM):COLORREF;
  9200. Begin
  9201. Result:=COLORREF(SendMessage((hwnd), TVM_SETTEXTCOLOR, 0, clr))
  9202. end;
  9203. // Macro 203
  9204. //#define TreeView_GetBkColor(hwnd) \
  9205. // (COLORREF)SNDMSG((hwnd), TVM_GETBKCOLOR, 0, 0)
  9206. Function TreeView_GetBkColor( hwnd : hwnd):COLORREF;
  9207. Begin
  9208. Result:=COLORREF(SendMessage((hwnd), TVM_GETBKCOLOR, 0, 0))
  9209. end;
  9210. // Macro 204
  9211. //#define TreeView_GetTextColor(hwnd) \
  9212. // (COLORREF)SNDMSG((hwnd), TVM_GETTEXTCOLOR, 0, 0)
  9213. Function TreeView_GetTextColor( hwnd : hwnd):COLORREF;
  9214. Begin
  9215. Result:=COLORREF(SendMessage((hwnd), TVM_GETTEXTCOLOR, 0, 0))
  9216. end;
  9217. // Macro 205
  9218. //#define TreeView_SetScrollTime(hwnd, uTime) \
  9219. // (UINT)SNDMSG((hwnd), TVM_SETSCROLLTIME, uTime, 0)
  9220. Function TreeView_SetScrollTime( hwnd : hwnd; uTime : wparam ):UINT;
  9221. Begin
  9222. Result:=UINT(SendMessage((hwnd), TVM_SETSCROLLTIME, uTime, 0))
  9223. end;
  9224. // Macro 206
  9225. //#define TreeView_GetScrollTime(hwnd) \
  9226. // (UINT)SNDMSG((hwnd), TVM_GETSCROLLTIME, 0, 0)
  9227. Function TreeView_GetScrollTime( hwnd : hwnd):UINT;
  9228. Begin
  9229. Result:=UINT(SendMessage((hwnd), TVM_GETSCROLLTIME, 0, 0))
  9230. end;
  9231. // Macro 207
  9232. //#define TreeView_SetInsertMarkColor(hwnd, clr) \
  9233. // (COLORREF)SNDMSG((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)(clr))
  9234. Function TreeView_SetInsertMarkColor( hwnd : hwnd; clr : LPARAM):COLORREF;
  9235. Begin
  9236. Result:=COLORREF(SendMessage((hwnd), TVM_SETINSERTMARKCOLOR, 0, clr))
  9237. end;
  9238. // Macro 208
  9239. //#define TreeView_GetInsertMarkColor(hwnd) \
  9240. // (COLORREF)SNDMSG((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0)
  9241. Function TreeView_GetInsertMarkColor( hwnd : hwnd):COLORREF;
  9242. Begin
  9243. Result:=COLORREF(SendMessage((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0))
  9244. end;
  9245. // Macro 209
  9246. //#define TreeView_SetItemState(hwndTV, hti, data, _mask) \
  9247. // { TVITEM _ms_TVi;\
  9248. // _ms_TVi.mask = TVIF_STATE; \
  9249. // _ms_TVi.hItem = hti; \
  9250. // _ms_TVi.stateMask = _mask;\
  9251. // _ms_TVi.state = data;\
  9252. // SNDMSG((hwndTV), TVM_SETITEM, 0, (LPARAM)(TV_ITEM *)&_ms_TVi);\
  9253. // }
  9254. Procedure TreeView_SetItemState(hwndTV:HWND;hti:HTreeItem;data:UINT;_mask:UINT);
  9255. var _ms_TVi : TVITEM;
  9256. Begin
  9257. _ms_TVi.mask:=TVIF_STATE;
  9258. _ms_TVi.hItem := hti;
  9259. _ms_TVi.stateMask := _mask;
  9260. _ms_TVi.state := data;
  9261. SendMessage(hwndTV,TVM_SETITEM, 0, LPARAM(@_ms_TVi));
  9262. end;
  9263. // Macro 210
  9264. //#define TreeView_SetCheckState(hwndTV, hti, fCheck) \
  9265. // TreeView_SetItemState(hwndTV, hti, INDEXTOSTATEIMAGEMASK((fCheck)?2:1), TVIS_STATEIMAGEMASK)
  9266. Procedure TreeView_SetCheckState( hwndTV : hwnd; hti : HTreeItem ; fCheck : bool );
  9267. var j : cint;
  9268. Begin
  9269. IF not fCheck Then // (or inc(longint(fCheck)) if you like it dirty)
  9270. j:=1
  9271. Else
  9272. j:=2;
  9273. TreeView_SetItemState(hwndTV, hti, INDEXTOSTATEIMAGEMASK(j), TVIS_STATEIMAGEMASK)
  9274. end;
  9275. {$ifdef IE5plus}
  9276. // Macro 211
  9277. //#define TreeView_GetItemState(hwndTV, hti, mask) \
  9278. // (UINT)SNDMSG((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask))
  9279. Function TreeView_GetItemState( hwndTV : hwnd; hti : HTreeItem; statemask : UINT):UINT;
  9280. Begin
  9281. Result:=UINT(SendMessage((hwndTV), TVM_GETITEMSTATE, WPARAM(hti), LPARAM(statemask)))
  9282. end;
  9283. // Macro 212
  9284. // #define TreeView_GetCheckState(hwndTV, hti) \
  9285. // ((((UINT)(SNDMSG((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), TVIS_STATEIMAGEMASK))) >> 12) -1)
  9286. Function TreeView_GetCheckState( hwndTV : hwnd; hti : HTreeItem):UINT;
  9287. Begin
  9288. Result:=((UINT(SendMessage((hwndTV), TVM_GETITEMSTATE, wparam(hti), TVIS_STATEIMAGEMASK) shr 12) -1));
  9289. end;
  9290. // Macro 213
  9291. // #define TreeView_SetLineColor(hwnd, clr) \
  9292. // (COLORREF)SNDMSG((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr))
  9293. Function TreeView_SetLineColor( hwnd : hwnd; clr : LPARAM):COLORREF;
  9294. Begin
  9295. Result:=COLORREF(SendMessage((hwnd), TVM_SETLINECOLOR, 0, clr))
  9296. end;
  9297. // Macro 214
  9298. // #define TreeView_GetLineColor(hwnd) \
  9299. // (COLORREF)SNDMSG((hwnd), TVM_GETLINECOLOR, 0, 0)
  9300. Function TreeView_GetLineColor( hwnd : hwnd):COLORREF;
  9301. Begin
  9302. Result:=COLORREF(SendMessage((hwnd), TVM_GETLINECOLOR, 0, 0))
  9303. end;
  9304. // Macro 215
  9305. // #define TreeView_MapAccIDToHTREEITEM(hwnd, id) \
  9306. // (HTREEITEM)SNDMSG((hwnd), TVM_MAPACCIDTOHTREEITEM, id, 0)
  9307. Function TreeView_MapAccIDToHTREEITEM( hwnd : hwnd; id :uint):HTREEITEM;
  9308. Begin
  9309. Result:=HTREEITEM(SendMessage((hwnd), TVM_MAPACCIDTOHTREEITEM, id, 0))
  9310. end;
  9311. // Macro 216
  9312. // #define TreeView_MapHTREEITEMToAccID(hwnd, htreeitem) \
  9313. // (UINT)SNDMSG((hwnd), TVM_MAPHTREEITEMTOACCID, (WPARAM)htreeitem, 0)
  9314. Function TreeView_MapHTREEITEMToAccID( hwnd : hwnd; htreeitem : WPARAM):UINT;
  9315. Begin
  9316. Result:=UINT(SendMessage((hwnd), TVM_MAPHTREEITEMTOACCID, htreeitem, 0))
  9317. end;
  9318. {$endif}
  9319. {$ifdef win32vista}
  9320. function TreeView_GetSelectedCount(hwnd:hwnd):DWORD;
  9321. Begin
  9322. Result:=DWORD(SendMessage((hwnd),TVM_GETSELECTEDCOUNT, 0, 0));
  9323. end;
  9324. function TreeView_ShowInfoTip(hwnd:HWND; hitem:HTREEITEM):DWORD;
  9325. Begin
  9326. Result:=DWORD(SendMessage((hwnd),TVM_SHOWINFOTIP, 0, LPARAM(hitem)));
  9327. end;
  9328. function TreeView_GetItemPartRect(hwnd:HWND; hitem:HTREEITEM; prc:prect; partid:TVITEMPART):bool;
  9329. var info : TVGETITEMPARTRECTINFO;
  9330. Begin
  9331. info.hti := (hitem);
  9332. info.prc := (prc);
  9333. info.partID := (partid);
  9334. Result:=BOOL(SendMessage((hwnd), TVM_GETITEMPARTRECT, 0, LPARAM(@info)));
  9335. end;
  9336. {$endif}
  9337. // Macro 217
  9338. //#define TabCtrl_GetImageList(hwnd) \
  9339. // (HIMAGELIST)SNDMSG((hwnd), TCM_GETIMAGELIST, 0, DWord(0))
  9340. Function TabCtrl_GetImageList( hwnd : hwnd):HIMAGELIST;
  9341. Begin
  9342. Result:=HIMAGELIST(SendMessage((hwnd), TCM_GETIMAGELIST, 0, LPARAM(0)))
  9343. end;
  9344. // Macro 218
  9345. //#define TabCtrl_SetImageList(hwnd, himl) \
  9346. // (HIMAGELIST)SNDMSG((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(HIMAGELIST)(himl))
  9347. Function TabCtrl_SetImageList( hwnd : hwnd; himl : HIMAGELIST):HIMAGELIST;
  9348. Begin
  9349. Result:=HIMAGELIST(SendMessage((hwnd), TCM_SETIMAGELIST, 0, himl))
  9350. end;
  9351. // Macro 219
  9352. //#define TabCtrl_GetItemCount(hwnd) \
  9353. // (int)SNDMSG((hwnd), TCM_GETITEMCOUNT, 0, DWord(0))
  9354. Function TabCtrl_GetItemCount( hwnd : hwnd):cint;
  9355. Begin
  9356. Result:=cint(SendMessage((hwnd), TCM_GETITEMCOUNT, 0, LPARAM(0)))
  9357. end;
  9358. // Macro 220
  9359. //#define TabCtrl_GetItem(hwnd, iItem, pitem) \
  9360. // (BOOL)SNDMSG((hwnd), TCM_GETITEM, (WPARAM)(int)(iItem), (LPARAM)(TC_ITEM *)(pitem))
  9361. Function TabCtrl_GetItem( hwnd : hwnd; iItem : cint;var pitem : TC_ITEM ):BOOL;
  9362. Begin
  9363. Result:=BOOL(SendMessage((hwnd), TCM_GETITEM, iItem, LPARAM(@pitem)))
  9364. end;
  9365. // Macro 221
  9366. //#define TabCtrl_SetItem(hwnd, iItem, pitem) \
  9367. // (BOOL)SNDMSG((hwnd), TCM_SETITEM, (WPARAM)(int)(iItem), (LPARAM)(TC_ITEM *)(pitem))
  9368. Function TabCtrl_SetItem( hwnd : hwnd; iItem : cint;var pitem : TC_ITEM ):BOOL;
  9369. Begin
  9370. Result:=BOOL(SendMessage((hwnd), TCM_SETITEM, iItem, LPARAM(@pitem)))
  9371. end;
  9372. // Macro 222
  9373. //#define TabCtrl_InsertItem(hwnd, iItem, pitem) \
  9374. // (int)SNDMSG((hwnd), TCM_INSERTITEM, (WPARAM)(int)(iItem), (LPARAM)(const TC_ITEM *)(pitem))
  9375. Function TabCtrl_InsertItem( hwnd : hwnd; iItem : cint;const pitem : TC_ITEM ):cint;
  9376. Begin
  9377. Result:=cint(SendMessage((hwnd), TCM_INSERTITEM, iItem, LPARAM(@pitem)));
  9378. end;
  9379. // Macro 223
  9380. //#define TabCtrl_DeleteItem(hwnd, i) \
  9381. // (BOOL)SNDMSG((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), DWord(0))
  9382. Function TabCtrl_DeleteItem( hwnd : hwnd; i : cint):BOOL;
  9383. Begin
  9384. Result:=BOOL(SendMessage((hwnd), TCM_DELETEITEM, (i), LPARAM(0)))
  9385. end;
  9386. // Macro 224
  9387. //#define TabCtrl_DeleteAllItems(hwnd) \
  9388. // (BOOL)SNDMSG((hwnd), TCM_DELETEALLITEMS, 0, DWord(0))
  9389. Function TabCtrl_DeleteAllItems( hwnd : hwnd):BOOL;
  9390. Begin
  9391. Result:=BOOL(SendMessage((hwnd), TCM_DELETEALLITEMS, 0, LPARAM(0)))
  9392. end;
  9393. // Macro 225
  9394. //#define TabCtrl_GetItemRect(hwnd, i, prc) \
  9395. // (BOOL)SNDMSG((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT *)(prc))
  9396. Function TabCtrl_GetItemRect( hwnd : hwnd; i : cint;var prc : RECT ):BOOL;
  9397. Begin
  9398. Result:=BOOL(SendMessage((hwnd), TCM_GETITEMRECT, (i), LPARAM(@prc)))
  9399. end;
  9400. // Macro 226
  9401. //#define TabCtrl_GetCurSel(hwnd) \
  9402. // (int)SNDMSG((hwnd), TCM_GETCURSEL, 0, 0)
  9403. Function TabCtrl_GetCurSel( hwnd : hwnd):cint;
  9404. Begin
  9405. Result:=cint(SendMessage((hwnd), TCM_GETCURSEL, 0, 0))
  9406. end;
  9407. // Macro 227
  9408. //#define TabCtrl_SetCurSel(hwnd, i) \
  9409. // (int)SNDMSG((hwnd), TCM_SETCURSEL, (WPARAM)(i), 0)
  9410. Function TabCtrl_SetCurSel( hwnd : hwnd; i : WPARAM):cint;
  9411. Begin
  9412. Result:=cint(SendMessage((hwnd), TCM_SETCURSEL, (i), 0))
  9413. end;
  9414. // Macro 228
  9415. //#define TabCtrl_HitTest(hwndTC, pinfo) \
  9416. // (int)SNDMSG((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO *)(pinfo))
  9417. Function TabCtrl_HitTest( hwndTC : hwnd;var pinfo : TC_HITTESTINFO ):cint;inline;
  9418. Begin
  9419. Result:=cint(SendMessage((hwndTC), TCM_HITTEST, 0, LPARAM(@pinfo)))
  9420. end;
  9421. Function TabCtrl_HitTest( hwndTC : hwnd;pinfo : LPTCHITTESTINFO ):cint;inline;
  9422. Begin
  9423. Result:=cint(SendMessage((hwndTC), TCM_HITTEST, 0, LPARAM(@pinfo)))
  9424. end;
  9425. // Macro 229
  9426. //#define TabCtrl_SetItemExtra(hwndTC, cb) \
  9427. // (BOOL)SNDMSG((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), DWord(0))
  9428. Function TabCtrl_SetItemExtra( hwndTC : hwnd; cb : WPARAM):BOOL;
  9429. Begin
  9430. Result:=BOOL(SendMessage((hwndTC), TCM_SETITEMEXTRA, cb, LPARAM(0)))
  9431. end;
  9432. // Macro 230
  9433. //#define TabCtrl_AdjustRect(hwnd, bLarger, prc) \
  9434. // (int)SNDMSG(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)(bLarger), (LPARAM)(RECT *)prc)
  9435. Function TabCtrl_AdjustRect( hwnd : hwnd; bLarger : BOOL;var prc : RECT ):cint;
  9436. Begin
  9437. Result:=cint(SendMessage(hwnd, TCM_ADJUSTRECT, Wparam(bLarger), Lparam(@prc)));
  9438. end;
  9439. // Macro 231
  9440. //#define TabCtrl_SetItemSize(hwnd, x, y) \
  9441. // (DWORD)SNDMSG((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y))
  9442. Function TabCtrl_SetItemSize( hwnd : hwnd; x : wparam ; y : lparam ):DWORD;
  9443. Begin
  9444. Result:=DWORD(SendMessage((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y)))
  9445. end;
  9446. // Macro 232
  9447. //#define TabCtrl_RemoveImage(hwnd, i) \
  9448. // (void)SNDMSG((hwnd), TCM_REMOVEIMAGE, i, DWord(0))
  9449. Procedure TabCtrl_RemoveImage( hwnd : hwnd; i : WPARAM);
  9450. Begin
  9451. SendMessage((hwnd), TCM_REMOVEIMAGE, i, LPARAM(0))
  9452. end;
  9453. // Macro 233
  9454. //#define TabCtrl_SetPadding(hwnd, cx, cy) \
  9455. // (void)SNDMSG((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
  9456. Procedure TabCtrl_SetPadding( hwnd : hwnd; cx : WPARAM ; cy : LPARAM );
  9457. Begin
  9458. SendMessage((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
  9459. end;
  9460. // Macro 234
  9461. //#define TabCtrl_GetRowCount(hwnd) \
  9462. // (int)SNDMSG((hwnd), TCM_GETROWCOUNT, 0, DWord(0))
  9463. Function TabCtrl_GetRowCount( hwnd : hwnd):cint;
  9464. Begin
  9465. Result:=cint(SendMessage((hwnd), TCM_GETROWCOUNT, 0, LPARAM(0)))
  9466. end;
  9467. // Macro 235
  9468. //#define TabCtrl_GetToolTips(hwnd) \
  9469. // (HWND)SNDMSG((hwnd), TCM_GETTOOLTIPS, 0, DWord(0))
  9470. Function TabCtrl_GetToolTips( hwnd : hwnd):HWND;
  9471. Begin
  9472. Result:=Windows.HWND(SendMessage((hwnd), TCM_GETTOOLTIPS, 0, LPARAM(0)))
  9473. end;
  9474. // Macro 236
  9475. //#define TabCtrl_SetToolTips(hwnd, hwndTT) \
  9476. // (void)SNDMSG((hwnd), TCM_SETTOOLTIPS, (WPARAM)(hwndTT), DWord(0))
  9477. Procedure TabCtrl_SetToolTips( hwnd : hwnd; hwndTT : WPARAM);
  9478. Begin
  9479. SendMessage((hwnd), TCM_SETTOOLTIPS, hwndTT, LPARAM(0))
  9480. end;
  9481. // Macro 237
  9482. //#define TabCtrl_GetCurFocus(hwnd) \
  9483. // (int)SNDMSG((hwnd), TCM_GETCURFOCUS, 0, 0)
  9484. Function TabCtrl_GetCurFocus( hwnd : hwnd):cint;
  9485. Begin
  9486. Result:=cint(SendMessage((hwnd), TCM_GETCURFOCUS, 0, 0))
  9487. end;
  9488. // Macro 238
  9489. //#define TabCtrl_SetCurFocus(hwnd, i) \
  9490. // SNDMSG((hwnd),TCM_SETCURFOCUS, i, 0)
  9491. Procedure TabCtrl_SetCurFocus( hwnd : hwnd; i : LPARAM );
  9492. Begin
  9493. SendMessage((hwnd),TCM_SETCURFOCUS, i, 0)
  9494. end;
  9495. // Macro 239
  9496. //#define TabCtrl_SetMinTabWidth(hwnd, x) \
  9497. // (int)SNDMSG((hwnd), TCM_SETMINTABWIDTH, 0, x)
  9498. Function TabCtrl_SetMinTabWidth( hwnd : hwnd; x : WPARAM ):cint;
  9499. Begin
  9500. Result:=cint(SendMessage((hwnd), TCM_SETMINTABWIDTH, 0, x))
  9501. end;
  9502. // Macro 240
  9503. //#define TabCtrl_DeselectAll(hwnd, fExcludeFocus)\
  9504. // (void)SNDMSG((hwnd), TCM_DESELECTALL, fExcludeFocus, 0)
  9505. Procedure TabCtrl_DeselectAll( hwnd : hwnd; fExcludeFocus : WPARAM );
  9506. Begin
  9507. SendMessage((hwnd), TCM_DESELECTALL, fExcludeFocus, 0)
  9508. end;
  9509. // Macro 241
  9510. //#define TabCtrl_HighlightItem(hwnd, i, fHighlight) \
  9511. // (BOOL)SNDMSG((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)(i), (LPARAM)MAKELONG (fHighlight, 0))
  9512. Function TabCtrl_HighlightItem( hwnd : hwnd; i : WPARAM; fHighlight :bool ):BOOL;
  9513. Begin
  9514. Result:=BOOL(SendMessage((hwnd), TCM_HIGHLIGHTITEM, (i), LPARAM(MAKELONG (cint(fHighlight), 0))))
  9515. end;
  9516. // Macro 242
  9517. //#define TabCtrl_SetExtendedStyle(hwnd, dw)\
  9518. // (DWORD)SNDMSG((hwnd), TCM_SETEXTENDEDSTYLE, 0, dw)
  9519. Function TabCtrl_SetExtendedStyle( hwnd : hwnd; dw : LPARAM):DWORD;
  9520. Begin
  9521. Result:=DWORD(SendMessage((hwnd), TCM_SETEXTENDEDSTYLE, 0,lparam(dw)))
  9522. end;
  9523. // Macro 243
  9524. //#define TabCtrl_GetExtendedStyle(hwnd)\
  9525. // (DWORD)SNDMSG((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0)
  9526. Function TabCtrl_GetExtendedStyle( hwnd : hwnd):DWORD;
  9527. Begin
  9528. Result:=DWORD(SendMessage((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0))
  9529. end;
  9530. // Macro 244
  9531. //#define TabCtrl_SetUnicodeFormat(hwnd, fUnicode) \
  9532. // (BOOL)SNDMSG((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
  9533. Function TabCtrl_SetUnicodeFormat( hwnd : hwnd; fUnicode : WPARAM):BOOL;
  9534. Begin
  9535. Result:=BOOL(SendMessage((hwnd), TCM_SETUNICODEFORMAT, fUnicode, 0))
  9536. end;
  9537. // Macro 245
  9538. //#define TabCtrl_GetUnicodeFormat(hwnd) \
  9539. // (BOOL)SNDMSG((hwnd), TCM_GETUNICODEFORMAT, 0, 0)
  9540. Function TabCtrl_GetUnicodeFormat( hwnd : hwnd):BOOL;
  9541. Begin
  9542. Result:=BOOL(SendMessage((hwnd), TCM_GETUNICODEFORMAT, 0, 0));
  9543. end;
  9544. // Macro 246
  9545. //#define Animate_Create(hwndP, id, dwStyle, hInstance) \
  9546. // CreateWindow(ANIMATE_CLASS, NULL, \
  9547. // dwStyle, 0, 0, 0, 0, hwndP, (HMENU)(id), hInstance, NULL)
  9548. Function Animate_Create(hwndP :HWND;id:HMENU;dwStyle:dword;hInstance:HINST):HWND;
  9549. Begin
  9550. result:=CreateWindow(ANIMATE_CLASS, NIL,
  9551. dwStyle, 0, 0, 0, 0, hwndP, id, hInstance, NIL);
  9552. end;
  9553. // Macro 247
  9554. //#define Animate_Open(hwnd, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, 0, (LPARAM)(LPTSTR)(szName))
  9555. Function Animate_Open(hwndP :HWND;szName:LPTSTR):BOOL;
  9556. Begin
  9557. Result:=BOOL(SendMessage(hwndp, ACM_OPEN, 0, LPARAM(szName)));
  9558. end;
  9559. // Macro 248
  9560. //#define Animate_OpenEx(hwnd, hInst, szName) (BOOL)SNDMSG(hwnd, ACM_OPEN, (WPARAM)(hInst), (LPARAM)(LPTSTR)(szName))
  9561. Function Animate_OpenEx(hwndP :HWND;HInst:HInst; szName:LPTSTR):BOOL;
  9562. Begin
  9563. Result:=BOOL(SendMessage(hwndp, ACM_OPEN, hinst, LPARAM(szName)));
  9564. end;
  9565. // Macro 249
  9566. //#define Animate_Play(hwnd, from, to, rep) (BOOL)SNDMSG(hwnd, ACM_PLAY, (WPARAM)(rep), (LPARAM)MAKELONG(from, to))
  9567. Function Animate_Play(hwndP :HWND;from,_to,rep:uint):BOOL;
  9568. Begin
  9569. Result:=BOOL(SendMessage(hwndP, ACM_PLAY, wparam(rep), LPARAM(MAKELONG(From,_to))));
  9570. end;
  9571. // Macro 250
  9572. //#define Animate_Stop(hwnd) (BOOL)SNDMSG(hwnd, ACM_STOP, 0, 0)
  9573. Function Animate_stop(hwndP :HWND):BOOL;
  9574. Begin
  9575. Result:=BOOL(SendMessage(hwndP, ACM_STOP, 0, 0));
  9576. end;
  9577. // Macro 251
  9578. //#define Animate_Close(hwnd) Animate_Open(hwnd, NULL)
  9579. Function Animate_close(hwndP :HWND):BOOL;
  9580. Begin
  9581. Result:=BOOL(Animate_Open(hwndP,NIL));
  9582. end;
  9583. // Macro 252
  9584. //#define Animate_Seek(hwnd, frame) Animate_Play(hwnd, frame, frame, 1)
  9585. Function Animate_Seek(hwndP :HWND;frame:uint):BOOL;
  9586. Begin
  9587. Result:=BOOL(Animate_Play(hwndP,frame,frame,1));
  9588. end;
  9589. // Macro 253
  9590. //#define MonthCal_GetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETCURSEL, 0, (LPARAM)(pst))
  9591. function MonthCal_GetCurSel(hwndMC:HWND; lpSysTime :LPSYSTEMTIME):Bool;
  9592. begin
  9593. Result:=BOOL(SendMessage(hwndmc, MCM_GETCURSEL , 0, LPARAM(lpsystime)));
  9594. end;
  9595. // Macro 254
  9596. //#define MonthCal_SetCurSel(hmc, pst) (BOOL)SNDMSG(hmc, MCM_SETCURSEL, 0, (LPARAM)(pst))
  9597. function MonthCal_SetCurSel(hwndMC:HWND; lpSysTime :LPSYSTEMTIME):Bool; inline;
  9598. begin
  9599. Result:=BOOL(SendMessage(hwndmc, MCM_SETCURSEL, 0, LPARAM(lpsystime)));
  9600. end;
  9601. function MonthCal_SetCurSel(hwndMC:HWND; var lpSysTime :SYSTEMTIME):Bool; inline;
  9602. begin
  9603. Result:=BOOL(SendMessage(hwndmc, MCM_SETCURSEL, 0, LPARAM(@lpsystime)));
  9604. end;
  9605. // Macro 255
  9606. //#define MonthCal_GetMaxSelCount(hmc) (DWORD)SNDMSG(hmc, MCM_GETMAXSELCOUNT, 0, DWord(0))
  9607. function MonthCal_GetMaxSelCount(hwndMC:HWND):Bool;
  9608. begin
  9609. Result:=BOOL(SendMessage(hwndmc, MCM_GETMAXSELCOUNT, 0, LPARAM(0)));
  9610. end;
  9611. // Macro 256
  9612. //#define MonthCal_SetMaxSelCount(hmc, n) (BOOL)SNDMSG(hmc, MCM_SETMAXSELCOUNT, (WPARAM)(n), DWord(0))
  9613. function MonthCal_SetMaxSelCount(hwndMC:HWND;n:uint):Bool;
  9614. begin
  9615. Result:=BOOL(SendMessage(hwndmc, MCM_SETMAXSELCOUNT,WPARAM(N), LPARAM(0)));
  9616. end;
  9617. // Macro 257
  9618. //#define MonthCal_GetSelRange(hmc, rgst) SNDMSG(hmc, MCM_GETSELRANGE, 0, (LPARAM)(rgst))
  9619. function MonthCal_GetSelRange(hwndMC:HWND; lpSysTime :LPSYSTEMTIME):Bool;
  9620. begin
  9621. Result:=BOOL(SendMessage(hwndmc, MCM_GETSELRANGE,WPARAM(0), LPARAM(lpsystime)));
  9622. end;
  9623. // Macro 258
  9624. //#define MonthCal_SetSelRange(hmc, rgst) SNDMSG(hmc, MCM_SETSELRANGE, 0, (LPARAM)(rgst))
  9625. function MonthCal_SetSelRange(hwndMC:HWND; lpSysTime :LPSYSTEMTIME):Bool;
  9626. begin
  9627. Result:=BOOL(SendMessage(hwndmc, MCM_SETSELRANGE,WPARAM(0), LPARAM(lpsystime)));
  9628. end;
  9629. // Macro 259
  9630. //#define MonthCal_GetMonthRange(hmc, gmr, rgst) (DWORD)SNDMSG(hmc, MCM_GETMONTHRANGE, (WPARAM)(gmr), (LPARAM)(rgst))
  9631. function MonthCal_GetMonthRange(hwndMC:HWND; gmr: DWORD;lpSysTime :LPSYSTEMTIME):Bool;
  9632. begin
  9633. Result:=BOOL(SendMessage(hwndmc, MCM_GETMONTHRANGE,WPARAM(gmr), LPARAM(lpsystime)));
  9634. end;
  9635. // Macro 260
  9636. //#define MonthCal_SetDayState(hmc, cbds, rgds) SNDMSG(hmc, MCM_SETDAYSTATE, (WPARAM)(cbds), (LPARAM)(rgds))
  9637. function MonthCal_SetDayState(hwndMC:HWND; gmr: Longint;lpDay :LPMONTHDAYSTATE):Bool;
  9638. begin
  9639. Result:=BOOL(SendMessage(hwndmc, MCM_SETDAYSTATE,WPARAM(gmr), LPARAM(lpDay)));
  9640. end;
  9641. // Macro 261
  9642. // #define MonthCal_GetMinReqRect(hmc, prc) SNDMSG(hmc, MCM_GETMINREQRECT, 0, (LPARAM)(prc))
  9643. function MonthCal_GetMinReqRect(hwndMC:HWND; lpr :LPRect):Bool;inline;
  9644. begin
  9645. Result:=BOOL(SendMessage(hwndmc, MCM_GETMINREQRECT,0, LPARAM(lpr)));
  9646. end;
  9647. function MonthCal_GetMinReqRect(hwndMC:HWND;var lpr :TRect):Bool;inline;
  9648. begin
  9649. Result:=BOOL(SendMessage(hwndmc, MCM_GETMINREQRECT,0, LPARAM(@lpr)));
  9650. end;
  9651. // Macro 262
  9652. // #define MonthCal_SetColor(hmc, iColor, clr) SNDMSG(hmc, MCM_SETCOLOR, iColor, clr)
  9653. function MonthCal_SetColor(hwndMC:HWND; ic:longint;clr:COLORREF):DWORD;inline;
  9654. begin
  9655. Result:=DWORD(SendMessage(hwndmc, MCM_SETCOLOR,ic, LPARAM(clr)));
  9656. end;
  9657. // Macro 263
  9658. // #define MonthCal_GetColor(hmc, iColor) SNDMSG(hmc, MCM_GETCOLOR, iColor, 0)
  9659. function MonthCal_GetColor(hwndMC:HWND; ic:longint):Bool;
  9660. begin
  9661. Result:=BOOL(SendMessage(hwndmc, MCM_GETCOLOR,ic, 0));
  9662. end;
  9663. // Macro 264
  9664. // #define MonthCal_SetToday(hmc, pst) SNDMSG(hmc, MCM_SETTODAY, 0, (LPARAM)(pst))
  9665. function MonthCal_SetToday(hwndMC:HWND; lps:LPSYSTEMTIME):Bool;
  9666. begin
  9667. Result:=BOOL(SendMessage(hwndmc, MCM_SETTODAY,0, LPARAM(lps)));
  9668. end;
  9669. // Macro 265
  9670. // #define MonthCal_GetToday(hmc, pst) (BOOL)SNDMSG(hmc, MCM_GETTODAY, 0, (LPARAM)(pst))
  9671. function MonthCal_GetToday(hwndMC:HWND; lps:LPSYSTEMTIME):Bool;
  9672. begin
  9673. Result:=BOOL(SendMessage(hwndmc, MCM_GETTODAY,0, LPARAM(lps)));
  9674. end;
  9675. // Macro 266
  9676. // #define MonthCal_HitTest(hmc, pinfo) \
  9677. // SNDMSG(hmc, MCM_HITTEST, 0, (LPARAM)(PMCHITTESTINFO)(pinfo))
  9678. FUNCTION MonthCal_HitTest( hmc :HWND ; pinfo : PMCHITTESTINFO):DWORD;
  9679. Begin
  9680. Result:=DWORD(SendMessage(hmc, MCM_HITTEST, 0, LPARAM(pinfo)));
  9681. end;
  9682. // Macro 267
  9683. // #define MonthCal_SetFirstDayOfWeek(hmc, iDay) \
  9684. // SNDMSG(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay)
  9685. function MonthCal_SetFirstDayOfWeek( hmc : HWND ; iDay :LONGINT ):DWORD;
  9686. Begin
  9687. Result:=SendMessage(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay);
  9688. end;
  9689. // Macro 268
  9690. // #define MonthCal_GetFirstDayOfWeek(hmc) \
  9691. // (DWORD)SNDMSG(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0)
  9692. Function MonthCal_GetFirstDayOfWeek( hmc : HWND ):DWORD;
  9693. Begin
  9694. Result:=DWORD(SendMessage(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0))
  9695. end;
  9696. // Macro 269
  9697. // #define MonthCal_GetRange(hmc, rgst) \
  9698. // (DWORD)SNDMSG(hmc, MCM_GETRANGE, 0, (LPARAM)(rgst))
  9699. Function MonthCal_GetRange( hmc : HWND ; rgst : LPSYSTEMTIME):DWORD;
  9700. Begin
  9701. Result:=DWORD(SendMessage(hmc, MCM_GETRANGE, 0, lparam(rgst)));
  9702. end;
  9703. // Macro 270
  9704. // #define MonthCal_SetRange(hmc, gd, rgst) \
  9705. // (BOOL)SNDMSG(hmc, MCM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
  9706. Function MonthCal_SetRange( hmc : HWND ; gd : DWORD; rgst : LPSYSTEMTIME):BOOL;
  9707. Begin
  9708. Result:=BOOL(SendMessage(hmc, MCM_SETRANGE, gd,LPARAM(rgst)))
  9709. end;
  9710. // Macro 271
  9711. // #define MonthCal_GetMonthDelta(hmc) \
  9712. // (int)SNDMSG(hmc, MCM_GETMONTHDELTA, 0, 0)
  9713. Function MonthCal_GetMonthDelta( hmc :hwnd ):cint;
  9714. Begin
  9715. Result:=cint(SendMessage(hmc, MCM_GETMONTHDELTA, 0, 0))
  9716. end;
  9717. // Macro 272
  9718. // #define MonthCal_SetMonthDelta(hmc, n) \
  9719. // (int)SNDMSG(hmc, MCM_SETMONTHDELTA, n, 0)
  9720. Function MonthCal_SetMonthDelta( hmc :hwnd ; n :cint ):cint;
  9721. Begin
  9722. Result:=cint(SendMessage(hmc, MCM_SETMONTHDELTA, n, 0))
  9723. end;
  9724. // Macro 273
  9725. // #define MonthCal_GetMaxTodayWidth(hmc) \
  9726. // (DWORD)SNDMSG(hmc, MCM_GETMAXTODAYWIDTH, 0, 0)
  9727. Function MonthCal_GetMaxTodayWidth( hmc :hwnd ):DWORD;
  9728. Begin
  9729. Result:=DWORD(SendMessage(hmc, MCM_GETMAXTODAYWIDTH, 0, 0))
  9730. end;
  9731. // Macro 274
  9732. // #define MonthCal_SetUnicodeFormat(hwnd, fUnicode) \
  9733. // (BOOL)SNDMSG((hwnd), MCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
  9734. Function MonthCal_SetUnicodeFormat( hwnd : hwnd; fUnicode : bool):BOOL;
  9735. Begin
  9736. Result:=BOOL(SendMessage((hwnd), MCM_SETUNICODEFORMAT, wparam(fUnicode), 0))
  9737. end;
  9738. // Macro 275
  9739. // #define MonthCal_GetUnicodeFormat(hwnd) \
  9740. // (BOOL)SNDMSG((hwnd), MCM_GETUNICODEFORMAT, 0, 0)
  9741. Function MonthCal_GetUnicodeFormat( hwnd : hwnd):BOOL;
  9742. Begin
  9743. Result:=BOOL(SendMessage((hwnd), MCM_GETUNICODEFORMAT, 0, 0))
  9744. end;
  9745. // Macro 276
  9746. // #define DateTime_GetSystemtime(hdp, pst) (DWORD)SNDMSG(hdp, DTM_GETSYSTEMTIME, 0, (LPARAM)(pst))
  9747. // Macro 277
  9748. //#define DateTime_SetSystemtime(hdp, gd, pst) (BOOL)SNDMSG(hdp, DTM_SETSYSTEMTIME, (WPARAM)(gd), (LPARAM)(pst))
  9749. function DateTime_SetSystemTime(hdp: HWND; gd: DWORD; const pst: TSystemTime): BOOL;inline;
  9750. begin
  9751. result:=BOOL(SendMessage(hdp, DTM_SETSYSTEMTIME, WPARAM(gd), LPARAM(@pst)));
  9752. end;
  9753. // Macro 278
  9754. //#define DateTime_GetRange(hdp, rgst) (DWORD)SNDMSG(hdp, DTM_GETRANGE, 0, (LPARAM)(rgst))
  9755. // Macro 279
  9756. //#define DateTime_SetRange(hdp, gd, rgst) (BOOL)SNDMSG(hdp, DTM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
  9757. function DateTime_SetRange(hdp: HWND; gdtr: DWORD; rgst: PSystemTime): BOOL;inline;
  9758. begin
  9759. result:=BOOL(SendMessage(hdp, DTM_SETRANGE, WPARAM(gdtr), LPARAM(rgst)));
  9760. end;
  9761. // Macro 280
  9762. //#define DateTime_SetFormat(hdp, sz) (BOOL)SNDMSG(hdp, DTM_SETFORMAT, 0, (LPARAM)(sz))
  9763. // Macro 281
  9764. //#define DateTime_SetMonthCalColor(hdp, iColor, clr) SNDMSG(hdp, DTM_SETMCCOLOR, iColor, clr)
  9765. function DateTime_SetMonthCalColor(hdp: HWND; iColor: DWORD; clr: TColorRef): TColorRef;inline;
  9766. begin
  9767. result:=TColorRef(SendMessage(hdp, DTM_SETMCCOLOR, iColor, clr));
  9768. end;
  9769. // Macro 282
  9770. //#define DateTime_GetMonthCalColor(hdp, iColor) SNDMSG(hdp, DTM_GETMCCOLOR, iColor, 0)
  9771. // Macro 283
  9772. //#define DateTime_GetMonthCal(hdp) (HWND)SNDMSG(hdp, DTM_GETMONTHCAL, 0, 0)
  9773. function DateTime_GetMonthCal(hdp: HWND): HWND;inline;
  9774. begin
  9775. result:=HWND(SendMessage(hdp, DTM_GETMONTHCAL, 0, 0));
  9776. end;
  9777. // Macro 284
  9778. //#define DateTime_SetMonthCalFont(hdp, hfont, fRedraw) SNDMSG(hdp, DTM_SETMCFONT, (WPARAM)(hfont), (LPARAM)(fRedraw))
  9779. // Macro 285
  9780. //#define DateTime_GetMonthCalFont(hdp) SNDMSG(hdp, DTM_GETMCFONT, 0, 0)
  9781. // Macro 286
  9782. //#define MAKEIPRANGE(low, high) ((LPARAM)(WORD)(((BYTE)(high) << 8) + (BYTE)(low)))
  9783. // Macro 287
  9784. //#define MAKEIPADDRESS(b1,b2,b3,b4) ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<<16)+((DWORD)(b3)<<8)+((DWORD)(b4))))
  9785. // Macro 288
  9786. //#define FIRST_IPADDRESS(x) ((x>>24) & 0xff)
  9787. // Macro 289
  9788. //#define SECOND_IPADDRESS(x) ((x>>16) & 0xff)
  9789. // Macro 290
  9790. //#define THIRD_IPADDRESS(x) ((x>>8) & 0xff)
  9791. // Macro 291
  9792. //#define FOURTH_IPADDRESS(x) (x & 0xff)
  9793. // Macro 292
  9794. //#define Pager_SetChild(hwnd, hwndChild) \
  9795. // (void)SNDMSG((hwnd), PGM_SETCHILD, 0, (LPARAM)(hwndChild))
  9796. Procedure Pager_SetChild( hwnd : hwnd; hwndChild : LPARAM);
  9797. Begin
  9798. SendMessage((hwnd), PGM_SETCHILD, 0, hwndChild)
  9799. end;
  9800. // Macro 293
  9801. //#define Pager_RecalcSize(hwnd) \
  9802. // (void)SNDMSG((hwnd), PGM_RECALCSIZE, 0, 0)
  9803. Procedure Pager_RecalcSize( hwnd : hwnd);
  9804. Begin
  9805. SendMessage((hwnd), PGM_RECALCSIZE, 0, 0)
  9806. end;
  9807. // Macro 294
  9808. //#define Pager_ForwardMouse(hwnd, bForward) \
  9809. // (void)SNDMSG((hwnd), PGM_FORWARDMOUSE, (WPARAM)(bForward), 0)
  9810. Procedure Pager_ForwardMouse( hwnd : hwnd; bForward : WPARAM);
  9811. Begin
  9812. SendMessage((hwnd), PGM_FORWARDMOUSE, bForward, 0)
  9813. end;
  9814. // Macro 295
  9815. //#define Pager_SetBkColor(hwnd, clr) \
  9816. // (COLORREF)SNDMSG((hwnd), PGM_SETBKCOLOR, 0, (LPARAM)(clr))
  9817. Function Pager_SetBkColor( hwnd : hwnd; clr : LPARAM):COLORREF;
  9818. Begin
  9819. Result:=COLORREF(SendMessage((hwnd), PGM_SETBKCOLOR, 0, clr))
  9820. end;
  9821. // Macro 296
  9822. //#define Pager_GetBkColor(hwnd) \
  9823. // (COLORREF)SNDMSG((hwnd), PGM_GETBKCOLOR, 0, 0)
  9824. Function Pager_GetBkColor( hwnd : hwnd):COLORREF;
  9825. Begin
  9826. Result:=COLORREF(SendMessage((hwnd), PGM_GETBKCOLOR, 0, 0))
  9827. end;
  9828. // Macro 297
  9829. //#define Pager_SetBorder(hwnd, iBorder) \
  9830. // (int)SNDMSG((hwnd), PGM_SETBORDER, 0, (LPARAM)(iBorder))
  9831. Function Pager_SetBorder( hwnd : hwnd; iBorder : LPARAM):cint;
  9832. Begin
  9833. Result:=cint(SendMessage((hwnd), PGM_SETBORDER, 0, iBorder))
  9834. end;
  9835. // Macro 298
  9836. // #define Pager_GetBorder(hwnd) \
  9837. // (int)SNDMSG((hwnd), PGM_GETBORDER, 0, 0)
  9838. Function Pager_GetBorder( hwnd : hwnd):cint;
  9839. Begin
  9840. Result:=cint(SendMessage((hwnd), PGM_GETBORDER, 0, 0))
  9841. end;
  9842. // Macro 299
  9843. //#define Pager_SetPos(hwnd, iPos) \
  9844. // (int)SNDMSG((hwnd), PGM_SETPOS, 0, (LPARAM)(iPos))
  9845. Function Pager_SetPos( hwnd : hwnd; iPos : LPARAM):cint;
  9846. Begin
  9847. Result:=cint(SendMessage((hwnd), PGM_SETPOS, 0, iPos))
  9848. end;
  9849. // Macro 300
  9850. //#define Pager_GetPos(hwnd) \
  9851. // (int)SNDMSG((hwnd), PGM_GETPOS, 0, 0)
  9852. Function Pager_GetPos( hwnd : hwnd):cint;
  9853. Begin
  9854. Result:=cint(SendMessage((hwnd), PGM_GETPOS, 0, 0))
  9855. end;
  9856. // Macro 301
  9857. //#define Pager_SetButtonSize(hwnd, iSize) \
  9858. // (int)SNDMSG((hwnd), PGM_SETBUTTONSIZE, 0, (LPARAM)(iSize))
  9859. Function Pager_SetButtonSize( hwnd : hwnd; iSize : LPARAM):cint;
  9860. Begin
  9861. Result:=cint(SendMessage((hwnd), PGM_SETBUTTONSIZE, 0, iSize))
  9862. end;
  9863. // Macro 302
  9864. //#define Pager_GetButtonSize(hwnd) \
  9865. // (int)SNDMSG((hwnd), PGM_GETBUTTONSIZE, 0,0)
  9866. Function Pager_GetButtonSize( hwnd : hwnd):cint;
  9867. Begin
  9868. Result:=cint(SendMessage((hwnd), PGM_GETBUTTONSIZE, 0,0))
  9869. end;
  9870. // Macro 303
  9871. //#define Pager_GetButtonState(hwnd, iButton) \
  9872. // (DWORD)SNDMSG((hwnd), PGM_GETBUTTONSTATE, 0, (LPARAM)(iButton))
  9873. Function Pager_GetButtonState( hwnd : hwnd; iButton : LPARAM):DWORD;
  9874. Begin
  9875. Result:=DWORD(SendMessage((hwnd), PGM_GETBUTTONSTATE, 0, iButton))
  9876. end;
  9877. // Macro 304
  9878. // #define Pager_GetDropTarget(hwnd, ppdt) \
  9879. // (void)SNDMSG((hwnd), PGM_GETDROPTARGET, 0, (LPARAM)(ppdt))
  9880. Procedure Pager_GetDropTarget( hwnd : hwnd; ppdt : LPARAM);
  9881. Begin
  9882. SendMessage((hwnd), PGM_GETDROPTARGET, 0, ppdt)
  9883. end;
  9884. // Macro 305
  9885. // #define Button_GetIdealSize(hwnd, psize)\
  9886. // (BOOL)SNDMSG((hwnd), BCM_GETIDEALSIZE, 0, (LPARAM)(psize))
  9887. Function Button_GetIdealSize( hwnd : hwnd; psize : LPARAM):BOOL;
  9888. Begin
  9889. Result:=BOOL(SendMessage((hwnd), BCM_GETIDEALSIZE, 0, psize))
  9890. end;
  9891. // Macro 306
  9892. // #define Button_SetImageList(hwnd, pbuttonImagelist)\
  9893. // (BOOL)SNDMSG((hwnd), BCM_SETIMAGELIST, 0, (LPARAM)(pbuttonImagelist))
  9894. Function Button_SetImageList( hwnd : hwnd; pbuttonImagelist : LPARAM):BOOL;
  9895. Begin
  9896. Result:=BOOL(SendMessage((hwnd), BCM_SETIMAGELIST, 0, pbuttonImagelist))
  9897. end;
  9898. // Macro 307
  9899. // #define Button_GetImageList(hwnd, pbuttonImagelist)\
  9900. // (BOOL)SNDMSG((hwnd), BCM_GETIMAGELIST, 0, (LPARAM)(pbuttonImagelist))
  9901. Function Button_GetImageList( hwnd : hwnd; pbuttonImagelist : LPARAM):BOOL;
  9902. Begin
  9903. Result:=BOOL(SendMessage((hwnd), BCM_GETIMAGELIST, 0, pbuttonImagelist))
  9904. end;
  9905. // Macro 308
  9906. // #define Button_SetTextMargin(hwnd, pmargin)\
  9907. // (BOOL)SNDMSG((hwnd), BCM_SETTEXTMARGIN, 0, (LPARAM)(pmargin))
  9908. Function Button_SetTextMargin( hwnd : hwnd; pmargin : LPARAM):BOOL;
  9909. Begin
  9910. Result:=BOOL(SendMessage((hwnd), BCM_SETTEXTMARGIN, 0, pmargin))
  9911. end;
  9912. // Macro 309
  9913. // #define Button_GetTextMargin(hwnd, pmargin)\
  9914. // (BOOL)SNDMSG((hwnd), BCM_GETTEXTMARGIN, 0, (LPARAM)(pmargin))
  9915. Function Button_GetTextMargin( hwnd : hwnd; pmargin : LPARAM):BOOL;
  9916. Begin
  9917. Result:=BOOL(SendMessage((hwnd), BCM_GETTEXTMARGIN, 0, pmargin))
  9918. end;
  9919. // Macro 310
  9920. // #define Edit_SetCueBannerText(hwnd, lpcwText) \
  9921. // (BOOL)SNDMSG((hwnd), EM_SETCUEBANNER, 0, (LPARAM)(lpcwText))
  9922. Function Edit_SetCueBannerText( hwnd : hwnd; lpcwText : LPARAM):BOOL;
  9923. Begin
  9924. Result:=BOOL(SendMessage((hwnd), EM_SETCUEBANNER, 0, lpcwText))
  9925. end;
  9926. // Macro 311
  9927. //#define Edit_GetCueBannerText(hwnd, lpwText, cchText) \
  9928. // (BOOL)SNDMSG((hwnd), EM_GETCUEBANNER, (WPARAM)(lpwText), (LPARAM)(cchText))
  9929. Function Edit_GetCueBannerText( hwnd : hwnd; lpwText : WPARAM; cchText : LPARAM):BOOL;
  9930. Begin
  9931. Result:=BOOL(SendMessage((hwnd), EM_GETCUEBANNER, lpwText, cchText))
  9932. end;
  9933. // Macro 312
  9934. // #define Edit_ShowBalloonTip(hwnd, peditballoontip) \
  9935. // (BOOL)SNDMSG((hwnd), EM_SHOWBALLOONTIP, 0, (LPARAM)(peditballoontip))
  9936. Function Edit_ShowBalloonTip( hwnd : hwnd; peditballoontip : LPARAM):BOOL;
  9937. Begin
  9938. Result:=BOOL(SendMessage((hwnd), EM_SHOWBALLOONTIP, 0, peditballoontip))
  9939. end;
  9940. // Macro 313
  9941. // #define Edit_HideBalloonTip(hwnd) \
  9942. // (BOOL)SNDMSG((hwnd), EM_HIDEBALLOONTIP, 0, 0)
  9943. Function Edit_HideBalloonTip( hwnd : hwnd):BOOL;
  9944. Begin
  9945. Result:=BOOL(SendMessage((hwnd), EM_HIDEBALLOONTIP, 0, 0))
  9946. end;
  9947. // Macro 314
  9948. //#define ComboBox_SetMinVisible(hwnd, iMinVisible) \
  9949. // (BOOL)SNDMSG((hwnd), CB_SETMINVISIBLE, (WPARAM)iMinVisible, 0)
  9950. Function ComboBox_SetMinVisible( hwnd : hwnd; iMinVisible : WPARAM):BOOL;
  9951. Begin
  9952. Result:=BOOL(SendMessage((hwnd), CB_SETMINVISIBLE, iMinVisible, 0))
  9953. end;
  9954. // Macro 315
  9955. // #define ComboBox_GetMinVisible(hwnd) \
  9956. // (int)SNDMSG((hwnd), CB_GETMINVISIBLE, 0, 0)
  9957. Function ComboBox_GetMinVisible( hwnd : hwnd):cint;
  9958. Begin
  9959. Result:=cint(SendMessage((hwnd), CB_GETMINVISIBLE, 0, 0))
  9960. end;
  9961. {$ifdef win32vista}
  9962. function TreeView_GetNextSelected(hwnd:hwnd; hitem:HTREEITEM):HTREEITEM;inline;
  9963. begin
  9964. result:=TreeView_GetNextItem(hwnd, hitem, TVGN_NEXTSELECTED)
  9965. end;
  9966. {$endif}
  9967. {$ifdef win32vista}
  9968. function Button_SetDropDownState(hwnd:HWND; fDropDown:BOOL) : BOOL;
  9969. Begin
  9970. Result:=BOOL(SendMessage((hwnd), BCM_SETDROPDOWNSTATE, WPARAM(fDropDown), 0));
  9971. end;
  9972. function Button_SetSplitInfo(hwnd:HWND; pInfo:PBUTTON_SPLITINFO):BOOL;
  9973. Begin
  9974. Result:=BOOL(SendMessage((hwnd), BCM_SETSPLITINFO, 0, LPARAM(pInfo)));
  9975. end;
  9976. function Button_GetSplitInfo(hwnd:HWND; pInfo:PBUTTON_SPLITINFO) :BOOL;
  9977. Begin
  9978. Result:=BOOL(SendMessage((hwnd), BCM_GETSPLITINFO, 0, LPARAM(pInfo)));
  9979. end;
  9980. function Button_SetNote(hwnd:HWND; psz:LPCWSTR) :BOOL;
  9981. Begin
  9982. Result:=BOOL(SendMessage((hwnd), BCM_SETNOTE, 0, LPARAM(psz)));
  9983. end;
  9984. function Button_GetNote(hwnd:HWND; psz:LPCWSTR; pcc:cint) :BOOL;
  9985. Begin
  9986. Result:=BOOL(SendMessage((hwnd), BCM_GETNOTE, WPARAM(pcc), LPARAM(psz)));
  9987. end;
  9988. function Button_GetNoteLength(hwnd:HWND) :LRESULT;
  9989. Begin
  9990. Result:=LRESULT(SendMessage((hwnd), BCM_GETNOTELENGTH, 0, 0));
  9991. end;
  9992. // Macro to use on a button or command link to display an elevated icon
  9993. function Button_SetElevationRequiredState(hwnd:HWND; fRequired:BOOL) :LRESULT;
  9994. Begin
  9995. Result:=LRESULT(SendMessage((hwnd), BCM_SETSHIELD, 0, LPARAM(fRequired)));
  9996. end;
  9997. {$endif}
  9998. {$ifdef win32vista}
  9999. procedure Edit_SetHilite(hwndCtl:hwnd; ichStart:Wparam; ichEnd:lparam);
  10000. begin
  10001. sendmessage(hwndctl, EM_SETHILITE, (ichStart), (ichEnd));
  10002. end;
  10003. function Edit_GetHilite(hwndCtl:hwnd):Dword;
  10004. begin
  10005. result:=SendMessage((hwndCtl), EM_GETHILITE, 0, 0);
  10006. end;
  10007. {$endif}
  10008. {$ifdef ntddi_vista}
  10009. function MonthCal_GetCurrentView(hmc:HWND):DWORD;
  10010. Begin
  10011. Result:=DWord(SendMessage(hmc, MCM_GETCURRENTVIEW, 0, 0));
  10012. end;
  10013. function MonthCal_GetCalendarCount(hmc:HWND):DWORD;
  10014. Begin
  10015. Result:=DWord(SendMessage(hmc,MCM_GETCALENDARCOUNT, 0, 0));
  10016. end;
  10017. function MonthCal_GetCalendarGridInfo(hmc:HWND; pmc:pMCGRIDINFO):BOOL;
  10018. Begin
  10019. Result:=BOOL(SendMessage(hmc, MCM_GETCALENDARGRIDINFO, 0, LPARAM(PMCGRIDINFO(pmc))));
  10020. end;
  10021. function MonthCal_GetCALID(hmc:HWND):CALID;
  10022. Begin
  10023. Result:=CALID(SendMessage(hmc, MCM_GETCALID, 0, 0));
  10024. end;
  10025. function MonthCal_SetCALID(hmc:HWND; calid:cuint):LRESULT;
  10026. Begin
  10027. Result:=LRESULT(SendMessage(hmc, MCM_SETCALID, WPARAM(calid), 0));
  10028. end;
  10029. function MonthCal_SizeRectToMin(hmc:HWND; prc:prect):LRESULT;
  10030. Begin
  10031. Result:=LRESULT(SendMessage(hmc, MCM_SIZERECTTOMIN, 0, LPARAM(prc)));
  10032. end;
  10033. function MonthCal_SetCalendarBorder(hmc:HWND; fset:bool; xyborder:cint):LRESULT;
  10034. Begin
  10035. Result:=LRESULT(SendMessage(hmc, MCM_SETCALENDARBORDER, WPARAM(fset), LPARAM(xyborder)));
  10036. end;
  10037. function MonthCal_GetCalendarBorder(hmc:HWND):cint;
  10038. Begin
  10039. Result:=cint(SendMessage(hmc, MCM_GETCALENDARBORDER, 0, 0));
  10040. end;
  10041. function MonthCal_SetCurrentView(hmc:HWND; dwNewView:DWord):BOOL;
  10042. Begin
  10043. Result:=BOOL(SendMessage(hmc, MCM_SETCURRENTVIEW, 0, LPARAM(dwNewView)));
  10044. end;
  10045. {$endif}
  10046. {$ifdef NTDDI_VISTA}
  10047. function DateTime_SetMonthCalStyle(hdp:HWND; dwStyle:DWord):LResult;
  10048. Begin
  10049. Result:=LRESULT(SendMessage(hdp,DTM_SETMCSTYLE, 0, LPARAM(dwStyle)));
  10050. end;
  10051. function DateTime_GetMonthCalStyle(hdp:HWND):LRESULT;
  10052. Begin
  10053. Result:=LRESULT(SendMessage(hdp,DTM_GETMCSTYLE, 0, 0));
  10054. end;
  10055. function DateTime_CloseMonthCal(hdp:HWND):LRESULT;
  10056. Begin
  10057. Result:=LRESULT(SendMessage(hdp,DTM_CLOSEMONTHCAL, 0, 0));
  10058. end;
  10059. // DateTime_GetDateTimePickerInfo(HWND hdp, DATETIMEPICKERINFO* pdtpi)
  10060. // Retrieves information about the selected date time picker.
  10061. function DateTime_GetDateTimePickerInfo(hdp:HWND; pdtpi:PDATETIMEPICKERINFO):LRESULT;
  10062. Begin
  10063. Result:=LRESULT(SendMessage(hdp, DTM_GETDATETIMEPICKERINFO, 0, LPARAM(pdtpi)));
  10064. end;
  10065. function DateTime_GetIdealSize(hdp:HWND; ps:PSIZE): LResult;
  10066. Begin
  10067. Result:=LRESULT(SendMessage(hdp, DTM_GETIDEALSIZE, 0, LPARAM(ps)));
  10068. end;
  10069. {$endif}
  10070. // Macro 284
  10071. procedure DateTime_SetMonthCalFont(hdp:HWND; hfont:HFONT; fRedraw:LPARAM);
  10072. begin
  10073. SendMessage(hdp, DTM_SETMCFONT, WPARAM(hfont), LPARAM(fRedraw));
  10074. end;
  10075. // Macro 285
  10076. function DateTime_GetMonthCalFont(hdp:HWND):HFONT;
  10077. begin
  10078. Result:=HFONT(SendMessage(hdp, DTM_GETMCFONT, 0, 0));
  10079. end;
  10080. const
  10081. comctl32lib = 'comctl32.dll';
  10082. var
  10083. comctl32handle: THandle = 0;
  10084. function _TaskDialogIndirect(const pTaskConfig: PTASKDIALOGCONFIG; pnButton: PInteger; pnRadioButton: PInteger; pfVerificationFlagChecked: PBOOL): HRESULT; stdcall;
  10085. begin
  10086. Result := E_NOTIMPL;
  10087. end;
  10088. function _TaskDialog(hwndParent: HWND; hInstance: HINST; pszWindowTitle: PCWSTR; pszMainInstruction: PCWSTR; pszContent: PCWSTR;
  10089. dwCommonButtons: TASKDIALOG_COMMON_BUTTON_FLAGS; pszIcon: PCWSTR; pnButton: PInteger): HRESULT; stdcall;
  10090. begin
  10091. Result := E_NOTIMPL;
  10092. end;
  10093. procedure Initialize;
  10094. var
  10095. p: Pointer;
  10096. begin
  10097. // Defaults
  10098. Pointer(TaskDialogIndirect) := @_TaskDialogIndirect;
  10099. Pointer(TaskDialog) := @_TaskDialog;
  10100. comctl32handle := LoadLibrary(comctl32lib);
  10101. if comctl32handle <> 0 then
  10102. begin
  10103. p := GetProcAddress(comctl32handle, 'TaskDialogIndirect');
  10104. if p <> nil
  10105. then Pointer(TaskDialogIndirect) := p;
  10106. p := GetProcAddress(comctl32handle, 'TaskDialog');
  10107. if p <> nil
  10108. then Pointer(TaskDialog) := p;
  10109. end;
  10110. end;
  10111. procedure Finalize;
  10112. begin
  10113. if comctl32handle <> 0 then
  10114. FreeLibrary(comctl32handle);
  10115. comctl32handle := 0;
  10116. end;
  10117. initialization
  10118. Initialize;
  10119. Finalization
  10120. Finalize;
  10121. End.