commctrl.pp 424 KB

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