commctrl.h 159 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868
  1. /*
  2. * Common controls definitions
  3. *
  4. * Copyright (C) the Wine project
  5. *
  6. * This library is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 2.1 of the License, or (at your option) any later version.
  10. *
  11. * This library is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public
  17. * License along with this library; if not, write to the Free Software
  18. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  19. */
  20. #ifndef __WINE_COMMCTRL_H
  21. #define __WINE_COMMCTRL_H
  22. #include <prsht.h>
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. BOOL WINAPI ShowHideMenuCtl (HWND, UINT, LPINT);
  27. VOID WINAPI GetEffectiveClientRect (HWND, LPRECT, LPINT);
  28. VOID WINAPI InitCommonControls (VOID);
  29. typedef struct tagINITCOMMONCONTROLSEX {
  30. DWORD dwSize;
  31. DWORD dwICC;
  32. } INITCOMMONCONTROLSEX, *LPINITCOMMONCONTROLSEX;
  33. BOOL WINAPI InitCommonControlsEx (LPINITCOMMONCONTROLSEX);
  34. LANGID WINAPI GetMUILanguage (VOID);
  35. VOID WINAPI InitMUILanguage (LANGID uiLang);
  36. #define COMCTL32_VERSION 5 /* dll version */
  37. #ifndef _WIN32_IE
  38. #define _WIN32_IE 0x0400
  39. #endif
  40. #define ICC_LISTVIEW_CLASSES 0x00000001 /* listview, header */
  41. #define ICC_TREEVIEW_CLASSES 0x00000002 /* treeview, tooltips */
  42. #define ICC_BAR_CLASSES 0x00000004 /* toolbar, statusbar, trackbar, tooltips */
  43. #define ICC_TAB_CLASSES 0x00000008 /* tab, tooltips */
  44. #define ICC_UPDOWN_CLASS 0x00000010 /* updown */
  45. #define ICC_PROGRESS_CLASS 0x00000020 /* progress */
  46. #define ICC_HOTKEY_CLASS 0x00000040 /* hotkey */
  47. #define ICC_ANIMATE_CLASS 0x00000080 /* animate */
  48. #define ICC_WIN95_CLASSES 0x000000FF
  49. #define ICC_DATE_CLASSES 0x00000100 /* month picker, date picker, time picker, updown */
  50. #define ICC_USEREX_CLASSES 0x00000200 /* comboex */
  51. #define ICC_COOL_CLASSES 0x00000400 /* rebar (coolbar) */
  52. #define ICC_INTERNET_CLASSES 0x00000800 /* IP address, ... */
  53. #define ICC_PAGESCROLLER_CLASS 0x00001000 /* page scroller */
  54. #define ICC_NATIVEFNTCTL_CLASS 0x00002000 /* native font control ???*/
  55. #define ICC_STANDARD_CLASSES 0x00004000
  56. #define ICC_LINK_CLASS 0x00008000
  57. /* common control styles */
  58. #define CCS_TOP 0x00000001L
  59. #define CCS_NOMOVEY 0x00000002L
  60. #define CCS_BOTTOM 0x00000003L
  61. #define CCS_NORESIZE 0x00000004L
  62. #define CCS_NOPARENTALIGN 0x00000008L
  63. #define CCS_ADJUSTABLE 0x00000020L
  64. #define CCS_NODIVIDER 0x00000040L
  65. #define CCS_VERT 0x00000080L
  66. #define CCS_LEFT (CCS_VERT|CCS_TOP)
  67. #define CCS_RIGHT (CCS_VERT|CCS_BOTTOM)
  68. #define CCS_NOMOVEX (CCS_VERT|CCS_NOMOVEY)
  69. /* common control shared messages */
  70. #define CCM_FIRST 0x2000
  71. #define CCM_SETBKCOLOR (CCM_FIRST+0x1) /* lParam = bkColor */
  72. #define CCM_SETCOLORSCHEME (CCM_FIRST+0x2) /* lParam = COLORSCHEME struct ptr */
  73. #define CCM_GETCOLORSCHEME (CCM_FIRST+0x3) /* lParam = COLORSCHEME struct ptr */
  74. #define CCM_GETDROPTARGET (CCM_FIRST+0x4)
  75. #define CCM_SETUNICODEFORMAT (CCM_FIRST+0x5)
  76. #define CCM_GETUNICODEFORMAT (CCM_FIRST+0x6)
  77. #define CCM_SETVERSION (CCM_FIRST+0x7)
  78. #define CCM_GETVERSION (CCM_FIRST+0x8)
  79. #define CCM_SETNOTIFYWINDOW (CCM_FIRST+0x9) /* wParam = hwndParent */
  80. #define CCM_SETWINDOWTHEME (CCM_FIRST+0xb)
  81. #define CCM_DPISCALE (CCM_FIRST+0xc)
  82. /* common notification codes (WM_NOTIFY)*/
  83. #define NM_FIRST (0U- 0U)
  84. #define NM_LAST (0U- 99U)
  85. #define NM_OUTOFMEMORY (NM_FIRST-1)
  86. #define NM_CLICK (NM_FIRST-2)
  87. #define NM_DBLCLK (NM_FIRST-3)
  88. #define NM_RETURN (NM_FIRST-4)
  89. #define NM_RCLICK (NM_FIRST-5)
  90. #define NM_RDBLCLK (NM_FIRST-6)
  91. #define NM_SETFOCUS (NM_FIRST-7)
  92. #define NM_KILLFOCUS (NM_FIRST-8)
  93. #define NM_CUSTOMDRAW (NM_FIRST-12)
  94. #define NM_HOVER (NM_FIRST-13)
  95. #define NM_NCHITTEST (NM_FIRST-14)
  96. #define NM_KEYDOWN (NM_FIRST-15)
  97. #define NM_RELEASEDCAPTURE (NM_FIRST-16)
  98. #define NM_SETCURSOR (NM_FIRST-17)
  99. #define NM_CHAR (NM_FIRST-18)
  100. #define NM_TOOLTIPSCREATED (NM_FIRST-19)
  101. #define NM_LDOWN (NM_FIRST-20)
  102. #define NM_RDOWN (NM_FIRST-21)
  103. #define NM_THEMECHANGED (NM_FIRST-22)
  104. #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
  105. (fn)((hwnd), (int)(wParam), (NMHDR*)(lParam))
  106. #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) \
  107. (LRESULT)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(idFrom), (LPARAM)(NMHDR*)(pnmhdr))
  108. /* callback constants */
  109. #define LPSTR_TEXTCALLBACKA ((LPSTR)-1L)
  110. #define LPSTR_TEXTCALLBACKW ((LPWSTR)-1L)
  111. #define LPSTR_TEXTCALLBACK WINELIB_NAME_AW(LPSTR_TEXTCALLBACK)
  112. #define I_IMAGECALLBACK (-1)
  113. #define I_IMAGENONE (-2)
  114. #define I_INDENTCALLBACK (-1)
  115. #define I_CHILDRENCALLBACK (-1)
  116. #define I_GROUPIDCALLBACK (-1)
  117. #define I_GROUPIDNONE (-2)
  118. #define I_COLUMNSCALLBACK ((UINT)-1)
  119. /* owner drawn types */
  120. #define ODT_HEADER 100
  121. #define ODT_TAB 101
  122. #define ODT_LISTVIEW 102
  123. /* common notification structures */
  124. typedef struct tagNMTOOLTIPSCREATED
  125. {
  126. NMHDR hdr;
  127. HWND hwndToolTips;
  128. } NMTOOLTIPSCREATED, *LPNMTOOLTIPSCREATED;
  129. typedef struct tagNMMOUSE
  130. {
  131. NMHDR hdr;
  132. DWORD dwItemSpec;
  133. DWORD dwItemData;
  134. POINT pt;
  135. DWORD dwHitInfo; /* info where on item or control the mouse is */
  136. } NMMOUSE, *LPNMMOUSE;
  137. typedef struct tagNMOBJECTNOTIFY
  138. {
  139. NMHDR hdr;
  140. int iItem;
  141. #ifdef __IID_DEFINED__
  142. const IID *piid;
  143. #else
  144. const void *piid;
  145. #endif
  146. void *pObject;
  147. HRESULT hResult;
  148. DWORD dwFlags;
  149. } NMOBJECTNOTIFY, *LPNMOBJECTNOTIFY;
  150. typedef struct tagNMKEY
  151. {
  152. NMHDR hdr;
  153. UINT nVKey;
  154. UINT uFlags;
  155. } NMKEY, *LPNMKEY;
  156. typedef struct tagNMCHAR
  157. {
  158. NMHDR hdr;
  159. UINT ch;
  160. DWORD dwItemPrev; /* Item previously selected */
  161. DWORD dwItemNext; /* Item to be selected */
  162. } NMCHAR, *LPNMCHAR;
  163. #ifndef CCSIZEOF_STRUCT
  164. #define CCSIZEOF_STRUCT(name, member) \
  165. (((INT)((LPBYTE)(&((name*)0)->member)-((LPBYTE)((name*)0))))+ \
  166. sizeof(((name*)0)->member))
  167. #endif
  168. /* This is only for Winelib applications. DON't use it wine itself!!! */
  169. #ifndef SNDMSG
  170. #ifdef __cplusplus
  171. #define SNDMSG ::SendMessage
  172. #else /* __cplusplus */
  173. #define SNDMSG SendMessage
  174. #endif /* __cplusplus */
  175. #endif /* SNDMSG */
  176. #ifdef __cplusplus
  177. #define SNDMSGA ::SendMessageA
  178. #define SNDMSGW ::SendMessageW
  179. #else
  180. #define SNDMSGA SendMessageA
  181. #define SNDMSGW SendMessageW
  182. #endif
  183. /* Custom Draw messages */
  184. #define CDRF_DODEFAULT 0x0
  185. #define CDRF_NEWFONT 0x00000002
  186. #define CDRF_SKIPDEFAULT 0x00000004
  187. #define CDRF_NOTIFYPOSTPAINT 0x00000010
  188. #define CDRF_NOTIFYITEMDRAW 0x00000020
  189. #define CDRF_NOTIFYSUBITEMDRAW 0x00000020
  190. #define CDRF_NOTIFYPOSTERASE 0x00000040
  191. #define CDRF_NOTIFYITEMERASE 0x00000080 /* obsolete ??? */
  192. /* drawstage flags */
  193. #define CDDS_PREPAINT 1
  194. #define CDDS_POSTPAINT 2
  195. #define CDDS_PREERASE 3
  196. #define CDDS_POSTERASE 4
  197. #define CDDS_ITEM 0x00010000
  198. #define CDDS_ITEMPREPAINT (CDDS_ITEM | CDDS_PREPAINT)
  199. #define CDDS_ITEMPOSTPAINT (CDDS_ITEM | CDDS_POSTPAINT)
  200. #define CDDS_ITEMPREERASE (CDDS_ITEM | CDDS_PREERASE)
  201. #define CDDS_ITEMPOSTERASE (CDDS_ITEM | CDDS_POSTERASE)
  202. #define CDDS_SUBITEM 0x00020000
  203. /* itemState flags */
  204. #define CDIS_SELECTED 0x0001
  205. #define CDIS_GRAYED 0x0002
  206. #define CDIS_DISABLED 0x0004
  207. #define CDIS_CHECKED 0x0008
  208. #define CDIS_FOCUS 0x0010
  209. #define CDIS_DEFAULT 0x0020
  210. #define CDIS_HOT 0x0040
  211. #define CDIS_MARKED 0x0080
  212. #define CDIS_INDETERMINATE 0x0100
  213. #define CDIS_SHOWKEYBOARDCUES 0x0200
  214. typedef struct tagNMCUSTOMDRAWINFO
  215. {
  216. NMHDR hdr;
  217. DWORD dwDrawStage;
  218. HDC hdc;
  219. RECT rc;
  220. DWORD dwItemSpec;
  221. UINT uItemState;
  222. LPARAM lItemlParam;
  223. } NMCUSTOMDRAW, *LPNMCUSTOMDRAW;
  224. typedef struct tagNMTTCUSTOMDRAW
  225. {
  226. NMCUSTOMDRAW nmcd;
  227. UINT uDrawFlags;
  228. } NMTTCUSTOMDRAW, *LPNMTTCUSTOMDRAW;
  229. /* StatusWindow */
  230. #define STATUSCLASSNAMEA "msctls_statusbar32"
  231. #if defined(__GNUC__)
  232. # define STATUSCLASSNAMEW (const WCHAR []){ 'm','s','c','t','l','s','_', \
  233. 's','t','a','t','u','s','b','a','r','3','2',0 }
  234. #elif defined(_MSC_VER)
  235. # define STATUSCLASSNAMEW L"msctls_statusbar32"
  236. #else
  237. static const WCHAR STATUSCLASSNAMEW[] = { 'm','s','c','t','l','s','_',
  238. 's','t','a','t','u','s','b','a','r','3','2',0 };
  239. #endif
  240. #define STATUSCLASSNAME WINELIB_NAME_AW(STATUSCLASSNAME)
  241. #define SBT_NOBORDERS 0x0100
  242. #define SBT_POPOUT 0x0200
  243. #define SBT_RTLREADING 0x0400 /* not supported */
  244. #define SBT_TOOLTIPS 0x0800
  245. #define SBT_OWNERDRAW 0x1000
  246. #define SBARS_SIZEGRIP 0x0100
  247. #define SB_SETTEXTA (WM_USER+1)
  248. #define SB_SETTEXTW (WM_USER+11)
  249. #define SB_SETTEXT WINELIB_NAME_AW(SB_SETTEXT)
  250. #define SB_GETTEXTA (WM_USER+2)
  251. #define SB_GETTEXTW (WM_USER+13)
  252. #define SB_GETTEXT WINELIB_NAME_AW(SB_GETTEXT)
  253. #define SB_GETTEXTLENGTHA (WM_USER+3)
  254. #define SB_GETTEXTLENGTHW (WM_USER+12)
  255. #define SB_GETTEXTLENGTH WINELIB_NAME_AW(SB_GETTEXTLENGTH)
  256. #define SB_SETPARTS (WM_USER+4)
  257. #define SB_SETBORDERS (WM_USER+5)
  258. #define SB_GETPARTS (WM_USER+6)
  259. #define SB_GETBORDERS (WM_USER+7)
  260. #define SB_SETMINHEIGHT (WM_USER+8)
  261. #define SB_SIMPLE (WM_USER+9)
  262. #define SB_GETRECT (WM_USER+10)
  263. #define SB_ISSIMPLE (WM_USER+14)
  264. #define SB_SETICON (WM_USER+15)
  265. #define SB_SETTIPTEXTA (WM_USER+16)
  266. #define SB_SETTIPTEXTW (WM_USER+17)
  267. #define SB_SETTIPTEXT WINELIB_NAME_AW(SB_SETTIPTEXT)
  268. #define SB_GETTIPTEXTA (WM_USER+18)
  269. #define SB_GETTIPTEXTW (WM_USER+19)
  270. #define SB_GETTIPTEXT WINELIB_NAME_AW(SB_GETTIPTEXT)
  271. #define SB_GETICON (WM_USER+20)
  272. #define SB_SETBKCOLOR CCM_SETBKCOLOR /* lParam = bkColor */
  273. #define SB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
  274. #define SB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
  275. #define SBN_FIRST (0U-880U)
  276. #define SBN_LAST (0U-899U)
  277. #define SBN_SIMPLEMODECHANGE (SBN_FIRST-0)
  278. HWND WINAPI CreateStatusWindowA (LONG, LPCSTR, HWND, UINT);
  279. HWND WINAPI CreateStatusWindowW (LONG, LPCWSTR, HWND, UINT);
  280. #define CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow)
  281. VOID WINAPI DrawStatusTextA (HDC, LPRECT, LPCSTR, UINT);
  282. VOID WINAPI DrawStatusTextW (HDC, LPRECT, LPCWSTR, UINT);
  283. #define DrawStatusText WINELIB_NAME_AW(DrawStatusText)
  284. VOID WINAPI MenuHelp (UINT, WPARAM, LPARAM, HMENU,
  285. HINSTANCE, HWND, UINT*);
  286. typedef struct tagCOLORSCHEME
  287. {
  288. DWORD dwSize;
  289. COLORREF clrBtnHighlight; /* highlight color */
  290. COLORREF clrBtnShadow; /* shadow color */
  291. } COLORSCHEME, *LPCOLORSCHEME;
  292. /**************************************************************************
  293. * Drag List control
  294. */
  295. typedef struct tagDRAGLISTINFO
  296. {
  297. UINT uNotification;
  298. HWND hWnd;
  299. POINT ptCursor;
  300. } DRAGLISTINFO, *LPDRAGLISTINFO;
  301. #define DL_BEGINDRAG (WM_USER+133)
  302. #define DL_DRAGGING (WM_USER+134)
  303. #define DL_DROPPED (WM_USER+135)
  304. #define DL_CANCELDRAG (WM_USER+136)
  305. #define DL_CURSORSET 0
  306. #define DL_STOPCURSOR 1
  307. #define DL_COPYCURSOR 2
  308. #define DL_MOVECURSOR 3
  309. #define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg")
  310. BOOL WINAPI MakeDragList (HWND);
  311. VOID WINAPI DrawInsert (HWND, HWND, INT);
  312. INT WINAPI LBItemFromPt (HWND, POINT, BOOL);
  313. /* UpDown */
  314. #define UPDOWN_CLASSA "msctls_updown32"
  315. #if defined(__GNUC__)
  316. # define UPDOWN_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
  317. 'u','p','d','o','w','n','3','2',0 }
  318. #elif defined(_MSC_VER)
  319. # define UPDOWN_CLASSW L"msctls_updown32"
  320. #else
  321. static const WCHAR UPDOWN_CLASSW[] = { 'm','s','c','t','l','s','_',
  322. 'u','p','d','o','w','n','3','2',0 };
  323. #endif
  324. #define UPDOWN_CLASS WINELIB_NAME_AW(UPDOWN_CLASS)
  325. typedef struct _UDACCEL
  326. {
  327. UINT nSec;
  328. UINT nInc;
  329. } UDACCEL, *LPUDACCEL;
  330. #define UD_MAXVAL 0x7fff
  331. #define UD_MINVAL 0x8001
  332. #define UDS_WRAP 0x0001
  333. #define UDS_SETBUDDYINT 0x0002
  334. #define UDS_ALIGNRIGHT 0x0004
  335. #define UDS_ALIGNLEFT 0x0008
  336. #define UDS_AUTOBUDDY 0x0010
  337. #define UDS_ARROWKEYS 0x0020
  338. #define UDS_HORZ 0x0040
  339. #define UDS_NOTHOUSANDS 0x0080
  340. #define UDS_HOTTRACK 0x0100
  341. #define UDN_FIRST (0U-721)
  342. #define UDN_LAST (0U-740)
  343. #define UDN_DELTAPOS (UDN_FIRST-1)
  344. #define UDM_SETRANGE (WM_USER+101)
  345. #define UDM_GETRANGE (WM_USER+102)
  346. #define UDM_SETPOS (WM_USER+103)
  347. #define UDM_GETPOS (WM_USER+104)
  348. #define UDM_SETBUDDY (WM_USER+105)
  349. #define UDM_GETBUDDY (WM_USER+106)
  350. #define UDM_SETACCEL (WM_USER+107)
  351. #define UDM_GETACCEL (WM_USER+108)
  352. #define UDM_SETBASE (WM_USER+109)
  353. #define UDM_GETBASE (WM_USER+110)
  354. #define UDM_SETRANGE32 (WM_USER+111)
  355. #define UDM_GETRANGE32 (WM_USER+112)
  356. #define UDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
  357. #define UDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
  358. #define UDM_SETPOS32 (WM_USER+113)
  359. #define UDM_GETPOS32 (WM_USER+114)
  360. #define NMUPDOWN NM_UPDOWN
  361. #define LPNMUPDOWN LPNM_UPDOWN
  362. typedef struct tagNM_UPDOWN
  363. {
  364. NMHDR hdr;
  365. int iPos;
  366. int iDelta;
  367. } NM_UPDOWN, *LPNM_UPDOWN;
  368. HWND WINAPI CreateUpDownControl (DWORD, INT, INT, INT, INT,
  369. HWND, INT, HINSTANCE, HWND,
  370. INT, INT, INT);
  371. /* Progress Bar */
  372. #define PROGRESS_CLASSA "msctls_progress32"
  373. #if defined(__GNUC__)
  374. # define PROGRESS_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
  375. 'p','r','o','g','r','e','s','s','3','2',0 }
  376. #elif defined(_MSC_VER)
  377. # define PROGRESS_CLASSW L"msctls_progress32"
  378. #else
  379. static const WCHAR PROGRESS_CLASSW[] = { 'm','s','c','t','l','s','_',
  380. 'p','r','o','g','r','e','s','s','3','2',0 };
  381. #endif
  382. #define PROGRESS_CLASS WINELIB_NAME_AW(PROGRESS_CLASS)
  383. #define PBM_SETRANGE (WM_USER+1)
  384. #define PBM_SETPOS (WM_USER+2)
  385. #define PBM_DELTAPOS (WM_USER+3)
  386. #define PBM_SETSTEP (WM_USER+4)
  387. #define PBM_STEPIT (WM_USER+5)
  388. #define PBM_SETRANGE32 (WM_USER+6)
  389. #define PBM_GETRANGE (WM_USER+7)
  390. #define PBM_GETPOS (WM_USER+8)
  391. #define PBM_SETBARCOLOR (WM_USER+9)
  392. #define PBM_SETMARQUEE (WM_USER+10)
  393. #define PBM_SETBKCOLOR CCM_SETBKCOLOR
  394. #define PBS_SMOOTH 0x01
  395. #define PBS_VERTICAL 0x04
  396. #define PBS_MARQUEE 0x08
  397. typedef struct
  398. {
  399. INT iLow;
  400. INT iHigh;
  401. } PBRANGE, *PPBRANGE;
  402. /* ImageList */
  403. struct _IMAGELIST;
  404. typedef struct _IMAGELIST *HIMAGELIST;
  405. #define CLR_NONE 0xFFFFFFFF
  406. #define CLR_DEFAULT 0xFF000000
  407. #define CLR_HILIGHT CLR_DEFAULT
  408. #define ILC_MASK 0x0001
  409. #define ILC_COLOR 0x0000
  410. #define ILC_COLORDDB 0x00FE
  411. #define ILC_COLOR4 0x0004
  412. #define ILC_COLOR8 0x0008
  413. #define ILC_COLOR16 0x0010
  414. #define ILC_COLOR24 0x0018
  415. #define ILC_COLOR32 0x0020
  416. #define ILC_PALETTE 0x0800 /* no longer supported by M$ */
  417. #define ILC_MIRROR 0x2000
  418. #define ILC_PERITEMMIRROR 0x8000
  419. #define ILD_NORMAL 0x0000
  420. #define ILD_TRANSPARENT 0x0001
  421. #define ILD_BLEND25 0x0002
  422. #define ILD_BLEND50 0x0004
  423. #define ILD_MASK 0x0010
  424. #define ILD_IMAGE 0x0020
  425. #define ILD_ROP 0x0040
  426. #define ILD_OVERLAYMASK 0x0F00
  427. #define ILD_PRESERVEALPHA 0x1000
  428. #define ILD_SCALE 0x2000
  429. #define ILD_DPISCALE 0x4000
  430. #define ILD_SELECTED ILD_BLEND50
  431. #define ILD_FOCUS ILD_BLEND25
  432. #define ILD_BLEND ILD_BLEND50
  433. #define INDEXTOOVERLAYMASK(i) ((i)<<8)
  434. #define INDEXTOSTATEIMAGEMASK(i) ((i)<<12)
  435. #define ILCF_MOVE (0x00000000)
  436. #define ILCF_SWAP (0x00000001)
  437. #define ILS_NORMAL 0x0000
  438. #define ILS_GLOW 0x0001
  439. #define ILS_SHADOW 0x0002
  440. #define ILS_SATURATE 0x0004
  441. #define ILS_ALPHA 0x0008
  442. typedef struct _IMAGEINFO
  443. {
  444. HBITMAP hbmImage;
  445. HBITMAP hbmMask;
  446. INT Unused1;
  447. INT Unused2;
  448. RECT rcImage;
  449. } IMAGEINFO, *LPIMAGEINFO;
  450. typedef struct _IMAGELISTDRAWPARAMS
  451. {
  452. DWORD cbSize;
  453. HIMAGELIST himl;
  454. INT i;
  455. HDC hdcDst;
  456. INT x;
  457. INT y;
  458. INT cx;
  459. INT cy;
  460. INT xBitmap; /* x offest from the upperleft of bitmap */
  461. INT yBitmap; /* y offset from the upperleft of bitmap */
  462. COLORREF rgbBk;
  463. COLORREF rgbFg;
  464. UINT fStyle;
  465. DWORD dwRop;
  466. DWORD fState;
  467. DWORD Frame;
  468. DWORD crEffect;
  469. } IMAGELISTDRAWPARAMS, *LPIMAGELISTDRAWPARAMS;
  470. INT WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP);
  471. INT WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF);
  472. BOOL WINAPI ImageList_BeginDrag(HIMAGELIST,INT,INT,INT);
  473. BOOL WINAPI ImageList_Copy(HIMAGELIST,INT,HIMAGELIST,INT,UINT);
  474. HIMAGELIST WINAPI ImageList_Create(INT,INT,UINT,INT,INT);
  475. BOOL WINAPI ImageList_Destroy(HIMAGELIST);
  476. BOOL WINAPI ImageList_DragEnter(HWND,INT,INT);
  477. BOOL WINAPI ImageList_DragLeave(HWND);
  478. BOOL WINAPI ImageList_DragMove(INT,INT);
  479. BOOL WINAPI ImageList_DragShowNolock (BOOL);
  480. BOOL WINAPI ImageList_Draw(HIMAGELIST,INT,HDC,INT,INT,UINT);
  481. BOOL WINAPI ImageList_DrawEx(HIMAGELIST,INT,HDC,INT,INT,INT,
  482. INT,COLORREF,COLORREF,UINT);
  483. BOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*);
  484. HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST);
  485. VOID WINAPI ImageList_EndDrag(VOID);
  486. COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST);
  487. HIMAGELIST WINAPI ImageList_GetDragImage(POINT*,POINT*);
  488. HICON WINAPI ImageList_GetIcon(HIMAGELIST,INT,UINT);
  489. BOOL WINAPI ImageList_GetIconSize(HIMAGELIST,INT*,INT*);
  490. INT WINAPI ImageList_GetImageCount(HIMAGELIST);
  491. BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST,INT,IMAGEINFO*);
  492. BOOL WINAPI ImageList_GetImageRect(HIMAGELIST,INT,LPRECT);
  493. HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE,LPCSTR,INT,INT,
  494. COLORREF,UINT,UINT);
  495. HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE,LPCWSTR,INT,INT,
  496. COLORREF,UINT,UINT);
  497. #define ImageList_LoadImage WINELIB_NAME_AW(ImageList_LoadImage)
  498. HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,INT,HIMAGELIST,INT,INT,INT);
  499. BOOL WINAPI ImageList_Remove(HIMAGELIST,INT);
  500. BOOL WINAPI ImageList_Replace(HIMAGELIST,INT,HBITMAP,HBITMAP);
  501. INT WINAPI ImageList_ReplaceIcon(HIMAGELIST,INT,HICON);
  502. COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF);
  503. BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST,INT,INT,INT);
  504. BOOL WINAPI ImageList_SetIconSize(HIMAGELIST,INT,INT);
  505. BOOL WINAPI ImageList_SetImageCount(HIMAGELIST,UINT);
  506. BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST,INT,INT);
  507. #ifdef __IStream_INTERFACE_DEFINED__
  508. HIMAGELIST WINAPI ImageList_Read(LPSTREAM);
  509. BOOL WINAPI ImageList_Write(HIMAGELIST, LPSTREAM);
  510. #endif
  511. #define ImageList_AddIcon(himl,hicon) ImageList_ReplaceIcon(himl,-1,hicon)
  512. #define ImageList_ExtractIcon(hi,himl,i) ImageList_GetIcon(himl,i,0)
  513. #define ImageList_LoadBitmap(hi,lpbmp,cx,cGrow,crMask) \
  514. ImageList_LoadImage(hi,lpbmp,cx,cGrow,crMask,IMAGE_BITMAP,0)
  515. #define ImageList_RemoveAll(himl) ImageList_Remove(himl,-1)
  516. #ifndef WM_MOUSEHOVER
  517. #define WM_MOUSEHOVER 0x02A1
  518. #define WM_MOUSELEAVE 0x02A3
  519. #endif
  520. #ifndef TME_HOVER
  521. #define TME_HOVER 0x00000001
  522. #define TME_LEAVE 0x00000002
  523. #define TME_NONCLIENT 0x00000010
  524. #define TME_QUERY 0x40000000
  525. #define TME_CANCEL 0x80000000
  526. #define HOVER_DEFAULT 0xFFFFFFFF
  527. typedef struct tagTRACKMOUSEEVENT {
  528. DWORD cbSize;
  529. DWORD dwFlags;
  530. HWND hwndTrack;
  531. DWORD dwHoverTime;
  532. } TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
  533. #endif
  534. BOOL
  535. WINAPI
  536. _TrackMouseEvent(
  537. LPTRACKMOUSEEVENT lpEventTrack);
  538. /* Flat Scrollbar control */
  539. #define FLATSB_CLASSA "flatsb_class32"
  540. #if defined(__GNUC__)
  541. # define FLATSB_CLASSW (const WCHAR []){ 'f','l','a','t','s','b','_', \
  542. 'c','l','a','s','s','3','2',0 }
  543. #elif defined(_MSC_VER)
  544. # define FLATSB_CLASSW L"flatsb_class32"
  545. #else
  546. static const WCHAR FLATSB_CLASSW[] = { 'f','l','a','t','s','b','_',
  547. 'c','l','a','s','s','3','2',0 };
  548. #endif
  549. #define FLATSB_CLASS WINELIB_NAME_AW(FLATSB_CLASS)
  550. #define WSB_PROP_CYVSCROLL 0x00000001L
  551. #define WSB_PROP_CXHSCROLL 0x00000002L
  552. #define WSB_PROP_CYHSCROLL 0x00000004L
  553. #define WSB_PROP_CXVSCROLL 0x00000008L
  554. #define WSB_PROP_CXHTHUMB 0x00000010L
  555. #define WSB_PROP_CYVTHUMB 0x00000020L
  556. #define WSB_PROP_VBKGCOLOR 0x00000040L
  557. #define WSB_PROP_HBKGCOLOR 0x00000080L
  558. #define WSB_PROP_VSTYLE 0x00000100L
  559. #define WSB_PROP_HSTYLE 0x00000200L
  560. #define WSB_PROP_WINSTYLE 0x00000400L
  561. #define WSB_PROP_PALETTE 0x00000800L
  562. #define WSB_PROP_MASK 0x00000FFFL
  563. #define FSB_REGULAR_MODE 0
  564. #define FSB_ENCARTA_MODE 1
  565. #define FSB_FLAT_MODE 2
  566. BOOL WINAPI FlatSB_EnableScrollBar(HWND, INT, UINT);
  567. BOOL WINAPI FlatSB_ShowScrollBar(HWND, INT, BOOL);
  568. BOOL WINAPI FlatSB_GetScrollRange(HWND, INT, LPINT, LPINT);
  569. BOOL WINAPI FlatSB_GetScrollInfo(HWND, INT, LPSCROLLINFO);
  570. INT WINAPI FlatSB_GetScrollPos(HWND, INT);
  571. BOOL WINAPI FlatSB_GetScrollProp(HWND, INT, LPINT);
  572. INT WINAPI FlatSB_SetScrollPos(HWND, INT, INT, BOOL);
  573. INT WINAPI FlatSB_SetScrollInfo(HWND, INT, LPSCROLLINFO, BOOL);
  574. INT WINAPI FlatSB_SetScrollRange(HWND, INT, INT, INT, BOOL);
  575. BOOL WINAPI FlatSB_SetScrollProp(HWND, UINT, INT, BOOL);
  576. BOOL WINAPI InitializeFlatSB(HWND);
  577. HRESULT WINAPI UninitializeFlatSB(HWND);
  578. /* Subclassing stuff */
  579. typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR);
  580. BOOL WINAPI SetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR);
  581. BOOL WINAPI GetWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR, DWORD_PTR*);
  582. BOOL WINAPI RemoveWindowSubclass(HWND, SUBCLASSPROC, UINT_PTR);
  583. LRESULT WINAPI DefSubclassProc(HWND, UINT, WPARAM, LPARAM);
  584. int WINAPI DrawShadowText(HDC, LPCWSTR, UINT, RECT*, DWORD, COLORREF, COLORREF, int, int);
  585. /* Header control */
  586. #define WC_HEADERA "SysHeader32"
  587. #if defined(__GNUC__)
  588. # define WC_HEADERW (const WCHAR []){ 'S','y','s','H','e','a','d','e','r','3','2',0 }
  589. #elif defined(_MSC_VER)
  590. # define WC_HEADERW L"SysHeader32"
  591. #else
  592. static const WCHAR WC_HEADERW[] = { 'S','y','s','H','e','a','d','e','r','3','2',0 };
  593. #endif
  594. #define WC_HEADER WINELIB_NAME_AW(WC_HEADER)
  595. #define HDS_HORZ 0x0000
  596. #define HDS_BUTTONS 0x0002
  597. #define HDS_HOTTRACK 0x0004
  598. #define HDS_HIDDEN 0x0008
  599. #define HDS_DRAGDROP 0x0040
  600. #define HDS_FULLDRAG 0x0080
  601. #define HDS_FILTERBAR 0x0100
  602. #define HDS_FLAT 0x0200
  603. #define HDI_WIDTH 0x0001
  604. #define HDI_HEIGHT HDI_WIDTH
  605. #define HDI_TEXT 0x0002
  606. #define HDI_FORMAT 0x0004
  607. #define HDI_LPARAM 0x0008
  608. #define HDI_BITMAP 0x0010
  609. #define HDI_IMAGE 0x0020
  610. #define HDI_DI_SETITEM 0x0040
  611. #define HDI_ORDER 0x0080
  612. #define HDI_FILTER 0x0100
  613. #define HDF_LEFT 0x0000
  614. #define HDF_RIGHT 0x0001
  615. #define HDF_CENTER 0x0002
  616. #define HDF_JUSTIFYMASK 0x0003
  617. #define HDF_RTLREADING 0x0004
  618. #define HDF_SORTDOWN 0x0200
  619. #define HDF_SORTUP 0x0400
  620. #define HDF_IMAGE 0x0800
  621. #define HDF_BITMAP_ON_RIGHT 0x1000
  622. #define HDF_BITMAP 0x2000
  623. #define HDF_STRING 0x4000
  624. #define HDF_OWNERDRAW 0x8000
  625. #define HHT_NOWHERE 0x0001
  626. #define HHT_ONHEADER 0x0002
  627. #define HHT_ONDIVIDER 0x0004
  628. #define HHT_ONDIVOPEN 0x0008
  629. #define HHT_ONFILTER 0x0010
  630. #define HHT_ONFILTERBUTTON 0x0020
  631. #define HHT_ABOVE 0x0100
  632. #define HHT_BELOW 0x0200
  633. #define HHT_TORIGHT 0x0400
  634. #define HHT_TOLEFT 0x0800
  635. #define HDM_FIRST 0x1200
  636. #define HDM_GETITEMCOUNT (HDM_FIRST+0)
  637. #define HDM_INSERTITEMA (HDM_FIRST+1)
  638. #define HDM_INSERTITEMW (HDM_FIRST+10)
  639. #define HDM_INSERTITEM WINELIB_NAME_AW(HDM_INSERTITEM)
  640. #define HDM_DELETEITEM (HDM_FIRST+2)
  641. #define HDM_GETITEMA (HDM_FIRST+3)
  642. #define HDM_GETITEMW (HDM_FIRST+11)
  643. #define HDM_GETITEM WINELIB_NAME_AW(HDM_GETITEM)
  644. #define HDM_SETITEMA (HDM_FIRST+4)
  645. #define HDM_SETITEMW (HDM_FIRST+12)
  646. #define HDM_SETITEM WINELIB_NAME_AW(HDM_SETITEM)
  647. #define HDM_LAYOUT (HDM_FIRST+5)
  648. #define HDM_HITTEST (HDM_FIRST+6)
  649. #define HDM_GETITEMRECT (HDM_FIRST+7)
  650. #define HDM_SETIMAGELIST (HDM_FIRST+8)
  651. #define HDM_GETIMAGELIST (HDM_FIRST+9)
  652. #define HDM_ORDERTOINDEX (HDM_FIRST+15)
  653. #define HDM_CREATEDRAGIMAGE (HDM_FIRST+16)
  654. #define HDM_GETORDERARRAY (HDM_FIRST+17)
  655. #define HDM_SETORDERARRAY (HDM_FIRST+18)
  656. #define HDM_SETHOTDIVIDER (HDM_FIRST+19)
  657. #define HDM_SETBITMAPMARGIN (HDM_FIRST+20)
  658. #define HDM_GETBITMAPMARGIN (HDM_FIRST+21)
  659. #define HDM_SETFILTERCHANGETIMEOUT (HDM_FIRST+22)
  660. #define HDM_EDITFILTER (HDM_FIRST+23)
  661. #define HDM_CLEARFILTER (HDM_FIRST+24)
  662. #define HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
  663. #define HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
  664. #define HDN_FIRST (0U-300U)
  665. #define HDN_LAST (0U-399U)
  666. #define HDN_ITEMCHANGINGA (HDN_FIRST-0)
  667. #define HDN_ITEMCHANGINGW (HDN_FIRST-20)
  668. #define HDN_ITEMCHANGING WINELIB_NAME_AW(HDN_ITEMCHANGING)
  669. #define HDN_ITEMCHANGEDA (HDN_FIRST-1)
  670. #define HDN_ITEMCHANGEDW (HDN_FIRST-21)
  671. #define HDN_ITEMCHANGED WINELIB_NAME_AW(HDN_ITEMCHANGED)
  672. #define HDN_ITEMCLICKA (HDN_FIRST-2)
  673. #define HDN_ITEMCLICKW (HDN_FIRST-22)
  674. #define HDN_ITEMCLICK WINELIB_NAME_AW(HDN_ITEMCLICK)
  675. #define HDN_ITEMDBLCLICKA (HDN_FIRST-3)
  676. #define HDN_ITEMDBLCLICKW (HDN_FIRST-23)
  677. #define HDN_ITEMDBLCLICK WINELIB_NAME_AW(HDN_ITEMDBLCLICK)
  678. #define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5)
  679. #define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25)
  680. #define HDN_DIVIDERDBLCLICK WINELIB_NAME_AW(HDN_DIVIDERDBLCLICK)
  681. #define HDN_BEGINTRACKA (HDN_FIRST-6)
  682. #define HDN_BEGINTRACKW (HDN_FIRST-26)
  683. #define HDN_BEGINTRACK WINELIB_NAME_AW(HDN_BEGINTRACK)
  684. #define HDN_ENDTRACKA (HDN_FIRST-7)
  685. #define HDN_ENDTRACKW (HDN_FIRST-27)
  686. #define HDN_ENDTRACK WINELIB_NAME_AW(HDN_ENDTRACK)
  687. #define HDN_TRACKA (HDN_FIRST-8)
  688. #define HDN_TRACKW (HDN_FIRST-28)
  689. #define HDN_TRACK WINELIB_NAME_AW(HDN_TRACK)
  690. #define HDN_GETDISPINFOA (HDN_FIRST-9)
  691. #define HDN_GETDISPINFOW (HDN_FIRST-29)
  692. #define HDN_GETDISPINFO WINELIB_NAME_AW(HDN_GETDISPINFO)
  693. #define HDN_BEGINDRAG (HDN_FIRST-10)
  694. #define HDN_ENDDRAG (HDN_FIRST-11)
  695. #define HDN_FILTERCHANGE (HDN_FIRST-12)
  696. #define HDN_FILTERBTNCLICK (HDN_FIRST-13)
  697. typedef struct _HD_LAYOUT
  698. {
  699. RECT *prc;
  700. WINDOWPOS *pwpos;
  701. } HDLAYOUT, *LPHDLAYOUT;
  702. #define HD_LAYOUT HDLAYOUT
  703. typedef struct _HD_ITEMA
  704. {
  705. UINT mask;
  706. INT cxy;
  707. LPSTR pszText;
  708. HBITMAP hbm;
  709. INT cchTextMax;
  710. INT fmt;
  711. LPARAM lParam;
  712. INT iImage;
  713. INT iOrder;
  714. UINT type;
  715. LPVOID pvFilter;
  716. } HDITEMA, *LPHDITEMA;
  717. typedef struct _HD_ITEMW
  718. {
  719. UINT mask;
  720. INT cxy;
  721. LPWSTR pszText;
  722. HBITMAP hbm;
  723. INT cchTextMax;
  724. INT fmt;
  725. LPARAM lParam;
  726. INT iImage;
  727. INT iOrder;
  728. UINT type;
  729. LPVOID pvFilter;
  730. } HDITEMW, *LPHDITEMW;
  731. #define HDITEM WINELIB_NAME_AW(HDITEM)
  732. #define LPHDITEM WINELIB_NAME_AW(LPHDITEM)
  733. #define HD_ITEM HDITEM
  734. #define HDITEM_V1_SIZEA CCSIZEOF_STRUCT(HDITEMA, lParam)
  735. #define HDITEM_V1_SIZEW CCSIZEOF_STRUCT(HDITEMW, lParam)
  736. #define HDITEM_V1_SIZE WINELIB_NAME_AW(HDITEM_V1_SIZE)
  737. #define HDFT_ISSTRING 0x0000
  738. #define HDFT_ISNUMBER 0x0001
  739. #define HDFT_HASNOVALUE 0x8000
  740. typedef struct _HD_TEXTFILTERA
  741. {
  742. LPSTR pszText;
  743. INT cchTextMax;
  744. } HD_TEXTFILTERA, *LPHD_TEXTFILTERA;
  745. typedef struct _HD_TEXTFILTERW
  746. {
  747. LPWSTR pszText;
  748. INT cchTextMax;
  749. } HD_TEXTFILTERW, *LPHD_TEXTFILTERW;
  750. #define HD_TEXTFILTER WINELIB_NAME_AW(HD_TEXTFILTER)
  751. #define HDTEXTFILTER WINELIB_NAME_AW(HD_TEXTFILTER)
  752. #define LPHD_TEXTFILTER WINELIB_NAME_AW(LPHD_TEXTFILTER)
  753. #define LPHDTEXTFILTER WINELIB_NAME_AW(LPHD_TEXTFILTER)
  754. typedef struct _HD_HITTESTINFO
  755. {
  756. POINT pt;
  757. UINT flags;
  758. INT iItem;
  759. } HDHITTESTINFO, *LPHDHITTESTINFO;
  760. #define HD_HITTESTINFO HDHITTESTINFO
  761. typedef struct tagNMHEADERA
  762. {
  763. NMHDR hdr;
  764. INT iItem;
  765. INT iButton;
  766. HDITEMA *pitem;
  767. } NMHEADERA, *LPNMHEADERA;
  768. typedef struct tagNMHEADERW
  769. {
  770. NMHDR hdr;
  771. INT iItem;
  772. INT iButton;
  773. HDITEMW *pitem;
  774. } NMHEADERW, *LPNMHEADERW;
  775. #define NMHEADER WINELIB_NAME_AW(NMHEADER)
  776. #define LPNMHEADER WINELIB_NAME_AW(LPNMHEADER)
  777. #define HD_NOTIFY NMHEADER
  778. typedef struct tagNMHDDISPINFOA
  779. {
  780. NMHDR hdr;
  781. INT iItem;
  782. UINT mask;
  783. LPSTR pszText;
  784. INT cchTextMax;
  785. INT iImage;
  786. LPARAM lParam;
  787. } NMHDDISPINFOA, *LPNMHDDISPINFOA;
  788. typedef struct tagNMHDDISPINFOW
  789. {
  790. NMHDR hdr;
  791. INT iItem;
  792. UINT mask;
  793. LPWSTR pszText;
  794. INT cchTextMax;
  795. INT iImage;
  796. LPARAM lParam;
  797. } NMHDDISPINFOW, *LPNMHDDISPINFOW;
  798. #define NMHDDISPINFO WINELIB_NAME_AW(NMHDDISPINFO)
  799. #define LPNMHDDISPINFO WINELIB_NAME_AW(LPNMHDDISPINFO)
  800. typedef struct tagNMHDFILTERBTNCLICK
  801. {
  802. NMHDR hdr;
  803. INT iItem;
  804. RECT rc;
  805. } NMHDFILTERBTNCLICK, *LPNMHDFILTERBTNCLICK;
  806. #define Header_GetItemCount(hwndHD) \
  807. (INT)SNDMSGA((hwndHD),HDM_GETITEMCOUNT,0,0L)
  808. #define Header_InsertItemA(hwndHD,i,phdi) \
  809. (INT)SNDMSGA((hwndHD),HDM_INSERTITEMA,(WPARAM)(INT)(i),(LPARAM)(const HDITEMA*)(phdi))
  810. #define Header_InsertItemW(hwndHD,i,phdi) \
  811. (INT)SNDMSGW((hwndHD),HDM_INSERTITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi))
  812. #define Header_InsertItem WINELIB_NAME_AW(Header_InsertItem)
  813. #define Header_DeleteItem(hwndHD,i) \
  814. (BOOL)SNDMSGA((hwndHD),HDM_DELETEITEM,(WPARAM)(INT)(i),0L)
  815. #define Header_GetItemA(hwndHD,i,phdi) \
  816. (BOOL)SNDMSGA((hwndHD),HDM_GETITEMA,(WPARAM)(INT)(i),(LPARAM)(HDITEMA*)(phdi))
  817. #define Header_GetItemW(hwndHD,i,phdi) \
  818. (BOOL)SNDMSGW((hwndHD),HDM_GETITEMW,(WPARAM)(INT)(i),(LPARAM)(HDITEMW*)(phdi))
  819. #define Header_GetItem WINELIB_NAME_AW(Header_GetItem)
  820. #define Header_SetItemA(hwndHD,i,phdi) \
  821. (BOOL)SNDMSGA((hwndHD),HDM_SETITEMA,(WPARAM)(INT)(i),(LPARAM)(const HDITEMA*)(phdi))
  822. #define Header_SetItemW(hwndHD,i,phdi) \
  823. (BOOL)SNDMSGW((hwndHD),HDM_SETITEMW,(WPARAM)(INT)(i),(LPARAM)(const HDITEMW*)(phdi))
  824. #define Header_SetItem WINELIB_NAME_AW(Header_SetItem)
  825. #define Header_Layout(hwndHD,playout) \
  826. (BOOL)SNDMSGA((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout))
  827. #define Header_GetItemRect(hwnd,iItem,lprc) \
  828. (BOOL)SNDMSGA((hwnd),HDM_GETITEMRECT,(WPARAM)iItem,(LPARAM)lprc)
  829. #define Header_SetImageList(hwnd,himl) \
  830. (HIMAGELIST)SNDMSGA((hwnd),HDM_SETIMAGELIST,0,(LPARAM)himl)
  831. #define Header_GetImageList(hwnd) \
  832. (HIMAGELIST)SNDMSGA((hwnd),HDM_GETIMAGELIST,0,0)
  833. #define Header_OrderToIndex(hwnd,i) \
  834. (INT)SNDMSGA((hwnd),HDM_ORDERTOINDEX,(WPARAM)i,0)
  835. #define Header_CreateDragImage(hwnd,i) \
  836. (HIMAGELIST)SNDMSGA((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM)i,0)
  837. #define Header_GetOrderArray(hwnd,iCount,lpi) \
  838. (BOOL)SNDMSGA((hwnd),HDM_GETORDERARRAY,(WPARAM)iCount,(LPARAM)lpi)
  839. #define Header_SetOrderArray(hwnd,iCount,lpi) \
  840. (BOOL)SNDMSGA((hwnd),HDM_SETORDERARRAY,(WPARAM)iCount,(LPARAM)lpi)
  841. #define Header_SetHotDivider(hwnd,fPos,dw) \
  842. (INT)SNDMSGA((hwnd),HDM_SETHOTDIVIDER,(WPARAM)fPos,(LPARAM)dw)
  843. #define Header_SetUnicodeFormat(hwnd,fUnicode) \
  844. (BOOL)SNDMSGA((hwnd),HDM_SETUNICODEFORMAT,(WPARAM)(fUnicode),0)
  845. #define Header_GetUnicodeFormat(hwnd) \
  846. (BOOL)SNDMSGA((hwnd),HDM_GETUNICODEFORMAT,0,0)
  847. /* Win32 5.1 Button Theme */
  848. #define BCN_FIRST (0U-1250U)
  849. #define BCN_LAST (0U-1350U)
  850. #define BCN_HOTITEMCHANGE (BCN_FIRST + 0x0001)
  851. /* Toolbar */
  852. #define TOOLBARCLASSNAMEA "ToolbarWindow32"
  853. #if defined(__GNUC__)
  854. # define TOOLBARCLASSNAMEW (const WCHAR []){ 'T','o','o','l','b','a','r', \
  855. 'W','i','n','d','o','w','3','2',0 }
  856. #elif defined(_MSC_VER)
  857. # define TOOLBARCLASSNAMEW L"ToolbarWindow32"
  858. #else
  859. static const WCHAR TOOLBARCLASSNAMEW[] = { 'T','o','o','l','b','a','r',
  860. 'W','i','n','d','o','w','3','2',0 };
  861. #endif
  862. #define TOOLBARCLASSNAME WINELIB_NAME_AW(TOOLBARCLASSNAME)
  863. #define CMB_MASKED 0x02
  864. #define TBSTATE_CHECKED 0x01
  865. #define TBSTATE_PRESSED 0x02
  866. #define TBSTATE_ENABLED 0x04
  867. #define TBSTATE_HIDDEN 0x08
  868. #define TBSTATE_INDETERMINATE 0x10
  869. #define TBSTATE_WRAP 0x20
  870. #define TBSTATE_ELLIPSES 0x40
  871. #define TBSTATE_MARKED 0x80
  872. /* as of _WIN32_IE >= 0x0500 the following symbols are obsolete,
  873. * "everyone" should use the BTNS_... stuff below
  874. */
  875. #define TBSTYLE_BUTTON 0x00
  876. #define TBSTYLE_SEP 0x01
  877. #define TBSTYLE_CHECK 0x02
  878. #define TBSTYLE_GROUP 0x04
  879. #define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP | TBSTYLE_CHECK)
  880. #define TBSTYLE_DROPDOWN 0x08
  881. #define TBSTYLE_AUTOSIZE 0x10
  882. #define TBSTYLE_NOPREFIX 0x20
  883. #define BTNS_BUTTON TBSTYLE_BUTTON
  884. #define BTNS_SEP TBSTYLE_SEP
  885. #define BTNS_CHECK TBSTYLE_CHECK
  886. #define BTNS_GROUP TBSTYLE_GROUP
  887. #define BTNS_CHECKGROUP TBSTYLE_CHECKGROUP
  888. #define BTNS_DROPDOWN TBSTYLE_DROPDOWN
  889. #define BTNS_AUTOSIZE TBSTYLE_AUTOSIZE
  890. #define BTNS_NOPREFIX TBSTYLE_NOPREFIX
  891. #define BTNS_SHOWTEXT 0x40 /* ignored unless TBSTYLE_EX_MIXEDB set */
  892. #define BTNS_WHOLEDROPDOWN 0x80 /* draw dropdown arrow, but without split arrow section */
  893. #define TBSTYLE_TOOLTIPS 0x0100
  894. #define TBSTYLE_WRAPABLE 0x0200
  895. #define TBSTYLE_ALTDRAG 0x0400
  896. #define TBSTYLE_FLAT 0x0800
  897. #define TBSTYLE_LIST 0x1000
  898. #define TBSTYLE_CUSTOMERASE 0x2000
  899. #define TBSTYLE_REGISTERDROP 0x4000
  900. #define TBSTYLE_TRANSPARENT 0x8000
  901. #define TBSTYLE_EX_DRAWDDARROWS 0x00000001
  902. #define TBSTYLE_EX_UNDOC1 0x00000004 /* similar to TBSTYLE_WRAPABLE */
  903. #define TBSTYLE_EX_MIXEDBUTTONS 0x00000008
  904. #define TBSTYLE_EX_HIDECLIPPEDBUTTONS 0x00000010 /* don't show partially obscured buttons */
  905. #define TBSTYLE_EX_DOUBLEBUFFER 0x00000080 /* Double Buffer the toolbar ??? */
  906. #define TBIF_IMAGE 0x00000001
  907. #define TBIF_TEXT 0x00000002
  908. #define TBIF_STATE 0x00000004
  909. #define TBIF_STYLE 0x00000008
  910. #define TBIF_LPARAM 0x00000010
  911. #define TBIF_COMMAND 0x00000020
  912. #define TBIF_SIZE 0x00000040
  913. #define TBIF_BYINDEX 0x80000000
  914. #define TBBF_LARGE 0x0001
  915. #define TB_ENABLEBUTTON (WM_USER+1)
  916. #define TB_CHECKBUTTON (WM_USER+2)
  917. #define TB_PRESSBUTTON (WM_USER+3)
  918. #define TB_HIDEBUTTON (WM_USER+4)
  919. #define TB_INDETERMINATE (WM_USER+5)
  920. #define TB_MARKBUTTON (WM_USER+6)
  921. #define TB_ISBUTTONENABLED (WM_USER+9)
  922. #define TB_ISBUTTONCHECKED (WM_USER+10)
  923. #define TB_ISBUTTONPRESSED (WM_USER+11)
  924. #define TB_ISBUTTONHIDDEN (WM_USER+12)
  925. #define TB_ISBUTTONINDETERMINATE (WM_USER+13)
  926. #define TB_ISBUTTONHIGHLIGHTED (WM_USER+14)
  927. #define TB_SETSTATE (WM_USER+17)
  928. #define TB_GETSTATE (WM_USER+18)
  929. #define TB_ADDBITMAP (WM_USER+19)
  930. #define TB_ADDBUTTONSA (WM_USER+20)
  931. #define TB_ADDBUTTONSW (WM_USER+68)
  932. #define TB_ADDBUTTONS WINELIB_NAME_AW(TB_ADDBUTTONS)
  933. #define TB_HITTEST (WM_USER+69)
  934. #define TB_INSERTBUTTONA (WM_USER+21)
  935. #define TB_INSERTBUTTONW (WM_USER+67)
  936. #define TB_INSERTBUTTON WINELIB_NAME_AW(TB_INSERTBUTTON)
  937. #define TB_DELETEBUTTON (WM_USER+22)
  938. #define TB_GETBUTTON (WM_USER+23)
  939. #define TB_BUTTONCOUNT (WM_USER+24)
  940. #define TB_COMMANDTOINDEX (WM_USER+25)
  941. #define TB_SAVERESTOREA (WM_USER+26)
  942. #define TB_SAVERESTOREW (WM_USER+76)
  943. #define TB_SAVERESTORE WINELIB_NAME_AW(TB_SAVERESTORE)
  944. #define TB_CUSTOMIZE (WM_USER+27)
  945. #define TB_ADDSTRINGA (WM_USER+28)
  946. #define TB_ADDSTRINGW (WM_USER+77)
  947. #define TB_ADDSTRING WINELIB_NAME_AW(TB_ADDSTRING)
  948. #define TB_GETITEMRECT (WM_USER+29)
  949. #define TB_BUTTONSTRUCTSIZE (WM_USER+30)
  950. #define TB_SETBUTTONSIZE (WM_USER+31)
  951. #define TB_SETBITMAPSIZE (WM_USER+32)
  952. #define TB_AUTOSIZE (WM_USER+33)
  953. #define TB_GETTOOLTIPS (WM_USER+35)
  954. #define TB_SETTOOLTIPS (WM_USER+36)
  955. #define TB_SETPARENT (WM_USER+37)
  956. #define TB_SETROWS (WM_USER+39)
  957. #define TB_GETROWS (WM_USER+40)
  958. #define TB_GETBITMAPFLAGS (WM_USER+41)
  959. #define TB_SETCMDID (WM_USER+42)
  960. #define TB_CHANGEBITMAP (WM_USER+43)
  961. #define TB_GETBITMAP (WM_USER+44)
  962. #define TB_GETBUTTONTEXTA (WM_USER+45)
  963. #define TB_GETBUTTONTEXTW (WM_USER+75)
  964. #define TB_GETBUTTONTEXT WINELIB_NAME_AW(TB_GETBUTTONTEXT)
  965. #define TB_REPLACEBITMAP (WM_USER+46)
  966. #define TB_SETINDENT (WM_USER+47)
  967. #define TB_SETIMAGELIST (WM_USER+48)
  968. #define TB_GETIMAGELIST (WM_USER+49)
  969. #define TB_LOADIMAGES (WM_USER+50)
  970. #define TB_GETRECT (WM_USER+51) /* wParam is the Cmd instead of index */
  971. #define TB_SETHOTIMAGELIST (WM_USER+52)
  972. #define TB_GETHOTIMAGELIST (WM_USER+53)
  973. #define TB_SETDISABLEDIMAGELIST (WM_USER+54)
  974. #define TB_GETDISABLEDIMAGELIST (WM_USER+55)
  975. #define TB_SETSTYLE (WM_USER+56)
  976. #define TB_GETSTYLE (WM_USER+57)
  977. #define TB_GETBUTTONSIZE (WM_USER+58)
  978. #define TB_SETBUTTONWIDTH (WM_USER+59)
  979. #define TB_SETMAXTEXTROWS (WM_USER+60)
  980. #define TB_GETTEXTROWS (WM_USER+61)
  981. #define TB_GETOBJECT (WM_USER+62)
  982. #define TB_GETBUTTONINFOW (WM_USER+63)
  983. #define TB_GETBUTTONINFOA (WM_USER+65)
  984. #define TB_GETBUTTONINFO WINELIB_NAME_AW(TB_GETBUTTONINFO)
  985. #define TB_SETBUTTONINFOW (WM_USER+64)
  986. #define TB_SETBUTTONINFOA (WM_USER+66)
  987. #define TB_SETBUTTONINFO WINELIB_NAME_AW(TB_SETBUTTONINFO)
  988. #define TB_SETDRAWTEXTFLAGS (WM_USER+70)
  989. #define TB_GETHOTITEM (WM_USER+71)
  990. #define TB_SETHOTITEM (WM_USER+72)
  991. #define TB_SETANCHORHIGHLIGHT (WM_USER+73)
  992. #define TB_GETANCHORHIGHLIGHT (WM_USER+74)
  993. #define TB_MAPACCELERATORA (WM_USER+78)
  994. #define TB_MAPACCELERATORW (WM_USER+90)
  995. #define TB_MAPACCELERATOR WINELIB_NAME_AW(TB_MAPACCELERATOR)
  996. #define TB_GETINSERTMARK (WM_USER+79)
  997. #define TB_SETINSERTMARK (WM_USER+80)
  998. #define TB_INSERTMARKHITTEST (WM_USER+81)
  999. #define TB_MOVEBUTTON (WM_USER+82)
  1000. #define TB_GETMAXSIZE (WM_USER+83)
  1001. #define TB_SETEXTENDEDSTYLE (WM_USER+84)
  1002. #define TB_GETEXTENDEDSTYLE (WM_USER+85)
  1003. #define TB_GETPADDING (WM_USER+86)
  1004. #define TB_SETPADDING (WM_USER+87)
  1005. #define TB_SETINSERTMARKCOLOR (WM_USER+88)
  1006. #define TB_GETINSERTMARKCOLOR (WM_USER+89)
  1007. #define TB_SETCOLORSCHEME CCM_SETCOLORSCHEME
  1008. #define TB_GETCOLORSCHEME CCM_GETCOLORSCHEME
  1009. #define TB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
  1010. #define TB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
  1011. #define TB_GETSTRINGW (WM_USER+91)
  1012. #define TB_GETSTRINGA (WM_USER+92)
  1013. #define TB_GETSTRING WINELIB_NAME_AW(TB_GETSTRING)
  1014. /* undocumented messages in Toolbar */
  1015. #define TB_UNKWN45D (WM_USER+93)
  1016. #define TB_UNKWN45E (WM_USER+94)
  1017. #define TB_UNKWN460 (WM_USER+96)
  1018. #define TB_UNKWN462 (WM_USER+98)
  1019. #define TB_UNKWN463 (WM_USER+99)
  1020. #define TB_UNKWN464 (WM_USER+100)
  1021. #define TB_GETMETRICS (WM_USER+101)
  1022. #define TB_SETMETRICS (WM_USER+102)
  1023. #define TB_SETWINDOWTHEME CCM_SETWINDOWTHEME
  1024. #define TBN_FIRST (0U-700U)
  1025. #define TBN_LAST (0U-720U)
  1026. #define TBN_GETBUTTONINFOA (TBN_FIRST-0)
  1027. #define TBN_GETBUTTONINFOW (TBN_FIRST-20)
  1028. #define TBN_GETBUTTONINFO WINELIB_NAME_AW(TBN_GETBUTTONINFO)
  1029. #define TBN_BEGINDRAG (TBN_FIRST-1)
  1030. #define TBN_ENDDRAG (TBN_FIRST-2)
  1031. #define TBN_BEGINADJUST (TBN_FIRST-3)
  1032. #define TBN_ENDADJUST (TBN_FIRST-4)
  1033. #define TBN_RESET (TBN_FIRST-5)
  1034. #define TBN_QUERYINSERT (TBN_FIRST-6)
  1035. #define TBN_QUERYDELETE (TBN_FIRST-7)
  1036. #define TBN_TOOLBARCHANGE (TBN_FIRST-8)
  1037. #define TBN_CUSTHELP (TBN_FIRST-9)
  1038. #define TBN_DROPDOWN (TBN_FIRST-10)
  1039. #define TBN_GETOBJECT (TBN_FIRST-12)
  1040. #define TBN_HOTITEMCHANGE (TBN_FIRST-13)
  1041. #define TBN_DRAGOUT (TBN_FIRST-14)
  1042. #define TBN_DELETINGBUTTON (TBN_FIRST-15)
  1043. #define TBN_GETDISPINFOA (TBN_FIRST-16)
  1044. #define TBN_GETDISPINFOW (TBN_FIRST-17)
  1045. #define TBN_GETDISPINFO WINELIB_NAME_AW(TBN_GETDISPINFO)
  1046. #define TBN_GETINFOTIPA (TBN_FIRST-18)
  1047. #define TBN_GETINFOTIPW (TBN_FIRST-19)
  1048. #define TBN_GETINFOTIP WINELIB_NAME_AW(TBN_GETINFOTIP)
  1049. #define TBN_RESTORE (TBN_FIRST-21)
  1050. #define TBN_SAVE (TBN_FIRST-22)
  1051. #define TBN_INITCUSTOMIZE (TBN_FIRST-23)
  1052. #define TBNRF_HIDEHELP 0x00000001
  1053. /* Return values from TBN_DROPDOWN */
  1054. #define TBDDRET_DEFAULT 0
  1055. #define TBDDRET_NODEFAULT 1
  1056. #define TBDDRET_TREATPRESSED 2
  1057. typedef struct _NMTBCUSTOMDRAW
  1058. {
  1059. NMCUSTOMDRAW nmcd;
  1060. HBRUSH hbrMonoDither;
  1061. HBRUSH hbrLines;
  1062. HPEN hpenLines;
  1063. COLORREF clrText;
  1064. COLORREF clrMark;
  1065. COLORREF clrTextHighlight;
  1066. COLORREF clrBtnFace;
  1067. COLORREF clrBtnHighlight;
  1068. COLORREF clrHighlightHotTrack;
  1069. RECT rcText;
  1070. int nStringBkMode;
  1071. int nHLStringBkMode;
  1072. int iListGap;
  1073. } NMTBCUSTOMDRAW, *LPNMTBCUSTOMDRAW;
  1074. /* return flags for Toolbar NM_CUSTOMDRAW notifications */
  1075. #define TBCDRF_NOEDGES 0x00010000 /* Don't draw button edges */
  1076. #define TBCDRF_HILITEHOTTRACK 0x00020000 /* Use color of the button bkgnd */
  1077. /* when hottracked */
  1078. #define TBCDRF_NOOFFSET 0x00040000 /* No offset button if pressed */
  1079. #define TBCDRF_NOMARK 0x00080000 /* Don't draw default highlight */
  1080. /* for TBSTATE_MARKED */
  1081. #define TBCDRF_NOETCHEDEFFECT 0x00100000 /* No etched effect for */
  1082. /* disabled items */
  1083. #define TBCDRF_BLENDICON 0x00200000 /* ILD_BLEND50 on the icon image */
  1084. #define TBCDRF_NOBACKGROUND 0x00400000 /* ILD_BLEND50 on the icon image */
  1085. /* This is just for old CreateToolbar. */
  1086. /* Don't use it in new programs. */
  1087. typedef struct _OLDTBBUTTON {
  1088. INT iBitmap;
  1089. INT idCommand;
  1090. BYTE fsState;
  1091. BYTE fsStyle;
  1092. BYTE bReserved[2];
  1093. DWORD dwData;
  1094. } OLDTBBUTTON, *POLDTBBUTTON, *LPOLDTBBUTTON;
  1095. typedef const OLDTBBUTTON *LPCOLDTBBUTTON;
  1096. typedef struct _TBBUTTON {
  1097. INT iBitmap;
  1098. INT idCommand;
  1099. BYTE fsState;
  1100. BYTE fsStyle;
  1101. BYTE bReserved[2];
  1102. DWORD dwData;
  1103. INT iString;
  1104. } TBBUTTON, *PTBBUTTON, *LPTBBUTTON;
  1105. typedef const TBBUTTON *LPCTBBUTTON;
  1106. typedef struct _COLORMAP {
  1107. COLORREF from;
  1108. COLORREF to;
  1109. } COLORMAP, *LPCOLORMAP;
  1110. typedef struct tagTBADDBITMAP {
  1111. HINSTANCE hInst;
  1112. UINT nID;
  1113. } TBADDBITMAP, *LPTBADDBITMAP;
  1114. #define HINST_COMMCTRL ((HINSTANCE)-1)
  1115. #define IDB_STD_SMALL_COLOR 0
  1116. #define IDB_STD_LARGE_COLOR 1
  1117. #define IDB_VIEW_SMALL_COLOR 4
  1118. #define IDB_VIEW_LARGE_COLOR 5
  1119. #define IDB_HIST_SMALL_COLOR 8
  1120. #define IDB_HIST_LARGE_COLOR 9
  1121. #define STD_CUT 0
  1122. #define STD_COPY 1
  1123. #define STD_PASTE 2
  1124. #define STD_UNDO 3
  1125. #define STD_REDOW 4
  1126. #define STD_DELETE 5
  1127. #define STD_FILENEW 6
  1128. #define STD_FILEOPEN 7
  1129. #define STD_FILESAVE 8
  1130. #define STD_PRINTPRE 9
  1131. #define STD_PROPERTIES 10
  1132. #define STD_HELP 11
  1133. #define STD_FIND 12
  1134. #define STD_REPLACE 13
  1135. #define STD_PRINT 14
  1136. #define VIEW_LARGEICONS 0
  1137. #define VIEW_SMALLICONS 1
  1138. #define VIEW_LIST 2
  1139. #define VIEW_DETAILS 3
  1140. #define VIEW_SORTNAME 4
  1141. #define VIEW_SORTSIZE 5
  1142. #define VIEW_SORTDATE 6
  1143. #define VIEW_SORTTYPE 7
  1144. #define VIEW_PARENTFOLDER 8
  1145. #define VIEW_NETCONNECT 9
  1146. #define VIEW_NETDISCONNECT 10
  1147. #define VIEW_NEWFOLDER 11
  1148. #define VIEW_VIEWMENU 12
  1149. #define HIST_BACK 0
  1150. #define HIST_FORWARD 1
  1151. #define HIST_FAVORITES 2
  1152. #define HIST_ADDTOFAVORITES 3
  1153. #define HIST_VIEWTREE 4
  1154. typedef struct tagTBSAVEPARAMSA {
  1155. HKEY hkr;
  1156. LPCSTR pszSubKey;
  1157. LPCSTR pszValueName;
  1158. } TBSAVEPARAMSA, *LPTBSAVEPARAMSA;
  1159. typedef struct tagTBSAVEPARAMSW {
  1160. HKEY hkr;
  1161. LPCWSTR pszSubKey;
  1162. LPCWSTR pszValueName;
  1163. } TBSAVEPARAMSW, *LPTBSAVEPARAMSW;
  1164. #define TBSAVEPARAMS WINELIB_NAME_AW(TBSAVEPARAMS)
  1165. #define LPTBSAVEPARAMS WINELIB_NAME_AW(LPTBSAVEPARAMS)
  1166. typedef struct
  1167. {
  1168. UINT cbSize;
  1169. DWORD dwMask;
  1170. INT idCommand;
  1171. INT iImage;
  1172. BYTE fsState;
  1173. BYTE fsStyle;
  1174. WORD cx;
  1175. DWORD lParam;
  1176. LPSTR pszText;
  1177. INT cchText;
  1178. } TBBUTTONINFOA, *LPTBBUTTONINFOA;
  1179. typedef struct
  1180. {
  1181. UINT cbSize;
  1182. DWORD dwMask;
  1183. INT idCommand;
  1184. INT iImage;
  1185. BYTE fsState;
  1186. BYTE fsStyle;
  1187. WORD cx;
  1188. DWORD lParam;
  1189. LPWSTR pszText;
  1190. INT cchText;
  1191. } TBBUTTONINFOW, *LPTBBUTTONINFOW;
  1192. #define TBBUTTONINFO WINELIB_NAME_AW(TBBUTTONINFO)
  1193. #define LPTBBUTTONINFO WINELIB_NAME_AW(LPTBBUTTONINFO)
  1194. typedef struct tagNMTBHOTITEM
  1195. {
  1196. NMHDR hdr;
  1197. int idOld;
  1198. int idNew;
  1199. DWORD dwFlags;
  1200. } NMTBHOTITEM, *LPNMTBHOTITEM;
  1201. typedef struct tagNMTBGETINFOTIPA
  1202. {
  1203. NMHDR hdr;
  1204. LPSTR pszText;
  1205. INT cchTextMax;
  1206. INT iItem;
  1207. LPARAM lParam;
  1208. } NMTBGETINFOTIPA, *LPNMTBGETINFOTIPA;
  1209. typedef struct tagNMTBGETINFOTIPW
  1210. {
  1211. NMHDR hdr;
  1212. LPWSTR pszText;
  1213. INT cchTextMax;
  1214. INT iItem;
  1215. LPARAM lParam;
  1216. } NMTBGETINFOTIPW, *LPNMTBGETINFOTIPW;
  1217. #define NMTBGETINFOTIP WINELIB_NAME_AW(NMTBGETINFOFTIP)
  1218. #define LPNMTBGETINFOTIP WINELIB_NAME_AW(LPNMTBGETINFOTIP)
  1219. typedef struct
  1220. {
  1221. NMHDR hdr;
  1222. DWORD dwMask;
  1223. int idCommand;
  1224. DWORD lParam;
  1225. int iImage;
  1226. LPSTR pszText;
  1227. int cchText;
  1228. } NMTBDISPINFOA, *LPNMTBDISPINFOA;
  1229. typedef struct
  1230. {
  1231. NMHDR hdr;
  1232. DWORD dwMask;
  1233. int idCommand;
  1234. DWORD lParam;
  1235. int iImage;
  1236. LPWSTR pszText;
  1237. int cchText;
  1238. } NMTBDISPINFOW, *LPNMTBDISPINFOW;
  1239. #define NMTBDISPINFO WINELIB_NAME_AW(NMTBDISPINFO)
  1240. #define LPNMTBDISPINFO WINELIB_NAME_AW(LPNMTBDISPINFO)
  1241. /* contents of dwMask in the NMTBDISPINFO structure */
  1242. #define TBNF_IMAGE 0x00000001
  1243. #define TBNF_TEXT 0x00000002
  1244. #define TBNF_DI_SETITEM 0x10000000
  1245. typedef struct tagNMTOOLBARA
  1246. {
  1247. NMHDR hdr;
  1248. INT iItem;
  1249. TBBUTTON tbButton;
  1250. INT cchText;
  1251. LPSTR pszText;
  1252. RECT rcButton; /* Version 5.80 */
  1253. } NMTOOLBARA, *LPNMTOOLBARA, TBNOTIFYA, *LPTBNOTIFYA;
  1254. typedef struct tagNMTOOLBARW
  1255. {
  1256. NMHDR hdr;
  1257. INT iItem;
  1258. TBBUTTON tbButton;
  1259. INT cchText;
  1260. LPWSTR pszText;
  1261. RECT rcButton; /* Version 5.80 */
  1262. } NMTOOLBARW, *LPNMTOOLBARW, TBNOTIFYW, *LPTBNOTIFYW;
  1263. #define NMTOOLBAR WINELIB_NAME_AW(NMTOOLBAR)
  1264. #define LPNMTOOLBAR WINELIB_NAME_AW(LPNMTOOLBAR)
  1265. #define TBNOTIFY WINELIB_NAME_AW(TBNOTIFY)
  1266. #define LPTBNOTIFY WINELIB_NAME_AW(LPTBNOTIFY)
  1267. typedef struct
  1268. {
  1269. HINSTANCE hInstOld;
  1270. UINT nIDOld;
  1271. HINSTANCE hInstNew;
  1272. UINT nIDNew;
  1273. INT nButtons;
  1274. } TBREPLACEBITMAP, *LPTBREPLACEBITMAP;
  1275. #define HICF_OTHER 0x00000000
  1276. #define HICF_MOUSE 0x00000001 /* Triggered by mouse */
  1277. #define HICF_ARROWKEYS 0x00000002 /* Triggered by arrow keys */
  1278. #define HICF_ACCELERATOR 0x00000004 /* Triggered by accelerator */
  1279. #define HICF_DUPACCEL 0x00000008 /* This accelerator is not unique */
  1280. #define HICF_ENTERING 0x00000010 /* idOld is invalid */
  1281. #define HICF_LEAVING 0x00000020 /* idNew is invalid */
  1282. #define HICF_RESELECT 0x00000040 /* hot item reselected */
  1283. #define HICF_LMOUSE 0x00000080 /* left mouse button selected */
  1284. #define HICF_TOGGLEDROPDOWN 0x00000100 /* Toggle button's dropdown state */
  1285. typedef struct
  1286. {
  1287. int iButton;
  1288. DWORD dwFlags;
  1289. } TBINSERTMARK, *LPTBINSERTMARK;
  1290. #define TBIMHT_AFTER 0x00000001 /* TRUE = insert After iButton, otherwise before */
  1291. #define TBIMHT_BACKGROUND 0x00000002 /* TRUE if and only if missed buttons completely */
  1292. typedef struct tagNMTBSAVE
  1293. {
  1294. NMHDR hdr;
  1295. DWORD* pData;
  1296. DWORD* pCurrent;
  1297. UINT cbData;
  1298. int iItem;
  1299. int cButtons;
  1300. TBBUTTON tbButton;
  1301. } NMTBSAVE, *LPNMTBSAVE;
  1302. typedef struct tagNMTBRESTORE
  1303. {
  1304. NMHDR hdr;
  1305. DWORD* pData;
  1306. DWORD* pCurrent;
  1307. UINT cbData;
  1308. int iItem;
  1309. int cButtons;
  1310. int cbBytesPerRecord;
  1311. TBBUTTON tbButton;
  1312. } NMTBRESTORE, *LPNMTBRESTORE;
  1313. #define TBMF_PAD 0x00000001
  1314. #define TBMF_BARPAD 0x00000002
  1315. #define TBMF_BUTTONSPACING 0x00000004
  1316. typedef struct
  1317. {
  1318. UINT cbSize;
  1319. DWORD dwMask;
  1320. INT cxPad;
  1321. INT cyPad;
  1322. INT cxBarPad;
  1323. INT cyBarPad;
  1324. INT cxButtonSpacing;
  1325. INT cyButtonSpacing;
  1326. } TBMETRICS, *LPTBMETRICS;
  1327. HWND WINAPI
  1328. CreateToolbar(HWND, DWORD, UINT, INT, HINSTANCE,
  1329. UINT, LPCTBBUTTON, INT);
  1330. HWND WINAPI
  1331. CreateToolbarEx(HWND, DWORD, UINT, INT,
  1332. HINSTANCE, UINT, LPCTBBUTTON,
  1333. INT, INT, INT, INT, INT, UINT);
  1334. HBITMAP WINAPI
  1335. CreateMappedBitmap (HINSTANCE, INT, UINT, LPCOLORMAP, INT);
  1336. /* Tool tips */
  1337. #define TOOLTIPS_CLASSA "tooltips_class32"
  1338. #if defined(__GNUC__)
  1339. # define TOOLTIPS_CLASSW (const WCHAR []){ 't','o','o','l','t','i','p','s','_', \
  1340. 'c','l','a','s','s','3','2',0 }
  1341. #elif defined(_MSC_VER)
  1342. # define TOOLTIPS_CLASSW L"tooltips_class32"
  1343. #else
  1344. static const WCHAR TOOLTIPS_CLASSW[] = { 't','o','o','l','t','i','p','s','_',
  1345. 'c','l','a','s','s','3','2',0 };
  1346. #endif
  1347. #define TOOLTIPS_CLASS WINELIB_NAME_AW(TOOLTIPS_CLASS)
  1348. #define INFOTIPSIZE 1024
  1349. #define TTS_ALWAYSTIP 0x01
  1350. #define TTS_NOPREFIX 0x02
  1351. #define TTS_NOANIMATE 0x10
  1352. #define TTS_NOFADE 0x20
  1353. #define TTS_BALLOON 0x40
  1354. #define TTS_CLOSE 0x80
  1355. #define TTF_IDISHWND 0x0001
  1356. #define TTF_CENTERTIP 0x0002
  1357. #define TTF_RTLREADING 0x0004
  1358. #define TTF_SUBCLASS 0x0010
  1359. #define TTF_TRACK 0x0020
  1360. #define TTF_ABSOLUTE 0x0080
  1361. #define TTF_TRANSPARENT 0x0100
  1362. #define TTF_DI_SETITEM 0x8000 /* valid only on the TTN_NEEDTEXT callback */
  1363. #define TTDT_AUTOMATIC 0
  1364. #define TTDT_RESHOW 1
  1365. #define TTDT_AUTOPOP 2
  1366. #define TTDT_INITIAL 3
  1367. #define TTI_NONE 0
  1368. #define TTI_INFO 1
  1369. #define TTI_WARNING 2
  1370. #define TTI_ERROR 3
  1371. #define TTM_ACTIVATE (WM_USER+1)
  1372. #define TTM_SETDELAYTIME (WM_USER+3)
  1373. #define TTM_ADDTOOLA (WM_USER+4)
  1374. #define TTM_ADDTOOLW (WM_USER+50)
  1375. #define TTM_ADDTOOL WINELIB_NAME_AW(TTM_ADDTOOL)
  1376. #define TTM_DELTOOLA (WM_USER+5)
  1377. #define TTM_DELTOOLW (WM_USER+51)
  1378. #define TTM_DELTOOL WINELIB_NAME_AW(TTM_DELTOOL)
  1379. #define TTM_NEWTOOLRECTA (WM_USER+6)
  1380. #define TTM_NEWTOOLRECTW (WM_USER+52)
  1381. #define TTM_NEWTOOLRECT WINELIB_NAME_AW(TTM_NEWTOOLRECT)
  1382. #define TTM_RELAYEVENT (WM_USER+7)
  1383. #define TTM_GETTOOLINFOA (WM_USER+8)
  1384. #define TTM_GETTOOLINFOW (WM_USER+53)
  1385. #define TTM_GETTOOLINFO WINELIB_NAME_AW(TTM_GETTOOLINFO)
  1386. #define TTM_SETTOOLINFOA (WM_USER+9)
  1387. #define TTM_SETTOOLINFOW (WM_USER+54)
  1388. #define TTM_SETTOOLINFO WINELIB_NAME_AW(TTM_SETTOOLINFO)
  1389. #define TTM_HITTESTA (WM_USER+10)
  1390. #define TTM_HITTESTW (WM_USER+55)
  1391. #define TTM_HITTEST WINELIB_NAME_AW(TTM_HITTEST)
  1392. #define TTM_GETTEXTA (WM_USER+11)
  1393. #define TTM_GETTEXTW (WM_USER+56)
  1394. #define TTM_GETTEXT WINELIB_NAME_AW(TTM_GETTEXT)
  1395. #define TTM_UPDATETIPTEXTA (WM_USER+12)
  1396. #define TTM_UPDATETIPTEXTW (WM_USER+57)
  1397. #define TTM_UPDATETIPTEXT WINELIB_NAME_AW(TTM_UPDATETIPTEXT)
  1398. #define TTM_GETTOOLCOUNT (WM_USER+13)
  1399. #define TTM_ENUMTOOLSA (WM_USER+14)
  1400. #define TTM_ENUMTOOLSW (WM_USER+58)
  1401. #define TTM_ENUMTOOLS WINELIB_NAME_AW(TTM_ENUMTOOLS)
  1402. #define TTM_GETCURRENTTOOLA (WM_USER+15)
  1403. #define TTM_GETCURRENTTOOLW (WM_USER+59)
  1404. #define TTM_GETCURRENTTOOL WINELIB_NAME_AW(TTM_GETCURRENTTOOL)
  1405. #define TTM_WINDOWFROMPOINT (WM_USER+16)
  1406. #define TTM_TRACKACTIVATE (WM_USER+17)
  1407. #define TTM_TRACKPOSITION (WM_USER+18)
  1408. #define TTM_SETTIPBKCOLOR (WM_USER+19)
  1409. #define TTM_SETTIPTEXTCOLOR (WM_USER+20)
  1410. #define TTM_GETDELAYTIME (WM_USER+21)
  1411. #define TTM_GETTIPBKCOLOR (WM_USER+22)
  1412. #define TTM_GETTIPTEXTCOLOR (WM_USER+23)
  1413. #define TTM_SETMAXTIPWIDTH (WM_USER+24)
  1414. #define TTM_GETMAXTIPWIDTH (WM_USER+25)
  1415. #define TTM_SETMARGIN (WM_USER+26)
  1416. #define TTM_GETMARGIN (WM_USER+27)
  1417. #define TTM_POP (WM_USER+28)
  1418. #define TTM_UPDATE (WM_USER+29)
  1419. #define TTM_GETBUBBLESIZE (WM_USER+30)
  1420. #define TTM_ADJUSTRECT (WM_USER+31)
  1421. #define TTM_SETTITLEA (WM_USER+32)
  1422. #define TTM_SETTITLEW (WM_USER+33)
  1423. #define TTM_SETTITLE WINELIB_NAME_AW(TTM_SETTITLE)
  1424. #define TTM_POPUP (WM_USER+34)
  1425. #define TTM_GETTITLE (WM_USER+35)
  1426. #define TTM_SETWINDOWTHEME CCM_SETWINDOWTHEME
  1427. #define TTN_FIRST (0U-520U)
  1428. #define TTN_LAST (0U-549U)
  1429. #define TTN_GETDISPINFOA (TTN_FIRST-0)
  1430. #define TTN_GETDISPINFOW (TTN_FIRST-10)
  1431. #define TTN_GETDISPINFO WINELIB_NAME_AW(TTN_GETDISPINFO)
  1432. #define TTN_SHOW (TTN_FIRST-1)
  1433. #define TTN_POP (TTN_FIRST-2)
  1434. #define TTN_NEEDTEXT TTN_GETDISPINFO
  1435. #define TTN_NEEDTEXTA TTN_GETDISPINFOA
  1436. #define TTN_NEEDTEXTW TTN_GETDISPINFOW
  1437. typedef struct tagTOOLINFOA {
  1438. UINT cbSize;
  1439. UINT uFlags;
  1440. HWND hwnd;
  1441. UINT uId;
  1442. RECT rect;
  1443. HINSTANCE hinst;
  1444. LPSTR lpszText;
  1445. LPARAM lParam;
  1446. void *lpReserved;
  1447. } TTTOOLINFOA, *LPTOOLINFOA, *PTOOLINFOA, *LPTTTOOLINFOA;
  1448. typedef struct tagTOOLINFOW {
  1449. UINT cbSize;
  1450. UINT uFlags;
  1451. HWND hwnd;
  1452. UINT uId;
  1453. RECT rect;
  1454. HINSTANCE hinst;
  1455. LPWSTR lpszText;
  1456. LPARAM lParam;
  1457. void *lpReserved;
  1458. } TTTOOLINFOW, *LPTOOLINFOW, *PTOOLINFOW, *LPTTTOOLINFOW;
  1459. #define TTTOOLINFO WINELIB_NAME_AW(TTTOOLINFO)
  1460. #define TOOLINFO WINELIB_NAME_AW(TTTOOLINFO)
  1461. #define PTOOLINFO WINELIB_NAME_AW(PTOOLINFO)
  1462. #define LPTTTOOLINFO WINELIB_NAME_AW(LPTTTOOLINFO)
  1463. #define LPTOOLINFO WINELIB_NAME_AW(LPTOOLINFO)
  1464. #define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText)
  1465. #define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText)
  1466. #define TTTOOLINFO_V1_SIZE CCSIZEOF_STRUCT(WINELIB_NAME_AW(TTTOOLINFO), lpszText)
  1467. typedef struct _TT_HITTESTINFOA
  1468. {
  1469. HWND hwnd;
  1470. POINT pt;
  1471. TTTOOLINFOA ti;
  1472. } TTHITTESTINFOA, *LPTTHITTESTINFOA;
  1473. #define LPHITTESTINFOA LPTTHITTESTINFOA
  1474. typedef struct _TT_HITTESTINFOW
  1475. {
  1476. HWND hwnd;
  1477. POINT pt;
  1478. TTTOOLINFOW ti;
  1479. } TTHITTESTINFOW, *LPTTHITTESTINFOW;
  1480. #define LPHITTESTINFOW LPTTHITTESTINFOW
  1481. #define TTHITTESTINFO WINELIB_NAME_AW(TTHITTESTINFO)
  1482. #define LPTTHITTESTINFO WINELIB_NAME_AW(LPTTHITTESTINFO)
  1483. #define LPHITTESTINFO WINELIB_NAME_AW(LPHITTESTINFO)
  1484. typedef struct tagNMTTDISPINFOA
  1485. {
  1486. NMHDR hdr;
  1487. LPSTR lpszText;
  1488. CHAR szText[80];
  1489. HINSTANCE hinst;
  1490. UINT uFlags;
  1491. LPARAM lParam;
  1492. } NMTTDISPINFOA, *LPNMTTDISPINFOA;
  1493. typedef struct tagNMTTDISPINFOW
  1494. {
  1495. NMHDR hdr;
  1496. LPWSTR lpszText;
  1497. WCHAR szText[80];
  1498. HINSTANCE hinst;
  1499. UINT uFlags;
  1500. LPARAM lParam;
  1501. } NMTTDISPINFOW, *LPNMTTDISPINFOW;
  1502. #define NMTTDISPINFO WINELIB_NAME_AW(NMTTDISPINFO)
  1503. #define LPNMTTDISPINFO WINELIB_NAME_AW(LPNMTTDISPINFO)
  1504. #define NMTTDISPINFO_V1_SIZEA CCSIZEOF_STRUCT(NMTTDISPINFOA, uFlags)
  1505. #define NMTTDISPINFO_V1_SIZEW CCSIZEOF_STRUCT(NMTTDISPINFOW, uFlags)
  1506. #define NMTTDISPINFO_V1_SIZE WINELIB_NAME_AW(NMTTDISPINFO_V1_SIZE)
  1507. typedef struct _TTGETTITLE
  1508. {
  1509. DWORD dwSize;
  1510. UINT uTitleBitmap;
  1511. UINT cch;
  1512. WCHAR* pszTitle;
  1513. } TTGETTITLE, *PTTGETTITLE;
  1514. #define TOOLTIPTEXTW NMTTDISPINFOW
  1515. #define TOOLTIPTEXTA NMTTDISPINFOA
  1516. #define TOOLTIPTEXT NMTTDISPINFO
  1517. #define LPTOOLTIPTEXTW LPNMTTDISPINFOW
  1518. #define LPTOOLTIPTEXTA LPNMTTDISPINFOA
  1519. #define LPTOOLTIPTEXT LPNMTTDISPINFO
  1520. /* Rebar control */
  1521. #define REBARCLASSNAMEA "ReBarWindow32"
  1522. #if defined(__GNUC__)
  1523. # define REBARCLASSNAMEW (const WCHAR []){ 'R','e','B','a','r', \
  1524. 'W','i','n','d','o','w','3','2',0 }
  1525. #elif defined(_MSC_VER)
  1526. # define REBARCLASSNAMEW L"ReBarWindow32"
  1527. #else
  1528. static const WCHAR REBARCLASSNAMEW[] = { 'R','e','B','a','r',
  1529. 'W','i','n','d','o','w','3','2',0 };
  1530. #endif
  1531. #define REBARCLASSNAME WINELIB_NAME_AW(REBARCLASSNAME)
  1532. #define RBS_TOOLTIPS 0x0100
  1533. #define RBS_VARHEIGHT 0x0200
  1534. #define RBS_BANDBORDERS 0x0400
  1535. #define RBS_FIXEDORDER 0x0800
  1536. #define RBS_REGISTERDROP 0x1000
  1537. #define RBS_AUTOSIZE 0x2000
  1538. #define RBS_VERTICALGRIPPER 0x4000
  1539. #define RBS_DBLCLKTOGGLE 0x8000
  1540. #define RBIM_IMAGELIST 0x00000001
  1541. #define RBBIM_STYLE 0x00000001
  1542. #define RBBIM_COLORS 0x00000002
  1543. #define RBBIM_TEXT 0x00000004
  1544. #define RBBIM_IMAGE 0x00000008
  1545. #define RBBIM_CHILD 0x00000010
  1546. #define RBBIM_CHILDSIZE 0x00000020
  1547. #define RBBIM_SIZE 0x00000040
  1548. #define RBBIM_BACKGROUND 0x00000080
  1549. #define RBBIM_ID 0x00000100
  1550. #define RBBIM_IDEALSIZE 0x00000200
  1551. #define RBBIM_LPARAM 0x00000400
  1552. #define RBBIM_HEADERSIZE 0x00000800
  1553. #define RBBS_BREAK 0x00000001
  1554. #define RBBS_FIXEDSIZE 0x00000002
  1555. #define RBBS_CHILDEDGE 0x00000004
  1556. #define RBBS_HIDDEN 0x00000008
  1557. #define RBBS_NOVERT 0x00000010
  1558. #define RBBS_FIXEDBMP 0x00000020
  1559. #define RBBS_VARIABLEHEIGHT 0x00000040
  1560. #define RBBS_GRIPPERALWAYS 0x00000080
  1561. #define RBBS_NOGRIPPER 0x00000100
  1562. #define RBBS_USECHEVRON 0x00000200
  1563. #define RBBS_HIDETITLE 0x00000400
  1564. #define RBBS_TOPALIGN 0x00000800
  1565. #define RBNM_ID 0x00000001
  1566. #define RBNM_STYLE 0x00000002
  1567. #define RBNM_LPARAM 0x00000004
  1568. #define RBHT_NOWHERE 0x0001
  1569. #define RBHT_CAPTION 0x0002
  1570. #define RBHT_CLIENT 0x0003
  1571. #define RBHT_GRABBER 0x0004
  1572. #define RBHT_CHEVRON 0x0008
  1573. #define RB_INSERTBANDA (WM_USER+1)
  1574. #define RB_INSERTBANDW (WM_USER+10)
  1575. #define RB_INSERTBAND WINELIB_NAME_AW(RB_INSERTBAND)
  1576. #define RB_DELETEBAND (WM_USER+2)
  1577. #define RB_GETBARINFO (WM_USER+3)
  1578. #define RB_SETBARINFO (WM_USER+4)
  1579. #define RB_SETBANDINFOA (WM_USER+6)
  1580. #define RB_SETBANDINFOW (WM_USER+11)
  1581. #define RB_SETBANDINFO WINELIB_NAME_AW(RB_SETBANDINFO)
  1582. #define RB_SETPARENT (WM_USER+7)
  1583. #define RB_HITTEST (WM_USER+8)
  1584. #define RB_GETRECT (WM_USER+9)
  1585. #define RB_GETBANDCOUNT (WM_USER+12)
  1586. #define RB_GETROWCOUNT (WM_USER+13)
  1587. #define RB_GETROWHEIGHT (WM_USER+14)
  1588. #define RB_IDTOINDEX (WM_USER+16)
  1589. #define RB_GETTOOLTIPS (WM_USER+17)
  1590. #define RB_SETTOOLTIPS (WM_USER+18)
  1591. #define RB_SETBKCOLOR (WM_USER+19)
  1592. #define RB_GETBKCOLOR (WM_USER+20)
  1593. #define RB_SETTEXTCOLOR (WM_USER+21)
  1594. #define RB_GETTEXTCOLOR (WM_USER+22)
  1595. #define RB_SIZETORECT (WM_USER+23)
  1596. #define RB_BEGINDRAG (WM_USER+24)
  1597. #define RB_ENDDRAG (WM_USER+25)
  1598. #define RB_DRAGMOVE (WM_USER+26)
  1599. #define RB_GETBARHEIGHT (WM_USER+27)
  1600. #define RB_GETBANDINFOW (WM_USER+28)
  1601. #define RB_GETBANDINFOA (WM_USER+29)
  1602. #define RB_GETBANDINFO WINELIB_NAME_AW(RB_GETBANDINFO)
  1603. #define RB_MINIMIZEBAND (WM_USER+30)
  1604. #define RB_MAXIMIZEBAND (WM_USER+31)
  1605. #define RB_GETBANDBORDERS (WM_USER+34)
  1606. #define RB_SHOWBAND (WM_USER+35)
  1607. #define RB_SETPALETTE (WM_USER+37)
  1608. #define RB_GETPALETTE (WM_USER+38)
  1609. #define RB_MOVEBAND (WM_USER+39)
  1610. #define RB_GETBANDMARGINS (WM_USER+40)
  1611. #define RB_PUSHCHEVRON (WM_USER+43)
  1612. #define RB_GETDROPTARGET CCM_GETDROPTARGET
  1613. #define RB_SETCOLORSCHEME CCM_SETCOLORSCHEME
  1614. #define RB_GETCOLORSCHEME CCM_GETCOLORSCHEME
  1615. #define RB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
  1616. #define RB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
  1617. #define RB_SETWINDOWTHEME CCM_SETWINDOWTHEME
  1618. #define RBN_FIRST (0U-831U)
  1619. #define RBN_LAST (0U-859U)
  1620. #define RBN_HEIGHTCHANGE (RBN_FIRST-0)
  1621. #define RBN_GETOBJECT (RBN_FIRST-1)
  1622. #define RBN_LAYOUTCHANGED (RBN_FIRST-2)
  1623. #define RBN_AUTOSIZE (RBN_FIRST-3)
  1624. #define RBN_BEGINDRAG (RBN_FIRST-4)
  1625. #define RBN_ENDDRAG (RBN_FIRST-5)
  1626. #define RBN_DELETINGBAND (RBN_FIRST-6)
  1627. #define RBN_DELETEDBAND (RBN_FIRST-7)
  1628. #define RBN_CHILDSIZE (RBN_FIRST-8)
  1629. #define RBN_CHEVRONPUSHED (RBN_FIRST-10)
  1630. #define RBN_MINMAX (RBN_FIRST-21)
  1631. #define RBN_AUTOBREAK (RBN_FIRST-22)
  1632. typedef struct tagREBARINFO
  1633. {
  1634. UINT cbSize;
  1635. UINT fMask;
  1636. HIMAGELIST himl;
  1637. } REBARINFO, *LPREBARINFO;
  1638. typedef struct tagREBARBANDINFOA
  1639. {
  1640. UINT cbSize;
  1641. UINT fMask;
  1642. UINT fStyle;
  1643. COLORREF clrFore;
  1644. COLORREF clrBack;
  1645. LPSTR lpText;
  1646. UINT cch;
  1647. INT iImage;
  1648. HWND hwndChild;
  1649. UINT cxMinChild;
  1650. UINT cyMinChild;
  1651. UINT cx;
  1652. HBITMAP hbmBack;
  1653. UINT wID;
  1654. UINT cyChild;
  1655. UINT cyMaxChild;
  1656. UINT cyIntegral;
  1657. UINT cxIdeal;
  1658. LPARAM lParam;
  1659. UINT cxHeader;
  1660. } REBARBANDINFOA, *LPREBARBANDINFOA;
  1661. typedef REBARBANDINFOA const *LPCREBARBANDINFOA;
  1662. typedef struct tagREBARBANDINFOW
  1663. {
  1664. UINT cbSize;
  1665. UINT fMask;
  1666. UINT fStyle;
  1667. COLORREF clrFore;
  1668. COLORREF clrBack;
  1669. LPWSTR lpText;
  1670. UINT cch;
  1671. INT iImage;
  1672. HWND hwndChild;
  1673. UINT cxMinChild;
  1674. UINT cyMinChild;
  1675. UINT cx;
  1676. HBITMAP hbmBack;
  1677. UINT wID;
  1678. UINT cyChild;
  1679. UINT cyMaxChild;
  1680. UINT cyIntegral;
  1681. UINT cxIdeal;
  1682. LPARAM lParam;
  1683. UINT cxHeader;
  1684. } REBARBANDINFOW, *LPREBARBANDINFOW;
  1685. typedef REBARBANDINFOW const *LPCREBARBANDINFOW;
  1686. #define REBARBANDINFO WINELIB_NAME_AW(REBARBANDINFO)
  1687. #define LPREBARBANDINFO WINELIB_NAME_AW(LPREBARBANDINFO)
  1688. #define LPCREBARBANDINFO WINELIB_NAME_AW(LPCREBARBANDINFO)
  1689. #define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA, wID)
  1690. #define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID)
  1691. #define REBARBANDINFO_V3_SIZE CCSIZEOF_STRUCT(WINELIB_NAME_AW(REBARBANDINFO), wID)
  1692. typedef struct tagNMREBARCHILDSIZE
  1693. {
  1694. NMHDR hdr;
  1695. UINT uBand;
  1696. UINT wID;
  1697. RECT rcChild;
  1698. RECT rcBand;
  1699. } NMREBARCHILDSIZE, *LPNMREBARCHILDSIZE;
  1700. typedef struct tagNMREBAR
  1701. {
  1702. NMHDR hdr;
  1703. DWORD dwMask;
  1704. UINT uBand;
  1705. UINT fStyle;
  1706. UINT wID;
  1707. LPARAM lParam;
  1708. } NMREBAR, *LPNMREBAR;
  1709. typedef struct tagNMRBAUTOSIZE
  1710. {
  1711. NMHDR hdr;
  1712. BOOL fChanged;
  1713. RECT rcTarget;
  1714. RECT rcActual;
  1715. } NMRBAUTOSIZE, *LPNMRBAUTOSIZE;
  1716. typedef struct tagNMREBARCHEVRON
  1717. {
  1718. NMHDR hdr;
  1719. UINT uBand;
  1720. UINT wID;
  1721. LPARAM lParam;
  1722. RECT rc;
  1723. LPARAM lParamNM;
  1724. } NMREBARCHEVRON, *LPNMREBARCHEVRON;
  1725. typedef struct _RB_HITTESTINFO
  1726. {
  1727. POINT pt;
  1728. UINT flags;
  1729. INT iBand;
  1730. } RBHITTESTINFO, *LPRBHITTESTINFO;
  1731. #define RBAB_AUTOSIZE 0x0001
  1732. #define RBAB_ADDBAND 0x0002
  1733. typedef struct tagNMREBARAUTOBREAK
  1734. {
  1735. NMHDR hdr;
  1736. UINT uBand;
  1737. UINT wID;
  1738. LPARAM lParam;
  1739. UINT uMsg;
  1740. UINT fStyleCurrent;
  1741. BOOL fAutoBreak;
  1742. } NMREBARAUTOBREAK, *LPNMREBARAUTOBREAK;
  1743. /* Trackbar control */
  1744. #define TRACKBAR_CLASSA "msctls_trackbar32"
  1745. #if defined(__GNUC__)
  1746. # define TRACKBAR_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
  1747. 't','r','a','c','k','b','a','r','3','2',0 }
  1748. #elif defined(_MSC_VER)
  1749. # define TRACKBAR_CLASSW L"msctls_trackbar32"
  1750. #else
  1751. static const WCHAR TRACKBAR_CLASSW[] = { 'm','s','c','t','l','s','_',
  1752. 't','r','a','c','k','b','a','r','3','2',0 };
  1753. #endif
  1754. #define TRACKBAR_CLASS WINELIB_NAME_AW(TRACKBAR_CLASS)
  1755. #define TBS_AUTOTICKS 0x0001
  1756. #define TBS_VERT 0x0002
  1757. #define TBS_HORZ 0x0000
  1758. #define TBS_TOP 0x0004
  1759. #define TBS_BOTTOM 0x0000
  1760. #define TBS_LEFT 0x0004
  1761. #define TBS_RIGHT 0x0000
  1762. #define TBS_BOTH 0x0008
  1763. #define TBS_NOTICKS 0x0010
  1764. #define TBS_ENABLESELRANGE 0x0020
  1765. #define TBS_FIXEDLENGTH 0x0040
  1766. #define TBS_NOTHUMB 0x0080
  1767. #define TBS_TOOLTIPS 0x0100
  1768. #define TBS_REVERSED 0x0200
  1769. #define TBS_DOWNISLEFT 0x0400
  1770. #define TBTS_TOP 0
  1771. #define TBTS_LEFT 1
  1772. #define TBTS_BOTTOM 2
  1773. #define TBTS_RIGHT 3
  1774. #define TB_LINEUP 0
  1775. #define TB_LINEDOWN 1
  1776. #define TB_PAGEUP 2
  1777. #define TB_PAGEDOWN 3
  1778. #define TB_THUMBPOSITION 4
  1779. #define TB_THUMBTRACK 5
  1780. #define TB_TOP 6
  1781. #define TB_BOTTOM 7
  1782. #define TB_ENDTRACK 8
  1783. #define TBCD_TICS 0x0001
  1784. #define TBCD_THUMB 0x0002
  1785. #define TBCD_CHANNEL 0x0003
  1786. #define TBM_GETPOS (WM_USER)
  1787. #define TBM_GETRANGEMIN (WM_USER+1)
  1788. #define TBM_GETRANGEMAX (WM_USER+2)
  1789. #define TBM_GETTIC (WM_USER+3)
  1790. #define TBM_SETTIC (WM_USER+4)
  1791. #define TBM_SETPOS (WM_USER+5)
  1792. #define TBM_SETRANGE (WM_USER+6)
  1793. #define TBM_SETRANGEMIN (WM_USER+7)
  1794. #define TBM_SETRANGEMAX (WM_USER+8)
  1795. #define TBM_CLEARTICS (WM_USER+9)
  1796. #define TBM_SETSEL (WM_USER+10)
  1797. #define TBM_SETSELSTART (WM_USER+11)
  1798. #define TBM_SETSELEND (WM_USER+12)
  1799. #define TBM_GETPTICS (WM_USER+14)
  1800. #define TBM_GETTICPOS (WM_USER+15)
  1801. #define TBM_GETNUMTICS (WM_USER+16)
  1802. #define TBM_GETSELSTART (WM_USER+17)
  1803. #define TBM_GETSELEND (WM_USER+18)
  1804. #define TBM_CLEARSEL (WM_USER+19)
  1805. #define TBM_SETTICFREQ (WM_USER+20)
  1806. #define TBM_SETPAGESIZE (WM_USER+21)
  1807. #define TBM_GETPAGESIZE (WM_USER+22)
  1808. #define TBM_SETLINESIZE (WM_USER+23)
  1809. #define TBM_GETLINESIZE (WM_USER+24)
  1810. #define TBM_GETTHUMBRECT (WM_USER+25)
  1811. #define TBM_GETCHANNELRECT (WM_USER+26)
  1812. #define TBM_SETTHUMBLENGTH (WM_USER+27)
  1813. #define TBM_GETTHUMBLENGTH (WM_USER+28)
  1814. #define TBM_SETTOOLTIPS (WM_USER+29)
  1815. #define TBM_GETTOOLTIPS (WM_USER+30)
  1816. #define TBM_SETTIPSIDE (WM_USER+31)
  1817. #define TBM_SETBUDDY (WM_USER+32)
  1818. #define TBM_GETBUDDY (WM_USER+33)
  1819. #define TBM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
  1820. #define TBM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
  1821. /* Pager control */
  1822. #define WC_PAGESCROLLERA "SysPager"
  1823. #if defined(__GNUC__)
  1824. # define WC_PAGESCROLLERW (const WCHAR []){ 'S','y','s','P','a','g','e','r',0 }
  1825. #elif defined(_MSC_VER)
  1826. # define WC_PAGESCROLLERW L"SysPager"
  1827. #else
  1828. static const WCHAR WC_PAGESCROLLERW[] = { 'S','y','s','P','a','g','e','r',0 };
  1829. #endif
  1830. #define WC_PAGESCROLLER WINELIB_NAME_AW(WC_PAGESCROLLER)
  1831. #define PGS_VERT 0x00000000
  1832. #define PGS_HORZ 0x00000001
  1833. #define PGS_AUTOSCROLL 0x00000002
  1834. #define PGS_DRAGNDROP 0x00000004
  1835. #define PGF_INVISIBLE 0
  1836. #define PGF_NORMAL 1
  1837. #define PGF_GRAYED 2
  1838. #define PGF_DEPRESSED 4
  1839. #define PGF_HOT 8
  1840. #define PGB_TOPORLEFT 0
  1841. #define PGB_BOTTOMORRIGHT 1
  1842. /* only used with PGN_SCROLL */
  1843. #define PGF_SCROLLUP 1
  1844. #define PGF_SCROLLDOWN 2
  1845. #define PGF_SCROLLLEFT 4
  1846. #define PGF_SCROLLRIGHT 8
  1847. #define PGK_SHIFT 1
  1848. #define PGK_CONTROL 2
  1849. #define PGK_MENU 4
  1850. /* only used with PGN_CALCSIZE */
  1851. #define PGF_CALCWIDTH 1
  1852. #define PGF_CALCHEIGHT 2
  1853. #define PGM_FIRST 0x1400
  1854. #define PGM_SETCHILD (PGM_FIRST+1)
  1855. #define PGM_RECALCSIZE (PGM_FIRST+2)
  1856. #define PGM_FORWARDMOUSE (PGM_FIRST+3)
  1857. #define PGM_SETBKCOLOR (PGM_FIRST+4)
  1858. #define PGM_GETBKCOLOR (PGM_FIRST+5)
  1859. #define PGM_SETBORDER (PGM_FIRST+6)
  1860. #define PGM_GETBORDER (PGM_FIRST+7)
  1861. #define PGM_SETPOS (PGM_FIRST+8)
  1862. #define PGM_GETPOS (PGM_FIRST+9)
  1863. #define PGM_SETBUTTONSIZE (PGM_FIRST+10)
  1864. #define PGM_GETBUTTONSIZE (PGM_FIRST+11)
  1865. #define PGM_GETBUTTONSTATE (PGM_FIRST+12)
  1866. #define PGM_GETDROPTARGET CCM_GETDROPTARGET
  1867. #define PGN_FIRST (0U-900U)
  1868. #define PGN_LAST (0U-950U)
  1869. #define PGN_SCROLL (PGN_FIRST-1)
  1870. #define PGN_CALCSIZE (PGN_FIRST-2)
  1871. #include <pshpack1.h>
  1872. typedef struct
  1873. {
  1874. NMHDR hdr;
  1875. WORD fwKeys;
  1876. RECT rcParent;
  1877. INT iDir;
  1878. INT iXpos;
  1879. INT iYpos;
  1880. INT iScroll;
  1881. } NMPGSCROLL, *LPNMPGSCROLL;
  1882. #include <poppack.h>
  1883. typedef struct
  1884. {
  1885. NMHDR hdr;
  1886. DWORD dwFlag;
  1887. INT iWidth;
  1888. INT iHeight;
  1889. } NMPGCALCSIZE, *LPNMPGCALCSIZE;
  1890. /* Treeview control */
  1891. #define WC_TREEVIEWA "SysTreeView32"
  1892. #if defined(__GNUC__)
  1893. # define WC_TREEVIEWW (const WCHAR []){ 'S','y','s', \
  1894. 'T','r','e','e','V','i','e','w','3','2',0 }
  1895. #elif defined(_MSC_VER)
  1896. # define WC_TREEVIEWW L"SysTreeView32"
  1897. #else
  1898. static const WCHAR WC_TREEVIEWW[] = { 'S','y','s',
  1899. 'T','r','e','e','V','i','e','w','3','2',0 };
  1900. #endif
  1901. #define WC_TREEVIEW WINELIB_NAME_AW(WC_TREEVIEW)
  1902. #define TVSIL_NORMAL 0
  1903. #define TVSIL_STATE 2
  1904. #define TV_FIRST 0x1100
  1905. #define TVM_INSERTITEMA (TV_FIRST+0)
  1906. #define TVM_INSERTITEMW (TV_FIRST+50)
  1907. #define TVM_INSERTITEM WINELIB_NAME_AW(TVM_INSERTITEM)
  1908. #define TVM_DELETEITEM (TV_FIRST+1)
  1909. #define TVM_EXPAND (TV_FIRST+2)
  1910. #define TVM_GETITEMRECT (TV_FIRST+4)
  1911. #define TVM_GETCOUNT (TV_FIRST+5)
  1912. #define TVM_GETINDENT (TV_FIRST+6)
  1913. #define TVM_SETINDENT (TV_FIRST+7)
  1914. #define TVM_GETIMAGELIST (TV_FIRST+8)
  1915. #define TVM_SETIMAGELIST (TV_FIRST+9)
  1916. #define TVM_GETNEXTITEM (TV_FIRST+10)
  1917. #define TVM_SELECTITEM (TV_FIRST+11)
  1918. #define TVM_GETITEMA (TV_FIRST+12)
  1919. #define TVM_GETITEMW (TV_FIRST+62)
  1920. #define TVM_GETITEM WINELIB_NAME_AW(TVM_GETITEM)
  1921. #define TVM_SETITEMA (TV_FIRST+13)
  1922. #define TVM_SETITEMW (TV_FIRST+63)
  1923. #define TVM_SETITEM WINELIB_NAME_AW(TVM_SETITEM)
  1924. #define TVM_EDITLABELA (TV_FIRST+14)
  1925. #define TVM_EDITLABELW (TV_FIRST+65)
  1926. #define TVM_EDITLABEL WINELIB_NAME_AW(TVM_EDITLABEL)
  1927. #define TVM_GETEDITCONTROL (TV_FIRST+15)
  1928. #define TVM_GETVISIBLECOUNT (TV_FIRST+16)
  1929. #define TVM_HITTEST (TV_FIRST+17)
  1930. #define TVM_CREATEDRAGIMAGE (TV_FIRST+18)
  1931. #define TVM_SORTCHILDREN (TV_FIRST+19)
  1932. #define TVM_ENSUREVISIBLE (TV_FIRST+20)
  1933. #define TVM_SORTCHILDRENCB (TV_FIRST+21)
  1934. #define TVM_ENDEDITLABELNOW (TV_FIRST+22)
  1935. #define TVM_GETISEARCHSTRINGA (TV_FIRST+23)
  1936. #define TVM_GETISEARCHSTRINGW (TV_FIRST+64)
  1937. #define TVM_GETISEARCHSTRING WINELIB_NAME_AW(TVM_GETISEARCHSTRING)
  1938. #define TVM_SETTOOLTIPS (TV_FIRST+24)
  1939. #define TVM_GETTOOLTIPS (TV_FIRST+25)
  1940. #define TVM_SETINSERTMARK (TV_FIRST+26)
  1941. #define TVM_SETITEMHEIGHT (TV_FIRST+27)
  1942. #define TVM_GETITEMHEIGHT (TV_FIRST+28)
  1943. #define TVM_SETBKCOLOR (TV_FIRST+29)
  1944. #define TVM_SETTEXTCOLOR (TV_FIRST+30)
  1945. #define TVM_GETBKCOLOR (TV_FIRST+31)
  1946. #define TVM_GETTEXTCOLOR (TV_FIRST+32)
  1947. #define TVM_SETSCROLLTIME (TV_FIRST+33)
  1948. #define TVM_GETSCROLLTIME (TV_FIRST+34)
  1949. #define TVM_UNKNOWN35 (TV_FIRST+35)
  1950. #define TVM_UNKNOWN36 (TV_FIRST+36)
  1951. #define TVM_SETINSERTMARKCOLOR (TV_FIRST+37)
  1952. #define TVM_GETINSERTMARKCOLOR (TV_FIRST+38)
  1953. #define TVM_GETITEMSTATE (TV_FIRST+39)
  1954. #define TVM_SETLINECOLOR (TV_FIRST+40)
  1955. #define TVM_GETLINECOLOR (TV_FIRST+41)
  1956. #define TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
  1957. #define TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
  1958. #define TVM_MAPACCIDTOHTREEITEM (TV_FIRST + 42)
  1959. #define TVM_MAPHTREEITEMTOACCID (TV_FIRST + 43)
  1960. #define TVN_FIRST (0U-400U)
  1961. #define TVN_LAST (0U-499U)
  1962. #define TVN_SELCHANGINGA (TVN_FIRST-1)
  1963. #define TVN_SELCHANGINGW (TVN_FIRST-50)
  1964. #define TVN_SELCHANGING WINELIB_NAME_AW(TVN_SELCHANGING)
  1965. #define TVN_SELCHANGEDA (TVN_FIRST-2)
  1966. #define TVN_SELCHANGEDW (TVN_FIRST-51)
  1967. #define TVN_SELCHANGED WINELIB_NAME_AW(TVN_SELCHANGED)
  1968. #define TVN_GETDISPINFOA (TVN_FIRST-3)
  1969. #define TVN_GETDISPINFOW (TVN_FIRST-52)
  1970. #define TVN_GETDISPINFO WINELIB_NAME_AW(TVN_GETDISPINFO)
  1971. #define TVN_SETDISPINFOA (TVN_FIRST-4)
  1972. #define TVN_SETDISPINFOW (TVN_FIRST-53)
  1973. #define TVN_SETDISPINFO WINELIB_NAME_AW(TVN_SETDISPINFO)
  1974. #define TVN_ITEMEXPANDINGA (TVN_FIRST-5)
  1975. #define TVN_ITEMEXPANDINGW (TVN_FIRST-54)
  1976. #define TVN_ITEMEXPANDING WINELIB_NAME_AW(TVN_ITEMEXPANDING)
  1977. #define TVN_ITEMEXPANDEDA (TVN_FIRST-6)
  1978. #define TVN_ITEMEXPANDEDW (TVN_FIRST-55)
  1979. #define TVN_ITEMEXPANDED WINELIB_NAME_AW(TVN_ITEMEXPANDED)
  1980. #define TVN_BEGINDRAGA (TVN_FIRST-7)
  1981. #define TVN_BEGINDRAGW (TVN_FIRST-56)
  1982. #define TVN_BEGINDRAG WINELIB_NAME_AW(TVN_BEGINDRAG)
  1983. #define TVN_BEGINRDRAGA (TVN_FIRST-8)
  1984. #define TVN_BEGINRDRAGW (TVN_FIRST-57)
  1985. #define TVN_BEGINRDRAG WINELIB_NAME_AW(TVN_BEGINRDRAG)
  1986. #define TVN_DELETEITEMA (TVN_FIRST-9)
  1987. #define TVN_DELETEITEMW (TVN_FIRST-58)
  1988. #define TVN_DELETEITEM WINELIB_NAME_AW(TVN_DELETEITEM)
  1989. #define TVN_BEGINLABELEDITA (TVN_FIRST-10)
  1990. #define TVN_BEGINLABELEDITW (TVN_FIRST-59)
  1991. #define TVN_BEGINLABELEDIT WINELIB_NAME_AW(TVN_BEGINLABELEDIT)
  1992. #define TVN_ENDLABELEDITA (TVN_FIRST-11)
  1993. #define TVN_ENDLABELEDITW (TVN_FIRST-60)
  1994. #define TVN_ENDLABELEDIT WINELIB_NAME_AW(TVN_ENDLABELEDIT)
  1995. #define TVN_KEYDOWN (TVN_FIRST-12)
  1996. #define TVN_GETINFOTIPA (TVN_FIRST-13)
  1997. #define TVN_GETINFOTIPW (TVN_FIRST-14)
  1998. #define TVN_GETINFOTIP WINELIB_NAME_AW(TVN_GETINFOTIP)
  1999. #define TVN_SINGLEEXPAND (TVN_FIRST-15)
  2000. #define TVIF_TEXT 0x0001
  2001. #define TVIF_IMAGE 0x0002
  2002. #define TVIF_PARAM 0x0004
  2003. #define TVIF_STATE 0x0008
  2004. #define TVIF_HANDLE 0x0010
  2005. #define TVIF_SELECTEDIMAGE 0x0020
  2006. #define TVIF_CHILDREN 0x0040
  2007. #define TVIF_INTEGRAL 0x0080
  2008. #define TVIF_DI_SETITEM 0x1000
  2009. #define TVI_ROOT ((HTREEITEM)0xffff0000) /* -65536 */
  2010. #define TVI_FIRST ((HTREEITEM)0xffff0001) /* -65535 */
  2011. #define TVI_LAST ((HTREEITEM)0xffff0002) /* -65534 */
  2012. #define TVI_SORT ((HTREEITEM)0xffff0003) /* -65533 */
  2013. #define TVIS_FOCUSED 0x0001
  2014. #define TVIS_SELECTED 0x0002
  2015. #define TVIS_CUT 0x0004
  2016. #define TVIS_DROPHILITED 0x0008
  2017. #define TVIS_BOLD 0x0010
  2018. #define TVIS_EXPANDED 0x0020
  2019. #define TVIS_EXPANDEDONCE 0x0040
  2020. #define TVIS_EXPANDPARTIAL 0x0080
  2021. #define TVIS_OVERLAYMASK 0x0f00
  2022. #define TVIS_STATEIMAGEMASK 0xf000
  2023. #define TVIS_USERMASK 0xf000
  2024. #define TVHT_NOWHERE 0x0001
  2025. #define TVHT_ONITEMICON 0x0002
  2026. #define TVHT_ONITEMLABEL 0x0004
  2027. #define TVHT_ONITEMINDENT 0x0008
  2028. #define TVHT_ONITEMBUTTON 0x0010
  2029. #define TVHT_ONITEMRIGHT 0x0020
  2030. #define TVHT_ONITEMSTATEICON 0x0040
  2031. #define TVHT_ONITEM 0x0046
  2032. #define TVHT_ABOVE 0x0100
  2033. #define TVHT_BELOW 0x0200
  2034. #define TVHT_TORIGHT 0x0400
  2035. #define TVHT_TOLEFT 0x0800
  2036. #define TVS_HASBUTTONS 0x0001
  2037. #define TVS_HASLINES 0x0002
  2038. #define TVS_LINESATROOT 0x0004
  2039. #define TVS_EDITLABELS 0x0008
  2040. #define TVS_DISABLEDRAGDROP 0x0010
  2041. #define TVS_SHOWSELALWAYS 0x0020
  2042. #define TVS_RTLREADING 0x0040
  2043. #define TVS_NOTOOLTIPS 0x0080
  2044. #define TVS_CHECKBOXES 0x0100
  2045. #define TVS_TRACKSELECT 0x0200
  2046. #define TVS_SINGLEEXPAND 0x0400
  2047. #define TVS_INFOTIP 0x0800
  2048. #define TVS_FULLROWSELECT 0x1000
  2049. #define TVS_NOSCROLL 0x2000
  2050. #define TVS_NONEVENHEIGHT 0x4000
  2051. #define TVS_NOHSCROLL 0x8000
  2052. #define TVS_SHAREDIMAGELISTS 0x0000
  2053. #define TVS_PRIVATEIMAGELISTS 0x0400
  2054. #define TVE_COLLAPSE 0x0001
  2055. #define TVE_EXPAND 0x0002
  2056. #define TVE_TOGGLE 0x0003
  2057. #define TVE_EXPANDPARTIAL 0x4000
  2058. #define TVE_COLLAPSERESET 0x8000
  2059. #define TVGN_ROOT 0
  2060. #define TVGN_NEXT 1
  2061. #define TVGN_PREVIOUS 2
  2062. #define TVGN_PARENT 3
  2063. #define TVGN_CHILD 4
  2064. #define TVGN_FIRSTVISIBLE 5
  2065. #define TVGN_NEXTVISIBLE 6
  2066. #define TVGN_PREVIOUSVISIBLE 7
  2067. #define TVGN_DROPHILITE 8
  2068. #define TVGN_CARET 9
  2069. #define TVGN_LASTVISIBLE 10
  2070. #define TVSI_NOSINGLEEXPAND 0x8000
  2071. #define TVC_UNKNOWN 0x00
  2072. #define TVC_BYMOUSE 0x01
  2073. #define TVC_BYKEYBOARD 0x02
  2074. typedef struct _TREEITEM *HTREEITEM;
  2075. typedef struct {
  2076. UINT mask;
  2077. HTREEITEM hItem;
  2078. UINT state;
  2079. UINT stateMask;
  2080. LPSTR pszText;
  2081. INT cchTextMax;
  2082. INT iImage;
  2083. INT iSelectedImage;
  2084. INT cChildren;
  2085. LPARAM lParam;
  2086. } TVITEMA, *LPTVITEMA;
  2087. typedef struct {
  2088. UINT mask;
  2089. HTREEITEM hItem;
  2090. UINT state;
  2091. UINT stateMask;
  2092. LPWSTR pszText;
  2093. INT cchTextMax;
  2094. INT iImage;
  2095. INT iSelectedImage;
  2096. INT cChildren;
  2097. LPARAM lParam;
  2098. } TVITEMW, *LPTVITEMW;
  2099. #define TV_ITEMA TVITEMA
  2100. #define TV_ITEMW TVITEMW
  2101. #define LPTV_ITEMA LPTVITEMA
  2102. #define LPTV_ITEMW LPTVITEMW
  2103. #define TVITEM WINELIB_NAME_AW(TVITEM)
  2104. #define LPTVITEM WINELIB_NAME_AW(LPTVITEM)
  2105. #define TV_ITEM WINELIB_NAME_AW(TV_ITEM)
  2106. #define LPTV_ITEM WINELIB_NAME_AW(LPTV_ITEM)
  2107. typedef struct {
  2108. UINT mask;
  2109. HTREEITEM hItem;
  2110. UINT state;
  2111. UINT stateMask;
  2112. LPSTR pszText;
  2113. INT cchTextMax;
  2114. INT iImage;
  2115. INT iSelectedImage;
  2116. INT cChildren;
  2117. LPARAM lParam;
  2118. INT iIntegral;
  2119. } TVITEMEXA, *LPTVITEMEXA;
  2120. typedef struct {
  2121. UINT mask;
  2122. HTREEITEM hItem;
  2123. UINT state;
  2124. UINT stateMask;
  2125. LPWSTR pszText;
  2126. INT cchTextMax;
  2127. INT iImage;
  2128. INT iSelectedImage;
  2129. INT cChildren;
  2130. LPARAM lParam;
  2131. INT iIntegral;
  2132. } TVITEMEXW, *LPTVITEMEXW;
  2133. #define TVITEMEX WINELIB_NAME_AW(TVITEMEX)
  2134. #define LPTVITEMEX WINELIB_NAME_AW(LPTVITEMEX)
  2135. typedef struct tagTVINSERTSTRUCTA {
  2136. HTREEITEM hParent;
  2137. HTREEITEM hInsertAfter;
  2138. union {
  2139. TVITEMEXA itemex;
  2140. TVITEMA item;
  2141. } DUMMYUNIONNAME;
  2142. } TVINSERTSTRUCTA, *LPTVINSERTSTRUCTA;
  2143. typedef struct tagTVINSERTSTRUCTW {
  2144. HTREEITEM hParent;
  2145. HTREEITEM hInsertAfter;
  2146. union {
  2147. TVITEMEXW itemex;
  2148. TVITEMW item;
  2149. } DUMMYUNIONNAME;
  2150. } TVINSERTSTRUCTW, *LPTVINSERTSTRUCTW;
  2151. #define TVINSERTSTRUCT WINELIB_NAME_AW(TVINSERTSTRUCT)
  2152. #define LPTVINSERTSTRUCT WINELIB_NAME_AW(LPTVINSERTSTRUCT)
  2153. #define TVINSERTSTRUCT_V1_SIZEA CCSIZEOF_STRUCT(TVINSERTSTRUCTA, item)
  2154. #define TVINSERTSTRUCT_V1_SIZEW CCSIZEOF_STRUCT(TVINSERTSTRUCTW, item)
  2155. #define TVINSERTSTRUCT_V1_SIZE WINELIB_NAME_AW(TVINSERTSTRUCT_V1_SIZE)
  2156. #define TV_INSERTSTRUCT TVINSERTSTRUCT
  2157. #define TV_INSERTSTRUCTA TVINSERTSTRUCTA
  2158. #define TV_INSERTSTRUCTW TVINSERTSTRUCTW
  2159. #define LPTV_INSERTSTRUCT LPTVINSERTSTRUCT
  2160. #define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA
  2161. #define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW
  2162. typedef struct tagNMTREEVIEWA {
  2163. NMHDR hdr;
  2164. UINT action;
  2165. TVITEMA itemOld;
  2166. TVITEMA itemNew;
  2167. POINT ptDrag;
  2168. } NMTREEVIEWA, *LPNMTREEVIEWA;
  2169. typedef struct tagNMTREEVIEWW {
  2170. NMHDR hdr;
  2171. UINT action;
  2172. TVITEMW itemOld;
  2173. TVITEMW itemNew;
  2174. POINT ptDrag;
  2175. } NMTREEVIEWW, *LPNMTREEVIEWW;
  2176. #define NMTREEVIEW WINELIB_NAME_AW(NMTREEVIEW)
  2177. #define NM_TREEVIEW WINELIB_NAME_AW(NMTREEVIEW)
  2178. #define NM_TREEVIEWA NMTREEVIEWA
  2179. #define NM_TREEVIEWW NMTREEVIEWW
  2180. #define LPNMTREEVIEW WINELIB_NAME_AW(LPNMTREEVIEW)
  2181. #define LPNM_TREEVIEW LPNMTREEVIEW
  2182. #define LPNM_TREEVIEWA LPNMTREEVIEWA
  2183. #define LPNM_TREEVIEWW LPNMTREEVIEWW
  2184. typedef struct tagTVDISPINFOA {
  2185. NMHDR hdr;
  2186. TVITEMA item;
  2187. } NMTVDISPINFOA, *LPNMTVDISPINFOA;
  2188. typedef struct tagTVDISPINFOW {
  2189. NMHDR hdr;
  2190. TVITEMW item;
  2191. } NMTVDISPINFOW, *LPNMTVDISPINFOW;
  2192. #define NMTVDISPINFO WINELIB_NAME_AW(NMTVDISPINFO)
  2193. #define LPNMTVDISPINFO WINELIB_NAME_AW(LPNMTVDISPINFO)
  2194. #define TV_DISPINFO NMTVDISPINFO
  2195. typedef INT (CALLBACK *PFNTVCOMPARE)(LPARAM, LPARAM, LPARAM);
  2196. typedef struct tagTVSORTCB
  2197. {
  2198. HTREEITEM hParent;
  2199. PFNTVCOMPARE lpfnCompare;
  2200. LPARAM lParam;
  2201. } TVSORTCB, *LPTVSORTCB;
  2202. #define TV_SORTCB TVSORTCB
  2203. #define LPTV_SORTCB LPTVSORTCB
  2204. typedef struct tagTVHITTESTINFO {
  2205. POINT pt;
  2206. UINT flags;
  2207. HTREEITEM hItem;
  2208. } TVHITTESTINFO, *LPTVHITTESTINFO;
  2209. #define TV_HITTESTINFO TVHITTESTINFO
  2210. /* Custom Draw Treeview */
  2211. #define NMTVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMTVCUSTOMDRAW, clrTextBk)
  2212. #define TVCDRF_NOIMAGES 0x00010000
  2213. typedef struct tagNMTVCUSTOMDRAW
  2214. {
  2215. NMCUSTOMDRAW nmcd;
  2216. COLORREF clrText;
  2217. COLORREF clrTextBk;
  2218. INT iLevel; /* IE>0x0400 */
  2219. } NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW;
  2220. /* Treeview tooltips */
  2221. typedef struct tagNMTVGETINFOTIPA
  2222. {
  2223. NMHDR hdr;
  2224. LPSTR pszText;
  2225. INT cchTextMax;
  2226. HTREEITEM hItem;
  2227. LPARAM lParam;
  2228. } NMTVGETINFOTIPA, *LPNMTVGETINFOTIPA;
  2229. typedef struct tagNMTVGETINFOTIPW
  2230. {
  2231. NMHDR hdr;
  2232. LPWSTR pszText;
  2233. INT cchTextMax;
  2234. HTREEITEM hItem;
  2235. LPARAM lParam;
  2236. } NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW;
  2237. #define NMTVGETINFOTIP WINELIB_NAME_AW(NMTVGETINFOTIP)
  2238. #define LPNMTVGETINFOTIP WINELIB_NAME_AW(LPNMTVGETINFOTIP)
  2239. #include <pshpack1.h>
  2240. typedef struct tagTVKEYDOWN
  2241. {
  2242. NMHDR hdr;
  2243. WORD wVKey;
  2244. UINT flags;
  2245. } NMTVKEYDOWN, *LPNMTVKEYDOWN;
  2246. #include <poppack.h>
  2247. #define TV_KEYDOWN NMTVKEYDOWN
  2248. #define TreeView_InsertItemA(hwnd, phdi) \
  2249. (HTREEITEM)SNDMSGA((hwnd), TVM_INSERTITEMA, 0, \
  2250. (LPARAM)(LPTVINSERTSTRUCTA)(phdi))
  2251. #define TreeView_InsertItemW(hwnd,phdi) \
  2252. (HTREEITEM)SNDMSGW((hwnd), TVM_INSERTITEMW, 0, \
  2253. (LPARAM)(LPTVINSERTSTRUCTW)(phdi))
  2254. #define TreeView_InsertItem WINELIB_NAME_AW(TreeView_InsertItem)
  2255. #define TreeView_DeleteItem(hwnd, hItem) \
  2256. (BOOL)SNDMSGA((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hItem))
  2257. #define TreeView_DeleteAllItems(hwnd) \
  2258. (BOOL)SNDMSGA((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT)
  2259. #define TreeView_Expand(hwnd, hitem, code) \
  2260. (BOOL)SNDMSGA((hwnd), TVM_EXPAND, (WPARAM)code, \
  2261. (LPARAM)(HTREEITEM)(hitem))
  2262. #define TreeView_GetItemRect(hwnd, hitem, prc, code) \
  2263. (*(HTREEITEM *)prc = (hitem), (BOOL)SNDMSGA((hwnd), \
  2264. TVM_GETITEMRECT, (WPARAM)(code), (LPARAM)(RECT *)(prc)))
  2265. #define TreeView_GetCount(hwnd) \
  2266. (UINT)SNDMSGA((hwnd), TVM_GETCOUNT, 0, 0)
  2267. #define TreeView_GetIndent(hwnd) \
  2268. (UINT)SNDMSGA((hwnd), TVM_GETINDENT, 0, 0)
  2269. #define TreeView_SetIndent(hwnd, indent) \
  2270. (BOOL)SNDMSGA((hwnd), TVM_SETINDENT, (WPARAM)indent, 0)
  2271. #define TreeView_GetImageList(hwnd, iImage) \
  2272. (HIMAGELIST)SNDMSGA((hwnd), TVM_GETIMAGELIST, iImage, 0)
  2273. #define TreeView_SetImageList(hwnd, himl, iImage) \
  2274. (HIMAGELIST)SNDMSGA((hwnd), TVM_SETIMAGELIST, iImage, \
  2275. (LPARAM)(UINT)(HIMAGELIST)(himl))
  2276. #define TreeView_GetNextItem(hwnd, hitem, code) \
  2277. (HTREEITEM)SNDMSGA((hwnd), TVM_GETNEXTITEM, (WPARAM)code,\
  2278. (LPARAM)(HTREEITEM) (hitem))
  2279. #define TreeView_GetChild(hwnd, hitem) \
  2280. TreeView_GetNextItem(hwnd, hitem , TVGN_CHILD)
  2281. #define TreeView_GetNextSibling(hwnd, hitem) \
  2282. TreeView_GetNextItem(hwnd, hitem , TVGN_NEXT)
  2283. #define TreeView_GetPrevSibling(hwnd, hitem) \
  2284. TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUS)
  2285. #define TreeView_GetParent(hwnd, hitem) \
  2286. TreeView_GetNextItem(hwnd, hitem , TVGN_PARENT)
  2287. #define TreeView_GetFirstVisible(hwnd) \
  2288. TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
  2289. #define TreeView_GetLastVisible(hwnd) \
  2290. TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
  2291. #define TreeView_GetNextVisible(hwnd, hitem) \
  2292. TreeView_GetNextItem(hwnd, hitem , TVGN_NEXTVISIBLE)
  2293. #define TreeView_GetPrevVisible(hwnd, hitem) \
  2294. TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUSVISIBLE)
  2295. #define TreeView_GetSelection(hwnd) \
  2296. TreeView_GetNextItem(hwnd, NULL, TVGN_CARET)
  2297. #define TreeView_GetDropHilight(hwnd) \
  2298. TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
  2299. #define TreeView_GetRoot(hwnd) \
  2300. TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT)
  2301. #define TreeView_GetLastVisible(hwnd) \
  2302. TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
  2303. #define TreeView_Select(hwnd, hitem, code) \
  2304. (UINT)SNDMSGA((hwnd), TVM_SELECTITEM, (WPARAM)code, \
  2305. (LPARAM)(UINT)(hitem))
  2306. #define TreeView_SelectItem(hwnd, hitem) \
  2307. TreeView_Select(hwnd, hitem, TVGN_CARET)
  2308. #define TreeView_SelectDropTarget(hwnd, hitem) \
  2309. TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
  2310. #define TreeView_SelectSetFirstVisible(hwnd, hitem) \
  2311. TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
  2312. #define TreeView_GetItemA(hwnd, pitem) \
  2313. (BOOL)SNDMSGA((hwnd), TVM_GETITEMA, 0, (LPARAM) (TVITEMA *)(pitem))
  2314. #define TreeView_GetItemW(hwnd, pitem) \
  2315. (BOOL)SNDMSGW((hwnd), TVM_GETITEMW, 0, (LPARAM) (TVITEMW *)(pitem))
  2316. #define TreeView_GetItem WINELIB_NAME_AW(TreeView_GetItem)
  2317. #define TreeView_SetItemA(hwnd, pitem) \
  2318. (BOOL)SNDMSGA((hwnd), TVM_SETITEMA, 0, (LPARAM)(const TVITEMA *)(pitem))
  2319. #define TreeView_SetItemW(hwnd, pitem) \
  2320. (BOOL)SNDMSGW((hwnd), TVM_SETITEMW, 0, (LPARAM)(const TVITEMW *)(pitem))
  2321. #define TreeView_SetItem WINELIB_NAME_AW(TreeView_SetItem)
  2322. #define TreeView_EditLabel(hwnd, hitem) \
  2323. (HWND)SNDMSGA((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
  2324. #define TreeView_GetEditControl(hwnd) \
  2325. (HWND)SNDMSGA((hwnd), TVM_GETEDITCONTROL, 0, 0)
  2326. #define TreeView_GetVisibleCount(hwnd) \
  2327. (UINT)SNDMSGA((hwnd), TVM_GETVISIBLECOUNT, 0, 0)
  2328. #define TreeView_HitTest(hwnd, lpht) \
  2329. (HTREEITEM)SNDMSGA((hwnd), TVM_HITTEST, 0,\
  2330. (LPARAM)(LPTVHITTESTINFO)(lpht))
  2331. #define TreeView_CreateDragImage(hwnd, hitem) \
  2332. (HIMAGELIST)SNDMSGA((hwnd), TVM_CREATEDRAGIMAGE, 0,\
  2333. (LPARAM)(HTREEITEM)(hitem))
  2334. #define TreeView_SortChildren(hwnd, hitem, recurse) \
  2335. (BOOL)SNDMSGA((hwnd), TVM_SORTCHILDREN, (WPARAM)recurse,\
  2336. (LPARAM)(HTREEITEM)(hitem))
  2337. #define TreeView_EnsureVisible(hwnd, hitem) \
  2338. (BOOL)SNDMSGA((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(UINT)(hitem))
  2339. #define TreeView_SortChildrenCB(hwnd, psort, recurse) \
  2340. (BOOL)SNDMSGA((hwnd), TVM_SORTCHILDRENCB, (WPARAM)recurse, \
  2341. (LPARAM)(LPTV_SORTCB)(psort))
  2342. #define TreeView_EndEditLabelNow(hwnd, fCancel) \
  2343. (BOOL)SNDMSGA((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)fCancel, 0)
  2344. #define TreeView_GetISearchString(hwnd, lpsz) \
  2345. (BOOL)SNDMSGA((hwnd), TVM_GETISEARCHSTRING, 0, \
  2346. (LPARAM)(LPTSTR)lpsz)
  2347. #define TreeView_SetToolTips(hwnd, hwndTT) \
  2348. (HWND)SNDMSGA((hwnd), TVM_SETTOOLTIPS, (WPARAM)(hwndTT), 0)
  2349. #define TreeView_GetToolTips(hwnd) \
  2350. (HWND)SNDMSGA((hwnd), TVM_GETTOOLTIPS, 0, 0)
  2351. #define TreeView_SetItemHeight(hwnd, iHeight) \
  2352. (INT)SNDMSGA((hwnd), TVM_SETITEMHEIGHT, (WPARAM)iHeight, 0)
  2353. #define TreeView_GetItemHeight(hwnd) \
  2354. (INT)SNDMSGA((hwnd), TVM_GETITEMHEIGHT, 0, 0)
  2355. #define TreeView_SetBkColor(hwnd, clr) \
  2356. (COLORREF)SNDMSGA((hwnd), TVM_SETBKCOLOR, 0, (LPARAM)clr)
  2357. #define TreeView_SetTextColor(hwnd, clr) \
  2358. (COLORREF)SNDMSGA((hwnd), TVM_SETTEXTCOLOR, 0, (LPARAM)clr)
  2359. #define TreeView_GetBkColor(hwnd) \
  2360. (COLORREF)SNDMSGA((hwnd), TVM_GETBKCOLOR, 0, 0)
  2361. #define TreeView_GetTextColor(hwnd) \
  2362. (COLORREF)SNDMSGA((hwnd), TVM_GETTEXTCOLOR, 0, 0)
  2363. #define TreeView_SetScrollTime(hwnd, uTime) \
  2364. (UINT)SNDMSGA((hwnd), TVM_SETSCROLLTIME, uTime, 0)
  2365. #define TreeView_GetScrollTime(hwnd) \
  2366. (UINT)SNDMSGA((hwnd), TVM_GETSCROLLTIME, 0, 0)
  2367. #define TreeView_SetInsertMark(hwnd, hItem, fAfter) \
  2368. (BOOL)SNDMSGA((hwnd), TVM_SETINSERTMARK, (WPARAM)(fAfter), \
  2369. (LPARAM) (hItem))
  2370. #define TreeView_SetInsertMarkColor(hwnd, clr) \
  2371. (COLORREF)SNDMSGA((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)clr)
  2372. #define TreeView_GetInsertMarkColor(hwnd) \
  2373. (COLORREF)SNDMSGA((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0)
  2374. #define TreeView_SetItemState(hwndTV, hti, data, _mask) \
  2375. { TVITEM _TVi; \
  2376. _TVi.mask = TVIF_STATE; \
  2377. _TVi.hItem = hti; \
  2378. _TVi.stateMask = _mask; \
  2379. _TVi.state = data; \
  2380. SNDMSG((hwndTV), TVM_SETITEM, 0, (LPARAM)(TV_ITEM *)&_TVi); \
  2381. }
  2382. #define TreeView_GetItemState(hwndTV, hti, mask) \
  2383. (UINT)SNDMSGA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), (LPARAM)(mask))
  2384. #define TreeView_GetCheckState(hwndTV, hti) \
  2385. ((((UINT)(SNDMSGA((hwndTV), TVM_GETITEMSTATE, (WPARAM)(hti), \
  2386. TVIS_STATEIMAGEMASK))) >> 12) -1)
  2387. #define TreeView_SetLineColor(hwnd, clr) \
  2388. (COLORREF)SNDMSGA((hwnd), TVM_SETLINECOLOR, 0, (LPARAM)(clr))
  2389. #define TreeView_GetLineColor(hwnd) \
  2390. (COLORREF)SNDMSGA((hwnd), TVM_GETLINECOLOR, 0, 0)
  2391. #define TreeView_MapAccIDToHTREEITEM(hwnd, id) \
  2392. (HTREEITEM)SNDMSG((hwnd), TVM_MAPACCIDTOHTREEITEM, id, 0)
  2393. #define TreeView_MapHTREEITEMToAccID(hwnd, htreeitem) \
  2394. (UINT)SNDMSG((hwnd), TVM_MAPHTREEITEMTOACCID, (WPARAM)htreeitem, 0)
  2395. /* Listview control */
  2396. #define WC_LISTVIEWA "SysListView32"
  2397. #if defined(__GNUC__)
  2398. # define WC_LISTVIEWW (const WCHAR []){ 'S','y','s', \
  2399. 'L','i','s','t','V','i','e','w','3','2',0 }
  2400. #elif defined(_MSC_VER)
  2401. # define WC_LISTVIEWW L"SysListView32"
  2402. #else
  2403. static const WCHAR WC_LISTVIEWW[] = { 'S','y','s',
  2404. 'L','i','s','t','V','i','e','w','3','2',0 };
  2405. #endif
  2406. #define WC_LISTVIEW WINELIB_NAME_AW(WC_LISTVIEW)
  2407. #define LVSCW_AUTOSIZE -1
  2408. #define LVSCW_AUTOSIZE_USEHEADER -2
  2409. #define LVS_ICON 0x0000
  2410. #define LVS_REPORT 0x0001
  2411. #define LVS_SMALLICON 0x0002
  2412. #define LVS_LIST 0x0003
  2413. #define LVS_TYPEMASK 0x0003
  2414. #define LVS_SINGLESEL 0x0004
  2415. #define LVS_SHOWSELALWAYS 0x0008
  2416. #define LVS_SORTASCENDING 0x0010
  2417. #define LVS_SORTDESCENDING 0x0020
  2418. #define LVS_SHAREIMAGELISTS 0x0040
  2419. #define LVS_NOLABELWRAP 0x0080
  2420. #define LVS_AUTOARRANGE 0x0100
  2421. #define LVS_EDITLABELS 0x0200
  2422. #define LVS_OWNERDATA 0x1000
  2423. #define LVS_NOSCROLL 0x2000
  2424. #define LVS_TYPESTYLEMASK 0xfc00
  2425. #define LVS_ALIGNTOP 0x0000
  2426. #define LVS_ALIGNLEFT 0x0800
  2427. #define LVS_ALIGNMASK 0x0c00
  2428. #define LVS_OWNERDRAWFIXED 0x0400
  2429. #define LVS_NOCOLUMNHEADER 0x4000
  2430. #define LVS_NOSORTHEADER 0x8000
  2431. #define LVS_EX_GRIDLINES 0x0001
  2432. #define LVS_EX_SUBITEMIMAGES 0x0002
  2433. #define LVS_EX_CHECKBOXES 0x0004
  2434. #define LVS_EX_TRACKSELECT 0x0008
  2435. #define LVS_EX_HEADERDRAGDROP 0x0010
  2436. #define LVS_EX_FULLROWSELECT 0x0020
  2437. #define LVS_EX_ONECLICKACTIVATE 0x0040
  2438. #define LVS_EX_TWOCLICKACTIVATE 0x0080
  2439. #define LVS_EX_FLATSB 0x0100
  2440. #define LVS_EX_REGIONAL 0x0200
  2441. #define LVS_EX_INFOTIP 0x0400
  2442. #define LVS_EX_UNDERLINEHOT 0x0800
  2443. #define LVS_EX_UNDERLINECOLD 0x1000
  2444. #define LVS_EX_MULTIWORKAREAS 0x2000
  2445. #define LVS_EX_LABELTIP 0x4000
  2446. #define LVS_EX_BORDERSELECT 0x8000
  2447. #define LVS_EX_DOUBLEBUFFER 0x00010000
  2448. #define LVS_EX_HIDELABELS 0x00020000
  2449. #define LVS_EX_SINGLEROW 0x00040000
  2450. #define LVS_EX_SNAPTOGRID 0x00080000
  2451. #define LVS_EX_SIMPLESELECT 0x00100000
  2452. #define LVCF_FMT 0x0001
  2453. #define LVCF_WIDTH 0x0002
  2454. #define LVCF_TEXT 0x0004
  2455. #define LVCF_SUBITEM 0x0008
  2456. #define LVCF_IMAGE 0x0010
  2457. #define LVCF_ORDER 0x0020
  2458. #define LVCFMT_LEFT 0x0000
  2459. #define LVCFMT_RIGHT 0x0001
  2460. #define LVCFMT_CENTER 0x0002
  2461. #define LVCFMT_JUSTIFYMASK 0x0003
  2462. #define LVCFMT_IMAGE 0x0800
  2463. #define LVCFMT_BITMAP_ON_RIGHT 0x1000
  2464. #define LVCFMT_COL_HAS_IMAGES 0x8000
  2465. #define LVSIL_NORMAL 0
  2466. #define LVSIL_SMALL 1
  2467. #define LVSIL_STATE 2
  2468. /* following 2 flags only for LVS_OWNERDATA listviews */
  2469. /* and only in report or list mode */
  2470. #define LVSICF_NOINVALIDATEALL 0x0001
  2471. #define LVSICF_NOSCROLL 0x0002
  2472. #define LVFI_PARAM 0X0001
  2473. #define LVFI_STRING 0X0002
  2474. #define LVFI_PARTIAL 0X0008
  2475. #define LVFI_WRAP 0X0020
  2476. #define LVFI_NEARESTXY 0X0040
  2477. #define LVIF_TEXT 0x0001
  2478. #define LVIF_IMAGE 0x0002
  2479. #define LVIF_PARAM 0x0004
  2480. #define LVIF_STATE 0x0008
  2481. #define LVIF_INDENT 0x0010
  2482. #define LVIF_GROUPID 0x0100
  2483. #define LVIF_COLUMNS 0x0200
  2484. #define LVIF_NORECOMPUTE 0x0800
  2485. #define LVIF_DI_SETITEM 0x1000
  2486. #define LVIR_BOUNDS 0x0000
  2487. #define LVIR_ICON 0x0001
  2488. #define LVIR_LABEL 0x0002
  2489. #define LVIR_SELECTBOUNDS 0x0003
  2490. #define LVIS_FOCUSED 0x0001
  2491. #define LVIS_SELECTED 0x0002
  2492. #define LVIS_CUT 0x0004
  2493. #define LVIS_DROPHILITED 0x0008
  2494. #define LVIS_ACTIVATING 0x0020
  2495. #define LVIS_OVERLAYMASK 0x0F00
  2496. #define LVIS_STATEIMAGEMASK 0xF000
  2497. #define LVNI_ALL 0x0000
  2498. #define LVNI_FOCUSED 0x0001
  2499. #define LVNI_SELECTED 0x0002
  2500. #define LVNI_CUT 0x0004
  2501. #define LVNI_DROPHILITED 0x0008
  2502. #define LVNI_ABOVE 0x0100
  2503. #define LVNI_BELOW 0x0200
  2504. #define LVNI_TOLEFT 0x0400
  2505. #define LVNI_TORIGHT 0x0800
  2506. #define LVHT_NOWHERE 0x0001
  2507. #define LVHT_ONITEMICON 0x0002
  2508. #define LVHT_ONITEMLABEL 0x0004
  2509. #define LVHT_ONITEMSTATEICON 0x0008
  2510. #define LVHT_ONITEM (LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON)
  2511. #define LVHT_ABOVE 0x0008
  2512. #define LVHT_BELOW 0x0010
  2513. #define LVHT_TORIGHT 0x0020
  2514. #define LVHT_TOLEFT 0x0040
  2515. #define LV_VIEW_ICON 0x0000
  2516. #define LV_VIEW_DETAILS 0x0001
  2517. #define LV_VIEW_SMALLICON 0x0002
  2518. #define LV_VIEW_LIST 0x0003
  2519. #define LV_VIEW_TILE 0x0004
  2520. #define LV_VIEW_MAX 0x0004
  2521. #define LVGF_NONE 0x00000000
  2522. #define LVGF_HEADER 0x00000001
  2523. #define LVGF_FOOTER 0x00000002
  2524. #define LVGF_STATE 0x00000004
  2525. #define LVGF_ALIGN 0x00000008
  2526. #define LVGF_GROUPID 0x00000010
  2527. #define LVGS_NORMAL 0x00000000
  2528. #define LVGS_COLLAPSED 0x00000001
  2529. #define LVGS_HIDDEN 0x00000002
  2530. #define LVGA_HEADER_LEFT 0x00000001
  2531. #define LVGA_HEADER_CENTER 0x00000002
  2532. #define LVGA_HEADER_RIGHT 0x00000004
  2533. #define LVGA_FOOTER_LEFT 0x00000008
  2534. #define LVGA_FOOTER_CENTER 0x00000010
  2535. #define LVGA_FOOTER_RIGHT 0x00000020
  2536. #define LVGMF_NONE 0x00000000
  2537. #define LVGMF_BORDERSIZE 0x00000001
  2538. #define LVGMF_BORDERCOLOR 0x00000002
  2539. #define LVGMF_TEXTCOLOR 0x00000004
  2540. #define LVTVIF_AUTOSIZE 0x00000000
  2541. #define LVTVIF_FIXEDWIDTH 0x00000001
  2542. #define LVTVIF_FIXEDHEIGHT 0x00000002
  2543. #define LVTVIF_FIXEDSIZE 0x00000003
  2544. #define LVTVIM_TILESIZE 0x00000001
  2545. #define LVTVIM_COLUMNS 0x00000002
  2546. #define LVTVIM_LABELMARGIN 0x00000004
  2547. #define LVIM_AFTER 0x00000001
  2548. #define LVM_FIRST 0x1000
  2549. #define LVM_GETBKCOLOR (LVM_FIRST+0)
  2550. #define LVM_SETBKCOLOR (LVM_FIRST+1)
  2551. #define LVM_GETIMAGELIST (LVM_FIRST+2)
  2552. #define LVM_SETIMAGELIST (LVM_FIRST+3)
  2553. #define LVM_GETITEMCOUNT (LVM_FIRST+4)
  2554. #define LVM_GETITEMA (LVM_FIRST+5)
  2555. #define LVM_GETITEMW (LVM_FIRST+75)
  2556. #define LVM_GETITEM WINELIB_NAME_AW(LVM_GETITEM)
  2557. #define LVM_SETITEMA (LVM_FIRST+6)
  2558. #define LVM_SETITEMW (LVM_FIRST+76)
  2559. #define LVM_SETITEM WINELIB_NAME_AW(LVM_SETITEM)
  2560. #define LVM_INSERTITEMA (LVM_FIRST+7)
  2561. #define LVM_INSERTITEMW (LVM_FIRST+77)
  2562. #define LVM_INSERTITEM WINELIB_NAME_AW(LVM_INSERTITEM)
  2563. #define LVM_DELETEITEM (LVM_FIRST+8)
  2564. #define LVM_DELETEALLITEMS (LVM_FIRST+9)
  2565. #define LVM_GETCALLBACKMASK (LVM_FIRST+10)
  2566. #define LVM_SETCALLBACKMASK (LVM_FIRST+11)
  2567. #define LVM_GETNEXTITEM (LVM_FIRST+12)
  2568. #define LVM_FINDITEMA (LVM_FIRST+13)
  2569. #define LVM_FINDITEMW (LVM_FIRST+83)
  2570. #define LVM_FINDITEM WINELIB_NAME_AW(LVM_FINDITEM)
  2571. #define LVM_GETITEMRECT (LVM_FIRST+14)
  2572. #define LVM_SETITEMPOSITION (LVM_FIRST+15)
  2573. #define LVM_GETITEMPOSITION (LVM_FIRST+16)
  2574. #define LVM_GETSTRINGWIDTHA (LVM_FIRST+17)
  2575. #define LVM_GETSTRINGWIDTHW (LVM_FIRST+87)
  2576. #define LVM_GETSTRINGWIDTH WINELIB_NAME_AW(LVM_GETSTRINGWIDTH)
  2577. #define LVM_HITTEST (LVM_FIRST+18)
  2578. #define LVM_ENSUREVISIBLE (LVM_FIRST+19)
  2579. #define LVM_SCROLL (LVM_FIRST+20)
  2580. #define LVM_REDRAWITEMS (LVM_FIRST+21)
  2581. #define LVM_ARRANGE (LVM_FIRST+22)
  2582. #define LVM_EDITLABELA (LVM_FIRST+23)
  2583. #define LVM_EDITLABELW (LVM_FIRST+118)
  2584. #define LVM_EDITLABEL WINELIB_NAME_AW(LVM_EDITLABEL)
  2585. #define LVM_GETEDITCONTROL (LVM_FIRST+24)
  2586. #define LVM_GETCOLUMNA (LVM_FIRST+25)
  2587. #define LVM_GETCOLUMNW (LVM_FIRST+95)
  2588. #define LVM_GETCOLUMN WINELIB_NAME_AW(LVM_GETCOLUMN)
  2589. #define LVM_SETCOLUMNA (LVM_FIRST+26)
  2590. #define LVM_SETCOLUMNW (LVM_FIRST+96)
  2591. #define LVM_SETCOLUMN WINELIB_NAME_AW(LVM_SETCOLUMN)
  2592. #define LVM_INSERTCOLUMNA (LVM_FIRST+27)
  2593. #define LVM_INSERTCOLUMNW (LVM_FIRST+97)
  2594. #define LVM_INSERTCOLUMN WINELIB_NAME_AW(LVM_INSERTCOLUMN)
  2595. #define LVM_DELETECOLUMN (LVM_FIRST+28)
  2596. #define LVM_GETCOLUMNWIDTH (LVM_FIRST+29)
  2597. #define LVM_SETCOLUMNWIDTH (LVM_FIRST+30)
  2598. #define LVM_GETHEADER (LVM_FIRST+31)
  2599. #define LVM_CREATEDRAGIMAGE (LVM_FIRST+33)
  2600. #define LVM_GETVIEWRECT (LVM_FIRST+34)
  2601. #define LVM_GETTEXTCOLOR (LVM_FIRST+35)
  2602. #define LVM_SETTEXTCOLOR (LVM_FIRST+36)
  2603. #define LVM_GETTEXTBKCOLOR (LVM_FIRST+37)
  2604. #define LVM_SETTEXTBKCOLOR (LVM_FIRST+38)
  2605. #define LVM_GETTOPINDEX (LVM_FIRST+39)
  2606. #define LVM_GETCOUNTPERPAGE (LVM_FIRST+40)
  2607. #define LVM_GETORIGIN (LVM_FIRST+41)
  2608. #define LVM_UPDATE (LVM_FIRST+42)
  2609. #define LVM_SETITEMSTATE (LVM_FIRST+43)
  2610. #define LVM_GETITEMSTATE (LVM_FIRST+44)
  2611. #define LVM_GETITEMTEXTA (LVM_FIRST+45)
  2612. #define LVM_GETITEMTEXTW (LVM_FIRST+115)
  2613. #define LVM_GETITEMTEXT WINELIB_NAME_AW(LVM_GETITEMTEXT)
  2614. #define LVM_SETITEMTEXTA (LVM_FIRST+46)
  2615. #define LVM_SETITEMTEXTW (LVM_FIRST+116)
  2616. #define LVM_SETITEMTEXT WINELIB_NAME_AW(LVM_SETITEMTEXT)
  2617. #define LVM_SETITEMCOUNT (LVM_FIRST+47)
  2618. #define LVM_SORTITEMS (LVM_FIRST+48)
  2619. #define LVM_SETITEMPOSITION32 (LVM_FIRST+49)
  2620. #define LVM_GETSELECTEDCOUNT (LVM_FIRST+50)
  2621. #define LVM_GETITEMSPACING (LVM_FIRST+51)
  2622. #define LVM_GETISEARCHSTRINGA (LVM_FIRST+52)
  2623. #define LVM_GETISEARCHSTRINGW (LVM_FIRST+117)
  2624. #define LVM_GETISEARCHSTRING WINELIB_NAME_AW(LVM_GETISEARCHSTRING)
  2625. #define LVM_SETICONSPACING (LVM_FIRST+53)
  2626. #define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54)
  2627. #define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55)
  2628. #define LVM_GETSUBITEMRECT (LVM_FIRST+56)
  2629. #define LVM_SUBITEMHITTEST (LVM_FIRST+57)
  2630. #define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58)
  2631. #define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59)
  2632. #define LVM_SETHOTITEM (LVM_FIRST+60)
  2633. #define LVM_GETHOTITEM (LVM_FIRST+61)
  2634. #define LVM_SETHOTCURSOR (LVM_FIRST+62)
  2635. #define LVM_GETHOTCURSOR (LVM_FIRST+63)
  2636. #define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64)
  2637. #define LVM_SETWORKAREAS (LVM_FIRST+65)
  2638. #define LVM_GETSELECTIONMARK (LVM_FIRST+66)
  2639. #define LVM_SETSELECTIONMARK (LVM_FIRST+67)
  2640. #define LVM_SETBKIMAGEA (LVM_FIRST+68)
  2641. #define LVM_SETBKIMAGEW (LVM_FIRST+138)
  2642. #define LVM_SETBKIMAGE WINELIB_NAME_AW(LVM_SETBKIMAGE)
  2643. #define LVM_GETBKIMAGEA (LVM_FIRST+69)
  2644. #define LVM_GETBKIMAGEW (LVM_FIRST+139)
  2645. #define LVM_GETBKIMAGE WINELIB_NAME_AW(LVM_GETBKIMAGE)
  2646. #define LVM_GETWORKAREAS (LVM_FIRST+70)
  2647. #define LVM_SETHOVERTIME (LVM_FIRST+71)
  2648. #define LVM_GETHOVERTIME (LVM_FIRST+72)
  2649. #define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73)
  2650. #define LVM_SETTOOLTIPS (LVM_FIRST+74)
  2651. #define LVM_GETTOOLTIPS (LVM_FIRST+78)
  2652. #define LVM_GETUNICODEFORMAT (CCM_GETUNICODEFORMAT)
  2653. #define LVM_SETUNICODEFORMAT (CCM_SETUNICODEFORMAT)
  2654. #define LVM_SETSELECTEDCOLUMN (LVM_FIRST + 140)
  2655. #define LVM_SETTILEWIDTH (LVM_FIRST + 141)
  2656. #define LVM_SETVIEW (LVM_FIRST + 142)
  2657. #define LVM_GETVIEW (LVM_FIRST + 143)
  2658. #define LVM_INSERTGROUP (LVM_FIRST + 145)
  2659. #define LVM_SETGROUPINFO (LVM_FIRST + 147)
  2660. #define LVM_GETGROUPINFO (LVM_FIRST + 149)
  2661. #define LVM_REMOVEGROUP (LVM_FIRST + 150)
  2662. #define LVM_MOVEGROUP (LVM_FIRST + 151)
  2663. #define LVM_MOVEITEMTOGROUP (LVM_FIRST + 154)
  2664. #define LVM_SETGROUPMETRICS (LVM_FIRST + 155)
  2665. #define LVM_GETGROUPMETRICS (LVM_FIRST + 156)
  2666. #define LVM_ENABLEGROUPVIEW (LVM_FIRST + 157)
  2667. #define LVM_SORTGROUPS (LVM_FIRST + 158)
  2668. #define LVM_INSERTGROUPSORTED (LVM_FIRST + 159)
  2669. #define LVM_REMOVEALLGROUPS (LVM_FIRST + 160)
  2670. #define LVM_HASGROUP (LVM_FIRST + 161)
  2671. #define LVM_SETTILEVIEWINFO (LVM_FIRST + 162)
  2672. #define LVM_GETTILEVIEWINFO (LVM_FIRST + 163)
  2673. #define LVM_SETTILEINFO (LVM_FIRST + 164)
  2674. #define LVM_GETTILEINFO (LVM_FIRST + 165)
  2675. #define LVM_SETINSERTMARK (LVM_FIRST + 166)
  2676. #define LVM_GETINSERTMARK (LVM_FIRST + 167)
  2677. #define LVM_INSERTMARKHITTEST (LVM_FIRST + 168)
  2678. #define LVM_GETINSERTMARKRECT (LVM_FIRST + 169)
  2679. #define LVM_SETINSERTMARKCOLOR (LVM_FIRST + 170)
  2680. #define LVM_GETINSERTMARKCOLOR (LVM_FIRST + 171)
  2681. #define LVM_SETINFOTIP (LVM_FIRST + 173)
  2682. #define LVM_GETSELECTEDCOLUMN (LVM_FIRST + 174)
  2683. #define LVM_ISGROUPVIEWENABLED (LVM_FIRST + 175)
  2684. #define LVM_GETOUTLINECOLOR (LVM_FIRST + 176)
  2685. #define LVM_SETOUTLINECOLOR (LVM_FIRST + 177)
  2686. #define LVM_CANCELEDITLABEL (LVM_FIRST + 179)
  2687. #define LVM_MAPINDEXTOID (LVM_FIRST + 180)
  2688. #define LVM_MAPIDTOINDEX (LVM_FIRST + 181)
  2689. #define LVN_FIRST (0U-100U)
  2690. #define LVN_LAST (0U-199U)
  2691. #define LVN_ITEMCHANGING (LVN_FIRST-0)
  2692. #define LVN_ITEMCHANGED (LVN_FIRST-1)
  2693. #define LVN_INSERTITEM (LVN_FIRST-2)
  2694. #define LVN_DELETEITEM (LVN_FIRST-3)
  2695. #define LVN_DELETEALLITEMS (LVN_FIRST-4)
  2696. #define LVN_BEGINLABELEDITA (LVN_FIRST-5)
  2697. #define LVN_BEGINLABELEDITW (LVN_FIRST-75)
  2698. #define LVN_BEGINLABELEDIT WINELIB_NAME_AW(LVN_BEGINLABELEDIT)
  2699. #define LVN_ENDLABELEDITA (LVN_FIRST-6)
  2700. #define LVN_ENDLABELEDITW (LVN_FIRST-76)
  2701. #define LVN_ENDLABELEDIT WINELIB_NAME_AW(LVN_ENDLABELEDIT)
  2702. #define LVN_COLUMNCLICK (LVN_FIRST-8)
  2703. #define LVN_BEGINDRAG (LVN_FIRST-9)
  2704. #define LVN_BEGINRDRAG (LVN_FIRST-11)
  2705. #define LVN_ODCACHEHINT (LVN_FIRST-13)
  2706. #define LVN_ITEMACTIVATE (LVN_FIRST-14)
  2707. #define LVN_ODSTATECHANGED (LVN_FIRST-15)
  2708. #define LVN_HOTTRACK (LVN_FIRST-21)
  2709. #define LVN_ODFINDITEMA (LVN_FIRST-52)
  2710. #define LVN_ODFINDITEMW (LVN_FIRST-79)
  2711. #define LVN_ODFINDITEM WINELIB_NAME_AW(LVN_ODFINDITEM)
  2712. #define LVN_GETDISPINFOA (LVN_FIRST-50)
  2713. #define LVN_GETDISPINFOW (LVN_FIRST-77)
  2714. #define LVN_GETDISPINFO WINELIB_NAME_AW(LVN_GETDISPINFO)
  2715. #define LVN_SETDISPINFOA (LVN_FIRST-51)
  2716. #define LVN_SETDISPINFOW (LVN_FIRST-78)
  2717. #define LVN_SETDISPINFO WINELIB_NAME_AW(LVN_SETDISPINFO)
  2718. #define LVN_KEYDOWN (LVN_FIRST-55)
  2719. #define LVN_MARQUEEBEGIN (LVN_FIRST-56)
  2720. #define LVN_GETINFOTIPA (LVN_FIRST-57)
  2721. #define LVN_GETINFOTIPW (LVN_FIRST-58)
  2722. #define LVN_GETINFOTIP WINELIB_NAME_AW(LVN_GETINFOTIP)
  2723. #define LVA_ALIGNLEFT 0x0000
  2724. #define LVA_DEFAULT 0x0001
  2725. #define LVA_ALIGNTOP 0x0002
  2726. #define LVA_SNAPTOGRID 0x0005
  2727. typedef struct tagLVITEMA
  2728. {
  2729. UINT mask;
  2730. INT iItem;
  2731. INT iSubItem;
  2732. UINT state;
  2733. UINT stateMask;
  2734. LPSTR pszText;
  2735. INT cchTextMax;
  2736. INT iImage;
  2737. LPARAM lParam;
  2738. INT iIndent; /* (_WIN32_IE >= 0x0300) */
  2739. int iGroupId; /* (_WIN32_IE >= 0x560) */
  2740. UINT cColumns; /* (_WIN32_IE >= 0x560) */
  2741. PUINT puColumns; /* (_WIN32_IE >= 0x560) */
  2742. } LVITEMA, *LPLVITEMA;
  2743. typedef struct tagLVITEMW
  2744. {
  2745. UINT mask;
  2746. INT iItem;
  2747. INT iSubItem;
  2748. UINT state;
  2749. UINT stateMask;
  2750. LPWSTR pszText;
  2751. INT cchTextMax;
  2752. INT iImage;
  2753. LPARAM lParam;
  2754. INT iIndent; /* (_WIN32_IE >= 0x0300) */
  2755. int iGroupId; /* (_WIN32_IE >= 0x560) */
  2756. UINT cColumns; /* (_WIN32_IE >= 0x560) */
  2757. PUINT puColumns; /* (_WIN32_IE >= 0x560) */
  2758. } LVITEMW, *LPLVITEMW;
  2759. #define LVITEM WINELIB_NAME_AW(LVITEM)
  2760. #define LPLVITEM WINELIB_NAME_AW(LPLVITEM)
  2761. #define LVITEM_V1_SIZEA CCSIZEOF_STRUCT(LVITEMA, lParam)
  2762. #define LVITEM_V1_SIZEW CCSIZEOF_STRUCT(LVITEMW, lParam)
  2763. #define LVITEM_V1_SIZE WINELIB_NAME_AW(LVITEM_V1_SIZE)
  2764. #define LV_ITEM LVITEM
  2765. #define LV_ITEMA LVITEMA
  2766. #define LV_ITEMW LVITEMW
  2767. typedef struct LVSETINFOTIPA
  2768. {
  2769. UINT cbSize;
  2770. DWORD dwFlags;
  2771. LPSTR pszText;
  2772. int iItem;
  2773. int iSubItem;
  2774. } LVSETINFOTIPA, *PLVSETINFOTIPA;
  2775. typedef struct LVSETINFOTIPW
  2776. {
  2777. UINT cbSize;
  2778. DWORD dwFlags;
  2779. LPWSTR pszText;
  2780. int iItem;
  2781. int iSubItem;
  2782. } LVSETINFOTIPW, *PLVSETINFOTIPW;
  2783. #define LVSETINFOTIP WINELIB_NAME_AW(LVSETINFOTIP)
  2784. #define PLVSETINFOTIP WINELIB_NAME_AW(PLVSETINFOTIP)
  2785. /* ListView background image structs and constants
  2786. For _WIN32_IE version 0x400 and later. */
  2787. typedef struct tagLVBKIMAGEA
  2788. {
  2789. ULONG ulFlags;
  2790. HBITMAP hbm;
  2791. LPSTR pszImage;
  2792. UINT cchImageMax;
  2793. int xOffsetPercent;
  2794. int yOffsetPercent;
  2795. } LVBKIMAGEA, *LPLVBKIMAGEA;
  2796. typedef struct tagLVBKIMAGEW
  2797. {
  2798. ULONG ulFlags;
  2799. HBITMAP hbm;
  2800. LPWSTR pszImage;
  2801. UINT cchImageMax;
  2802. int xOffsetPercent;
  2803. int yOffsetPercent;
  2804. } LVBKIMAGEW, *LPLVBKIMAGEW;
  2805. #define LVBKIMAGE WINELIB_NAME_AW(LVBKIMAGE)
  2806. #define LPLVBKIMAGE WINELIB_NAME_AW(LPLVBKIMAGE)
  2807. #define LVBKIF_SOURCE_NONE 0x00000000
  2808. #define LVBKIF_SOURCE_HBITMAP 0x00000001
  2809. #define LVBKIF_SOURCE_URL 0x00000002
  2810. #define LVBKIF_SOURCE_MASK 0x00000003
  2811. #define LVBKIF_STYLE_NORMAL 0x00000000
  2812. #define LVBKIF_STYLE_TILE 0x00000010
  2813. #define LVBKIF_STYLE_MASK 0x00000010
  2814. #define LVBKIF_FLAG_TILEOFFSET 0x00000100
  2815. #define LVBKIF_TYPE_WATERMARK 0x10000000
  2816. #define ListView_SetBkImage(hwnd, plvbki) \
  2817. (BOOL)SNDMSG((hwnd), LVM_SETBKIMAGE, 0, (LPARAM)plvbki)
  2818. #define ListView_GetBkImage(hwnd, plvbki) \
  2819. (BOOL)SNDMSG((hwnd), LVM_GETBKIMAGE, 0, (LPARAM)plvbki)
  2820. typedef struct tagLVCOLUMNA
  2821. {
  2822. UINT mask;
  2823. INT fmt;
  2824. INT cx;
  2825. LPSTR pszText;
  2826. INT cchTextMax;
  2827. INT iSubItem;
  2828. INT iImage; /* (_WIN32_IE >= 0x0300) */
  2829. INT iOrder; /* (_WIN32_IE >= 0x0300) */
  2830. } LVCOLUMNA, *LPLVCOLUMNA;
  2831. typedef struct tagLVCOLUMNW
  2832. {
  2833. UINT mask;
  2834. INT fmt;
  2835. INT cx;
  2836. LPWSTR pszText;
  2837. INT cchTextMax;
  2838. INT iSubItem;
  2839. INT iImage; /* (_WIN32_IE >= 0x0300) */
  2840. INT iOrder; /* (_WIN32_IE >= 0x0300) */
  2841. } LVCOLUMNW, *LPLVCOLUMNW;
  2842. #define LVCOLUMN WINELIB_NAME_AW(LVCOLUMN)
  2843. #define LPLVCOLUMN WINELIB_NAME_AW(LPLVCOLUMN)
  2844. #define LVCOLUMN_V1_SIZEA CCSIZEOF_STRUCT(LVCOLUMNA, iSubItem)
  2845. #define LVCOLUMN_V1_SIZEW CCSIZEOF_STRUCT(LVCOLUMNW, iSubItem)
  2846. #define LVCOLUMN_V1_SIZE WINELIB_NAME_AW(LVCOLUMN_V1_SIZE)
  2847. #define LV_COLUMN LVCOLUMN
  2848. typedef struct tagNMLISTVIEW
  2849. {
  2850. NMHDR hdr;
  2851. INT iItem;
  2852. INT iSubItem;
  2853. UINT uNewState;
  2854. UINT uOldState;
  2855. UINT uChanged;
  2856. POINT ptAction;
  2857. LPARAM lParam;
  2858. } NMLISTVIEW, *LPNMLISTVIEW;
  2859. #define NM_LISTVIEW NMLISTVIEW
  2860. #define LPNM_LISTVIEW LPNMLISTVIEW
  2861. typedef struct tagNMITEMACTIVATE
  2862. {
  2863. NMHDR hdr;
  2864. int iItem;
  2865. int iSubItem;
  2866. UINT uNewState;
  2867. UINT uOldState;
  2868. UINT uChanged;
  2869. POINT ptAction;
  2870. LPARAM lParam;
  2871. UINT uKeyFlags;
  2872. } NMITEMACTIVATE, *LPNMITEMACTIVATE;
  2873. #define LVKF_ALT 0x0001
  2874. #define LVKF_CONTROL 0x0002
  2875. #define LVKF_SHIFT 0x0004
  2876. typedef struct tagLVDISPINFO
  2877. {
  2878. NMHDR hdr;
  2879. LVITEMA item;
  2880. } NMLVDISPINFOA, *LPNMLVDISPINFOA;
  2881. typedef struct tagLVDISPINFOW
  2882. {
  2883. NMHDR hdr;
  2884. LVITEMW item;
  2885. } NMLVDISPINFOW, *LPNMLVDISPINFOW;
  2886. #define NMLVDISPINFO WINELIB_NAME_AW(NMLVDISPINFO)
  2887. #define LPNMLVDISPINFO WINELIB_NAME_AW(LPNMLVDISPINFO)
  2888. #define LV_DISPINFO NMLVDISPINFO
  2889. #define LV_DISPINFOA NMLVDISPINFOA
  2890. #define LV_DISPINFOW NMLVDISPINFOW
  2891. #include <pshpack1.h>
  2892. typedef struct tagLVKEYDOWN
  2893. {
  2894. NMHDR hdr;
  2895. WORD wVKey;
  2896. UINT flags;
  2897. } NMLVKEYDOWN, *LPNMLVKEYDOWN;
  2898. #include <poppack.h>
  2899. #define LV_KEYDOWN NMLVKEYDOWN
  2900. typedef struct tagNMLVGETINFOTIPA
  2901. {
  2902. NMHDR hdr;
  2903. DWORD dwFlags;
  2904. LPSTR pszText;
  2905. int cchTextMax;
  2906. int iItem;
  2907. int iSubItem;
  2908. LPARAM lParam;
  2909. } NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA;
  2910. typedef struct tagNMLVGETINFOTIPW
  2911. {
  2912. NMHDR hdr;
  2913. DWORD dwFlags;
  2914. LPWSTR pszText;
  2915. int cchTextMax;
  2916. int iItem;
  2917. int iSubItem;
  2918. LPARAM lParam;
  2919. } NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW;
  2920. #define NMLVGETINFOTIP WINELIB_NAME_AW(NMLVGETINFOTIP)
  2921. #define LPNMLVGETINFOTIP WINELIB_NAME_AW(LPNMLVGETINFOTIP)
  2922. typedef struct tagLVHITTESTINFO
  2923. {
  2924. POINT pt;
  2925. UINT flags;
  2926. INT iItem;
  2927. INT iSubItem;
  2928. } LVHITTESTINFO, *LPLVHITTESTINFO;
  2929. #define LV_HITTESTINFO LVHITTESTINFO
  2930. #define _LV_HITTESTINFO tagLVHITTESTINFO
  2931. #define LVHITTESTINFO_V1_SIZE CCSIZEOF_STRUCT(LVHITTESTINFO,iItem)
  2932. typedef struct tagLVFINDINFOA
  2933. {
  2934. UINT flags;
  2935. LPCSTR psz;
  2936. LPARAM lParam;
  2937. POINT pt;
  2938. UINT vkDirection;
  2939. } LVFINDINFOA, *LPLVFINDINFOA;
  2940. typedef struct tagLVFINDINFOW
  2941. {
  2942. UINT flags;
  2943. LPCWSTR psz;
  2944. LPARAM lParam;
  2945. POINT pt;
  2946. UINT vkDirection;
  2947. } LVFINDINFOW, *LPLVFINDINFOW;
  2948. #define LVFINDINFO WINELIB_NAME_AW(LVFINDINFO)
  2949. #define LPLVFINDINFO WINELIB_NAME_AW(LPLVFINDINFO)
  2950. #define LV_FINDINFO LVFINDINFO
  2951. #define LV_FINDINFOA LVFINDINFOA
  2952. #define LV_FINDINFOW LVFINDINFOW
  2953. /* Groups relates structures */
  2954. typedef struct LVGROUPA
  2955. {
  2956. UINT cbSize;
  2957. UINT mask;
  2958. LPSTR pszHeader;
  2959. int cchHeader;
  2960. int iGroupId;
  2961. UINT stateMask;
  2962. UINT state;
  2963. UINT uAlign;
  2964. } LVGROUPA, *PLVGROUPA;
  2965. typedef struct LVGROUPW
  2966. {
  2967. UINT cbSize;
  2968. UINT mask;
  2969. LPWSTR pszHeader;
  2970. int cchHeader;
  2971. int iGroupId;
  2972. UINT stateMask;
  2973. UINT state;
  2974. UINT uAlign;
  2975. } LVGROUPW, *PLVGROUPW;
  2976. #define LVGROUP WINELIB_NAME_AW(LVGROUP)
  2977. #define PLVGROUP WINELIB_NAME_AW(PLVGROUP)
  2978. typedef struct LVGROUPMETRICS
  2979. {
  2980. UINT cbSize;
  2981. UINT mask;
  2982. UINT Left;
  2983. UINT Top;
  2984. UINT Right;
  2985. UINT Bottom;
  2986. COLORREF crLeft;
  2987. COLORREF crTop;
  2988. COLORREF crRight;
  2989. COLORREF crBottom;
  2990. COLORREF crRightHeader;
  2991. COLORREF crFooter;
  2992. } LVGROUPMETRICS, *PLVGROUPMETRICS;
  2993. typedef INT (*PFNLVGROUPCOMPARE)(INT, INT, VOID*);
  2994. typedef struct LVINSERTGROUPSORTEDA
  2995. {
  2996. PFNLVGROUPCOMPARE pfnGroupCompare;
  2997. LPVOID *pvData;
  2998. LVGROUPA lvGroup;
  2999. } LVINSERTGROUPSORTEDA, *PLVINSERTGROUPSORTEDA;
  3000. typedef struct LVINSERTGROUPSORTEDW
  3001. {
  3002. PFNLVGROUPCOMPARE pfnGroupCompare;
  3003. LPVOID *pvData;
  3004. LVGROUPW lvGroup;
  3005. } LVINSERTGROUPSORTEDW, *PLVINSERTGROUPSORTEDW;
  3006. #define LVINSERTGROUPSORTED WINELIB_NAME_AW(LVINSERTGROUPSORTED)
  3007. #define PLVINSERTGROUPSORTED WINELIB_NAME_AW(PLVINSERTGROUPSORTED)
  3008. /* Tile related structures */
  3009. typedef struct LVTILEINFO
  3010. {
  3011. UINT cbSize;
  3012. int iItem;
  3013. UINT cColumns;
  3014. PUINT puColumns;
  3015. } LVTILEINFO, *PLVTILEINFO;
  3016. typedef struct LVTILEVIEWINFO
  3017. {
  3018. UINT cbSize;
  3019. DWORD dwMask;
  3020. DWORD dwFlags;
  3021. SIZE sizeTile;
  3022. int cLines;
  3023. RECT rcLabelMargin;
  3024. } LVTILEVIEWINFO, *PLVTILEVIEWINFO;
  3025. typedef struct LVINSERTMARK
  3026. {
  3027. UINT cbSize;
  3028. DWORD dwFlags;
  3029. int iItem;
  3030. DWORD dwReserved;
  3031. } LVINSERTMARK, *PLVINSERTMARK;
  3032. typedef struct tagTCHITTESTINFO
  3033. {
  3034. POINT pt;
  3035. UINT flags;
  3036. } TCHITTESTINFO, *LPTCHITTESTINFO;
  3037. #define TC_HITTESTINFO TCHITTESTINFO
  3038. typedef INT (CALLBACK *PFNLVCOMPARE)(LPARAM, LPARAM, LPARAM);
  3039. #define NMLVCUSTOMDRAW_V3_SIZE CCSIZEOF_STRUCT(NMLCUSTOMDRW, clrTextBk)
  3040. typedef struct tagNMLVCUSTOMDRAW
  3041. {
  3042. NMCUSTOMDRAW nmcd;
  3043. COLORREF clrText;
  3044. COLORREF clrTextBk;
  3045. int iSubItem; /* (_WIN32_IE >= 0x0400) */
  3046. DWORD dwItemType; /* (_WIN32_IE >= 0x560) */
  3047. COLORREF clrFace; /* (_WIN32_IE >= 0x560) */
  3048. int iIconEffect; /* (_WIN32_IE >= 0x560) */
  3049. int iIconPhase; /* (_WIN32_IE >= 0x560) */
  3050. int iPartId; /* (_WIN32_IE >= 0x560) */
  3051. int iStateId; /* (_WIN32_IE >= 0x560) */
  3052. RECT rcText; /* (_WIN32_IE >= 0x560) */
  3053. UINT uAlign; /* (_WIN32_IE >= 0x560) */
  3054. } NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW;
  3055. typedef struct tagNMLVCACHEHINT
  3056. {
  3057. NMHDR hdr;
  3058. INT iFrom;
  3059. INT iTo;
  3060. } NMLVCACHEHINT, *LPNMLVCACHEHINT;
  3061. #define LPNM_CACHEHINT LPNMLVCACHEHINT
  3062. #define PNM_CACHEHINT LPNMLVCACHEHINT
  3063. #define NM_CACHEHINT NMLVCACHEHINT
  3064. typedef struct tagNMLVFINDITEMA
  3065. {
  3066. NMHDR hdr;
  3067. int iStart;
  3068. LVFINDINFOA lvfi;
  3069. } NMLVFINDITEMA, *LPNMLVFINDITEMA;
  3070. typedef struct tagNMLVFINDITEMW
  3071. {
  3072. NMHDR hdr;
  3073. int iStart;
  3074. LVFINDINFOW lvfi;
  3075. } NMLVFINDITEMW, *LPNMLVFINDITEMW;
  3076. #define NMLVFINDITEM WINELIB_NAME_AW(NMLVFINDITEM)
  3077. #define LPNMLVFINDITEM WINELIB_NAME_AW(LPNMLVFINDITEM)
  3078. #define NM_FINDITEM NMLVFINDITEM
  3079. #define LPNM_FINDITEM LPNMLVFINDITEM
  3080. #define PNM_FINDITEM LPNMLVFINDITEM
  3081. typedef struct tagNMLVODSTATECHANGE
  3082. {
  3083. NMHDR hdr;
  3084. int iFrom;
  3085. int iTo;
  3086. UINT uNewState;
  3087. UINT uOldState;
  3088. } NMLVODSTATECHANGE, *LPNMLVODSTATECHANGE;
  3089. #define PNM_ODSTATECHANGE LPNMLVODSTATECHANGE
  3090. #define LPNM_ODSTATECHANGE LPNMLVODSTATECHANGE
  3091. #define NM_ODSTATECHANGE NMLVODSTATECHANGE
  3092. typedef struct NMLVSCROLL
  3093. {
  3094. NMHDR hdr;
  3095. int dx;
  3096. int dy;
  3097. } NMLVSCROLL, *LPNMLVSCROLL;
  3098. #define ListView_SetItemCount(hwnd,count) \
  3099. (BOOL)SNDMSGA((hwnd),LVM_SETITEMCOUNT,(WPARAM)(INT)(count),0)
  3100. #define ListView_SetTextBkColor(hwnd,clrBk) \
  3101. (BOOL)SNDMSGA((hwnd),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
  3102. #define ListView_SetTextColor(hwnd,clrBk) \
  3103. (BOOL)SNDMSGA((hwnd),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(clrBk))
  3104. #define ListView_DeleteColumn(hwnd,col)\
  3105. (LRESULT)SNDMSGA((hwnd),LVM_DELETECOLUMN,0,(LPARAM)(INT)(col))
  3106. #define ListView_GetColumnA(hwnd,x,col)\
  3107. (LRESULT)SNDMSGA((hwnd),LVM_GETCOLUMNA,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNA)(col))
  3108. #define ListView_GetColumnW(hwnd,x,col)\
  3109. (LRESULT)SNDMSGW((hwnd),LVM_GETCOLUMNW,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNW)(col))
  3110. #define ListView_GetColumn WINELIB_NAME_AW(ListView_GetColumn)
  3111. #define ListView_SetColumnA(hwnd,x,col)\
  3112. (LRESULT)SNDMSGA((hwnd),LVM_SETCOLUMNA,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNA)(col))
  3113. #define ListView_SetColumnW(hwnd,x,col)\
  3114. (LRESULT)SNDMSGW((hwnd),LVM_SETCOLUMNW,(WPARAM)(INT)(x),(LPARAM)(LPLVCOLUMNW)(col))
  3115. #define ListView_SetColumn WINELIB_NAME_AW(ListView_SetColumn)
  3116. #define ListView_GetColumnWidth(hwnd,x)\
  3117. (INT)SNDMSGW((hwnd),LVM_GETCOLUMNWIDTH,(WPARAM)(INT)(x),0L)
  3118. #define ListView_SetColumnWidth(hwnd,x,width)\
  3119. (BOOL)SNDMSGW((hwnd),LVM_SETCOLUMNWIDTH,(WPARAM)(INT)(x),(LPARAM)(MAKELPARAM(width,0)))
  3120. #define ListView_GetNextItem(hwnd,nItem,flags) \
  3121. (INT)SNDMSGA((hwnd),LVM_GETNEXTITEM,(WPARAM)(INT)(nItem),(LPARAM)(MAKELPARAM(flags,0)))
  3122. #define ListView_FindItemA(hwnd,nItem,plvfi) \
  3123. (INT)SNDMSGA((hwnd),LVM_FINDITEMA,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOA*)(plvfi))
  3124. #define ListView_FindItemW(hwnd,nItem,plvfi) \
  3125. (INT)SNDMSGW((hwnd),LVM_FINDITEMW,(WPARAM)(INT)(nItem),(LPARAM)(LVFINDINFOW*)(plvfi))
  3126. #define ListView_FindItem WINELIB_NAME_AW(ListView_FindItem)
  3127. #define ListView_Arrange(hwnd,code) \
  3128. (INT)SNDMSGA((hwnd),LVM_ARRANGE,(WPARAM)(INT)(code),0L)
  3129. #define ListView_GetItemPosition(hwnd,i,ppt) \
  3130. (INT)SNDMSGA((hwnd),LVM_GETITEMPOSITION,(WPARAM)(INT)(i),(LPARAM)(LPPOINT)(ppt))
  3131. #define ListView_GetItemRect(hwnd,i,prc,code) \
  3132. (BOOL)SNDMSGA((hwnd), LVM_GETITEMRECT, (WPARAM)(int)(i), \
  3133. ((prc) ? (((RECT*)(prc))->left = (code),(LPARAM)(RECT \
  3134. *)(prc)) : (LPARAM)(RECT*)NULL))
  3135. #define ListView_SetItemA(hwnd,pitem) \
  3136. (INT)SNDMSGA((hwnd),LVM_SETITEMA,0,(LPARAM)(const LVITEMA *)(pitem))
  3137. #define ListView_SetItemW(hwnd,pitem) \
  3138. (INT)SNDMSGW((hwnd),LVM_SETITEMW,0,(LPARAM)(const LVITEMW *)(pitem))
  3139. #define ListView_SetItem WINELIB_NAME_AW(ListView_SetItem)
  3140. #define ListView_SetItemState(hwnd,i,data,dataMask) \
  3141. { LVITEMA _LVi; _LVi.state = data; _LVi.stateMask = dataMask;\
  3142. SNDMSGA(hwnd, LVM_SETITEMSTATE, (WPARAM)(UINT)i, (LPARAM) (LPLVITEMA)&_LVi);}
  3143. #define ListView_GetItemState(hwnd,i,mask) \
  3144. (BOOL)SNDMSGA((hwnd),LVM_GETITEMSTATE,(WPARAM)(UINT)(i),(LPARAM)(UINT)(mask))
  3145. #define ListView_GetCountPerPage(hwnd) \
  3146. (BOOL)SNDMSGW((hwnd),LVM_GETCOUNTPERPAGE,0,0L)
  3147. #define ListView_GetImageList(hwnd,iImageList) \
  3148. (HIMAGELIST)SNDMSGA((hwnd),LVM_GETIMAGELIST,(WPARAM)(INT)(iImageList),0L)
  3149. #define ListView_GetStringWidthA(hwnd,pstr) \
  3150. (INT)SNDMSGA((hwnd),LVM_GETSTRINGWIDTHA,0,(LPARAM)(LPCSTR)(pstr))
  3151. #define ListView_GetStringWidthW(hwnd,pstr) \
  3152. (INT)SNDMSGW((hwnd),LVM_GETSTRINGWIDTHW,0,(LPARAM)(LPCWSTR)(pstr))
  3153. #define ListView_GetStringWidth WINELIB_NAME_AW(ListView_GetStringWidth)
  3154. #define ListView_GetTopIndex(hwnd) \
  3155. (BOOL)SNDMSGA((hwnd),LVM_GETTOPINDEX,0,0L)
  3156. #define ListView_Scroll(hwnd,dx,dy) \
  3157. (BOOL)SNDMSGA((hwnd),LVM_SCROLL,(WPARAM)(INT)(dx),(LPARAM)(INT)(dy))
  3158. #define ListView_EnsureVisible(hwnd,i,fPartialOk) \
  3159. (BOOL)SNDMSGA((hwnd),LVM_ENSUREVISIBLE,(WPARAM)(INT)i,(LPARAM)(BOOL)fPartialOk)
  3160. #define ListView_SetBkColor(hwnd,clrBk) \
  3161. (BOOL)SNDMSGA((hwnd),LVM_SETBKCOLOR,0,(LPARAM)(COLORREF)(clrBk))
  3162. #define ListView_SetImageList(hwnd,himl,iImageList) \
  3163. (HIMAGELIST)(UINT)SNDMSGA((hwnd),LVM_SETIMAGELIST,(WPARAM)(iImageList),(LPARAM)(UINT)(HIMAGELIST)(himl))
  3164. #define ListView_GetItemCount(hwnd) \
  3165. (INT)SNDMSGA((hwnd),LVM_GETITEMCOUNT,0,0L)
  3166. #define ListView_RedrawItems(hwnd,first,last) \
  3167. (BOOL)SNDMSGA((hwnd),LVM_REDRAWITEMS,(WPARAM)(INT)(first),(LPARAM)(INT)(last))
  3168. #define ListView_GetEditControl(hwnd) \
  3169. (HWND)SNDMSGA((hwnd), LVM_GETEDITCONTROL, 0, 0)
  3170. #define ListView_GetTextColor(hwnd) \
  3171. (COLORREF)SNDMSGA((hwnd), LVM_GETTEXTCOLOR, 0, 0)
  3172. #define ListView_GetBkColor(hwnd) \
  3173. (COLORREF)SNDMSGA((hwnd), LVM_GETBKCOLOR, 0, 0)
  3174. #define ListView_GetItemA(hwnd,pitem) \
  3175. (BOOL)SNDMSGA((hwnd),LVM_GETITEMA,0,(LPARAM)(LVITEMA *)(pitem))
  3176. #define ListView_GetItemW(hwnd,pitem) \
  3177. (BOOL)SNDMSGW((hwnd),LVM_GETITEMW,0,(LPARAM)(LVITEMW *)(pitem))
  3178. #define ListView_GetItem WINELIB_NAME_AW(ListView_GetItem)
  3179. #define ListView_HitTest(hwnd,pinfo) \
  3180. (INT)SNDMSGA((hwnd),LVM_HITTEST,0,(LPARAM)(LPLVHITTESTINFO)(pinfo))
  3181. #define ListView_InsertItemA(hwnd,pitem) \
  3182. (INT)SNDMSGA((hwnd),LVM_INSERTITEMA,0,(LPARAM)(const LVITEMA *)(pitem))
  3183. #define ListView_InsertItemW(hwnd,pitem) \
  3184. (INT)SNDMSGW((hwnd),LVM_INSERTITEMW,0,(LPARAM)(const LVITEMW *)(pitem))
  3185. #define ListView_InsertItem WINELIB_NAME_AW(ListView_InsertItem)
  3186. #define ListView_DeleteAllItems(hwnd) \
  3187. (BOOL)SNDMSGA((hwnd),LVM_DELETEALLITEMS,0,0L)
  3188. #define ListView_InsertColumnA(hwnd,iCol,pcol) \
  3189. (INT)SNDMSGA((hwnd),LVM_INSERTCOLUMNA,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNA *)(pcol))
  3190. #define ListView_InsertColumnW(hwnd,iCol,pcol) \
  3191. (INT)SNDMSGW((hwnd),LVM_INSERTCOLUMNW,(WPARAM)(INT)(iCol),(LPARAM)(const LVCOLUMNW *)(pcol))
  3192. #define ListView_InsertColumn WINELIB_NAME_AW(ListView_InsertColumn)
  3193. #define ListView_SortItems(hwndLV,_pfnCompare,_lPrm) \
  3194. (BOOL)SNDMSGA((hwndLV),LVM_SORTITEMS,(WPARAM)(LPARAM)_lPrm,(LPARAM)(PFNLVCOMPARE)_pfnCompare)
  3195. #define ListView_SetItemPosition(hwndLV, i, x, y) \
  3196. (BOOL)SNDMSGA((hwndLV),LVM_SETITEMPOSITION,(WPARAM)(INT)(i),MAKELPARAM((x),(y)))
  3197. #define ListView_GetSelectedCount(hwndLV) \
  3198. (UINT)SNDMSGA((hwndLV),LVM_GETSELECTEDCOUNT,0,0L)
  3199. #define ListView_EditLabelA(hwndLV, i) \
  3200. (HWND)SNDMSGA((hwndLV),LVM_EDITLABELA,(WPARAM)(int)(i), 0L)
  3201. #define ListView_EditLabelW(hwndLV, i) \
  3202. (HWND)SNDMSGW((hwndLV),LVM_EDITLABELW,(WPARAM)(int)(i), 0L)
  3203. #define ListView_EditLabel WINELIB_NAME_AW(ListView_EditLabel)
  3204. #define ListView_GetItemTextA(hwndLV, i, _iSubItem, _pszText, _cchTextMax) \
  3205. { \
  3206. LVITEMA _LVi;\
  3207. _LVi.iSubItem = _iSubItem;\
  3208. _LVi.cchTextMax = _cchTextMax;\
  3209. _LVi.pszText = _pszText;\
  3210. SNDMSGA(hwndLV, LVM_GETITEMTEXTA, (WPARAM)(i), (LPARAM)&_LVi);\
  3211. }
  3212. #define ListView_GetItemTextW(hwndLV, i, _iSubItem, _pszText, _cchTextMax) \
  3213. { \
  3214. LVITEMW _LVi;\
  3215. _LVi.iSubItem = _iSubItem;\
  3216. _LVi.cchTextMax = _cchTextMax;\
  3217. _LVi.pszText = _pszText;\
  3218. SNDMSGW(hwndLV, LVM_GETITEMTEXTW, (WPARAM)(i), (LPARAM)&_LVi);\
  3219. }
  3220. #define ListView_GetItemText WINELIB_NAME_AW(ListView_GetItemText)
  3221. #define ListView_SetItemPosition32(hwnd,n,x1,y1) \
  3222. { POINT ptNewPos; ptNewPos.x = (x1); ptNewPos.y = (y1); SNDMSGA((hwnd), LVM_SETITEMPOSITION32, (WPARAM)(int)(n), (LPARAM)&ptNewPos); }
  3223. #define ListView_SetItemTextA(hwndLV, i, _iSubItem, _pszText) \
  3224. { LVITEMA _LVi; _LVi.iSubItem = _iSubItem; _LVi.pszText = _pszText;\
  3225. SNDMSGA(hwndLV, LVM_SETITEMTEXTA, (WPARAM)i, (LPARAM) (LVITEMA*)&_LVi);}
  3226. #define ListView_SetItemTextW(hwndLV, i, _iSubItem, _pszText) \
  3227. { LVITEMW _LVi; _LVi.iSubItem = _iSubItem; _LVi.pszText = _pszText;\
  3228. SNDMSGW(hwndLV, LVM_SETITEMTEXTW, (WPARAM)i, (LPARAM) (LVITEMW*)& _LVi);}
  3229. #define ListView_SetItemText WINELIB_NAME_AW(ListView_SetItemText)
  3230. #define ListView_DeleteItem(hwndLV, i) \
  3231. (BOOL)SNDMSGA(hwndLV, LVM_DELETEITEM, (WPARAM)(int)(i), 0L)
  3232. #define ListView_Update(hwndLV, i) \
  3233. (BOOL)SNDMSGA((hwndLV), LVM_UPDATE, (WPARAM)(i), 0L)
  3234. #define ListView_GetColumnOrderArray(hwndLV, iCount, pi) \
  3235. (BOOL)SNDMSGA((hwndLV), LVM_GETCOLUMNORDERARRAY, (WPARAM)iCount, (LPARAM)(LPINT)pi)
  3236. #define ListView_GetExtendedListViewStyle(hwndLV) \
  3237. (DWORD)SNDMSGA((hwndLV), LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0L)
  3238. #define ListView_GetHotCursor(hwndLV) \
  3239. (HCURSOR)SNDMSGA((hwndLV), LVM_GETHOTCURSOR, 0, 0L)
  3240. #define ListView_GetHotItem(hwndLV) \
  3241. (int)SNDMSGA((hwndLV), LVM_GETHOTITEM, 0, 0L)
  3242. #define ListView_GetItemSpacing(hwndLV, fSmall) \
  3243. (DWORD)SNDMSGA((hwndLV), LVM_GETITEMSPACING, (WPARAM)fSmall, 0L)
  3244. #define ListView_GetSubItemRect(hwndLV, iItem, iSubItem, code, prc) \
  3245. (BOOL)SNDMSGA((hwndLV), LVM_GETSUBITEMRECT, (WPARAM)(int)(iItem), \
  3246. ((prc) ? (((LPRECT)(prc))->top = iSubItem), (((LPRECT)(prc))->left = code):0), (LPARAM)prc)
  3247. #define ListView_GetToolTips(hwndLV) \
  3248. (HWND)SNDMSGA((hwndLV), LVM_GETTOOLTIPS, 0, 0L)
  3249. #define ListView_SetColumnOrderArray(hwndLV, iCount, pi) \
  3250. (BOOL)SNDMSGA((hwndLV), LVM_SETCOLUMNORDERARRAY, (WPARAM)iCount, (LPARAM)(LPINT)pi)
  3251. #define ListView_SetExtendedListViewStyle(hwndLV, dw) \
  3252. (DWORD)SNDMSGA((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)dw)
  3253. #define ListView_SetExtendedListViewStyleEx(hwndLV, dwMask, dw) \
  3254. (DWORD)SNDMSGA((hwndLV), LVM_SETEXTENDEDLISTVIEWSTYLE, (WPARAM)dwMask, (LPARAM)dw)
  3255. #define ListView_SetHotCursor(hwndLV, hcur) \
  3256. (HCURSOR)SNDMSGA((hwndLV), LVM_SETHOTCURSOR, 0, (LPARAM)hcur)
  3257. #define ListView_SetHotItem(hwndLV, i) \
  3258. (int)SNDMSGA((hwndLV), LVM_SETHOTITEM, (WPARAM)i, 0L)
  3259. #define ListView_SetIconSpacing(hwndLV, cx, cy) \
  3260. (DWORD)SNDMSGA((hwndLV), LVM_SETICONSPACING, 0, MAKELONG(cx,cy))
  3261. #define ListView_SetToolTips(hwndLV, hwndNewHwnd) \
  3262. (HWND)SNDMSGA((hwndLV), LVM_SETTOOLTIPS, (WPARAM)hwndNewHwnd, 0L)
  3263. #define ListView_SubItemHitTest(hwndLV, plvhti) \
  3264. (int)SNDMSGA((hwndLV), LVM_SUBITEMHITTEST, 0, (LPARAM)(LPLVHITTESTINFO)(plvhti))
  3265. #define ListView_GetSelectionMark(hwndLV) \
  3266. (int)SNDMSG((hwndLV), LVM_GETSELECTIONMARK, 0, 0)
  3267. #define ListView_SetSelectionMark(hwndLV, iItem) \
  3268. (int)SNDMSG((hwndLV), LVM_SETSELECTIONMARK, 0, (LPARAM)(iItem))
  3269. #define ListView_GetViewRect(hwndLV, prc) \
  3270. (BOOL)SNDMSG((hwndLV),LVM_GETVIEWRECT,0,(LPARAM)(LPRECT)(prc))
  3271. #define ListView_GetHeader(hwndLV) \
  3272. (HWND)SNDMSG((hwndLV),LVM_GETHEADER,0,0L)
  3273. #define ListView_SetSelectedColumn(hwnd, iCol) \
  3274. SNDMSG((hwnd), LVM_SETSELECTEDCOLUMN, (WPARAM)iCol, 0)
  3275. #define ListView_SetTileWidth(hwnd, cpWidth) \
  3276. SNDMSG((hwnd), LVM_SETTILEWIDTH, (WPARAM)cpWidth, 0)
  3277. #define ListView_SetView(hwnd, iView) \
  3278. (DWORD)SNDMSG((hwnd), LVM_SETVIEW, (WPARAM)(DWORD)iView, 0)
  3279. #define ListView_GetView(hwnd) \
  3280. (DWORD)SNDMSG((hwnd), LVM_GETVIEW, 0, 0)
  3281. #define ListView_InsertGroup(hwnd, index, pgrp) \
  3282. SNDMSG((hwnd), LVM_INSERTGROUP, (WPARAM)index, (LPARAM)pgrp)
  3283. #define ListView_SetGroupInfo(hwnd, iGroupId, pgrp) \
  3284. SNDMSG((hwnd), LVM_SETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp)
  3285. #define ListView_GetGroupInfo(hwnd, iGroupId, pgrp) \
  3286. SNDMSG((hwnd), LVM_GETGROUPINFO, (WPARAM)iGroupId, (LPARAM)pgrp)
  3287. #define ListView_RemoveGroup(hwnd, iGroupId) \
  3288. SNDMSG((hwnd), LVM_REMOVEGROUP, (WPARAM)iGroupId, 0)
  3289. #define ListView_MoveGroup(hwnd, iGroupId, toIndex) \
  3290. SNDMSG((hwnd), LVM_MOVEGROUP, (WPARAM)iGroupId, (LPARAM)toIndex)
  3291. #define ListView_MoveItemToGroup(hwnd, idItemFrom, idGroupTo) \
  3292. SNDMSG((hwnd), LVM_MOVEITEMTOGROUP, (WPARAM)idItemFrom, (LPARAM)idGroupTo)
  3293. #define ListView_SetGroupMetrics(hwnd, pGroupMetrics) \
  3294. SNDMSG((hwnd), LVM_SETGROUPMETRICS, 0, (LPARAM)pGroupMetrics)
  3295. #define ListView_GetGroupMetrics(hwnd, pGroupMetrics) \
  3296. SNDMSG((hwnd), LVM_GETGROUPMETRICS, 0, (LPARAM)pGroupMetrics)
  3297. #define ListView_EnableGroupView(hwnd, fEnable) \
  3298. SNDMSG((hwnd), LVM_ENABLEGROUPVIEW, (WPARAM)fEnable, 0)
  3299. #define ListView_SortGroups(hwnd, _pfnGroupCompate, _plv) \
  3300. SNDMSG((hwnd), LVM_SORTGROUPS, (WPARAM)_pfnGroupCompate, (LPARAM)_plv)
  3301. #define ListView_InsertGroupSorted(hwnd, structInsert) \
  3302. SNDMSG((hwnd), LVM_INSERTGROUPSORTED, (WPARAM)structInsert, 0)
  3303. #define ListView_RemoveAllGroups(hwnd) \
  3304. SNDMSG((hwnd), LVM_REMOVEALLGROUPS, 0, 0)
  3305. #define ListView_HasGroup(hwnd, dwGroupId) \
  3306. SNDMSG((hwnd), LVM_HASGROUP, dwGroupId, 0)
  3307. #define ListView_SetTileViewInfo(hwnd, ptvi) \
  3308. SNDMSG((hwnd), LVM_SETTILEVIEWINFO, 0, (LPARAM)ptvi)
  3309. #define ListView_GetTileViewInfo(hwnd, ptvi) \
  3310. SNDMSG((hwnd), LVM_GETTILEVIEWINFO, 0, (LPARAM)ptvi)
  3311. #define ListView_SetTileInfo(hwnd, pti) \
  3312. SNDMSG((hwnd), LVM_SETTILEINFO, 0, (LPARAM)pti)
  3313. #define ListView_GetTileInfo(hwnd, pti) \
  3314. SNDMSG((hwnd), LVM_GETTILEINFO, 0, (LPARAM)pti)
  3315. #define ListView_SetInsertMark(hwnd, lvim) \
  3316. (BOOL)SNDMSG((hwnd), LVM_SETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim))
  3317. #define ListView_GetInsertMark(hwnd, lvim) \
  3318. (BOOL)SNDMSG((hwnd), LVM_GETINSERTMARK, (WPARAM) 0, (LPARAM) (lvim))
  3319. #define ListView_InsertMarkHitTest(hwnd, point, lvim) \
  3320. (int)SNDMSG((hwnd), LVM_INSERTMARKHITTEST, (WPARAM)(LPPOINT)(point), (LPARAM)(LPLVINSERTMARK)(lvim))
  3321. #define ListView_GetInsertMarkRect(hwnd, rc) \
  3322. (int)SNDMSG((hwnd), LVM_GETINSERTMARKRECT, (WPARAM)0, (LPARAM)(LPRECT)(rc))
  3323. #define ListView_SetInsertMarkColor(hwnd, color) \
  3324. (COLORREF)SNDMSG((hwnd), LVM_SETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color))
  3325. #define ListView_GetInsertMarkColor(hwnd) \
  3326. (COLORREF)SNDMSG((hwnd), LVM_GETINSERTMARKCOLOR, (WPARAM)0, (LPARAM)0)
  3327. #define ListView_SetInfoTip(hwndLV, plvInfoTip)\
  3328. (BOOL)SNDMSG((hwndLV), LVM_SETINFOTIP, (WPARAM)0, (LPARAM)plvInfoTip)
  3329. #define ListView_GetSelectedColumn(hwnd) \
  3330. (UINT)SNDMSG((hwnd), LVM_GETSELECTEDCOLUMN, 0, 0)
  3331. #define ListView_IsGroupViewEnabled(hwnd) \
  3332. (BOOL)SNDMSG((hwnd), LVM_ISGROUPVIEWENABLED, 0, 0)
  3333. #define ListView_GetOutlineColor(hwnd) \
  3334. (COLORREF)SNDMSG((hwnd), LVM_GETOUTLINECOLOR, 0, 0)
  3335. #define ListView_SetOutlineColor(hwnd, color) \
  3336. (COLORREF)SNDMSG((hwnd), LVM_SETOUTLINECOLOR, (WPARAM)0, (LPARAM)(COLORREF)(color))
  3337. #define ListView_CancelEditLabel(hwnd) \
  3338. (VOID)SNDMSG((hwnd), LVM_CANCELEDITLABEL, (WPARAM)0, (LPARAM)0)
  3339. #define ListView_MapIndexToID(hwnd, index) \
  3340. (UINT)SNDMSG((hwnd), LVM_MAPINDEXTOID, (WPARAM)index, (LPARAM)0)
  3341. #define ListView_MapIDToIndex(hwnd, id) \
  3342. (UINT)SNDMSG((hwnd), LVM_MAPIDTOINDEX, (WPARAM)id, (LPARAM)0)
  3343. /* Tab Control */
  3344. #define WC_TABCONTROLA "SysTabControl32"
  3345. #if defined(__GNUC__)
  3346. # define WC_TABCONTROLW (const WCHAR []){ 'S','y','s', \
  3347. 'T','a','b','C','o','n','t','r','o','l','3','2',0 }
  3348. #elif defined(_MSC_VER)
  3349. # define WC_TABCONTROLW L"SysTabControl32"
  3350. #else
  3351. static const WCHAR WC_TABCONTROLW[] = { 'S','y','s',
  3352. 'T','a','b','C','o','n','t','r','o','l','3','2',0 };
  3353. #endif
  3354. #define WC_TABCONTROL WINELIB_NAME_AW(WC_TABCONTROL)
  3355. /* tab control styles */
  3356. #define TCS_SCROLLOPPOSITE 0x0001 /* assumes multiline tab */
  3357. #define TCS_BOTTOM 0x0002
  3358. #define TCS_RIGHT 0x0002
  3359. #define TCS_MULTISELECT 0x0004 /* allow multi-select in button mode */
  3360. #define TCS_FLATBUTTONS 0x0008
  3361. #define TCS_FORCEICONLEFT 0x0010
  3362. #define TCS_FORCELABELLEFT 0x0020
  3363. #define TCS_HOTTRACK 0x0040
  3364. #define TCS_VERTICAL 0x0080
  3365. #define TCS_TABS 0x0000
  3366. #define TCS_BUTTONS 0x0100
  3367. #define TCS_SINGLELINE 0x0000
  3368. #define TCS_MULTILINE 0x0200
  3369. #define TCS_RIGHTJUSTIFY 0x0000
  3370. #define TCS_FIXEDWIDTH 0x0400
  3371. #define TCS_RAGGEDRIGHT 0x0800
  3372. #define TCS_FOCUSONBUTTONDOWN 0x1000
  3373. #define TCS_OWNERDRAWFIXED 0x2000
  3374. #define TCS_TOOLTIPS 0x4000
  3375. #define TCS_FOCUSNEVER 0x8000
  3376. #define TCS_EX_FLATSEPARATORS 0x00000001 /* to be used with */
  3377. #define TCS_EX_REGISTERDROP 0x00000002 /* TCM_SETEXTENDEDSTYLE */
  3378. #define TCM_FIRST 0x1300
  3379. #define TCM_GETIMAGELIST (TCM_FIRST + 2)
  3380. #define TCM_SETIMAGELIST (TCM_FIRST + 3)
  3381. #define TCM_GETITEMCOUNT (TCM_FIRST + 4)
  3382. #define TCM_GETITEM WINELIB_NAME_AW(TCM_GETITEM)
  3383. #define TCM_GETITEMA (TCM_FIRST + 5)
  3384. #define TCM_GETITEMW (TCM_FIRST + 60)
  3385. #define TCM_SETITEMA (TCM_FIRST + 6)
  3386. #define TCM_SETITEMW (TCM_FIRST + 61)
  3387. #define TCM_SETITEM WINELIB_NAME_AW(TCM_SETITEM)
  3388. #define TCM_INSERTITEMA (TCM_FIRST + 7)
  3389. #define TCM_INSERTITEMW (TCM_FIRST + 62)
  3390. #define TCM_INSERTITEM WINELIB_NAME_AW(TCM_INSERTITEM)
  3391. #define TCM_DELETEITEM (TCM_FIRST + 8)
  3392. #define TCM_DELETEALLITEMS (TCM_FIRST + 9)
  3393. #define TCM_GETITEMRECT (TCM_FIRST + 10)
  3394. #define TCM_GETCURSEL (TCM_FIRST + 11)
  3395. #define TCM_SETCURSEL (TCM_FIRST + 12)
  3396. #define TCM_HITTEST (TCM_FIRST + 13)
  3397. #define TCM_SETITEMEXTRA (TCM_FIRST + 14)
  3398. #define TCM_ADJUSTRECT (TCM_FIRST + 40)
  3399. #define TCM_SETITEMSIZE (TCM_FIRST + 41)
  3400. #define TCM_REMOVEIMAGE (TCM_FIRST + 42)
  3401. #define TCM_SETPADDING (TCM_FIRST + 43)
  3402. #define TCM_GETROWCOUNT (TCM_FIRST + 44)
  3403. #define TCM_GETTOOLTIPS (TCM_FIRST + 45)
  3404. #define TCM_SETTOOLTIPS (TCM_FIRST + 46)
  3405. #define TCM_GETCURFOCUS (TCM_FIRST + 47)
  3406. #define TCM_SETCURFOCUS (TCM_FIRST + 48)
  3407. #define TCM_SETMINTABWIDTH (TCM_FIRST + 49)
  3408. #define TCM_DESELECTALL (TCM_FIRST + 50)
  3409. #define TCM_HIGHLIGHTITEM (TCM_FIRST + 51)
  3410. #define TCM_SETEXTENDEDSTYLE (TCM_FIRST + 52)
  3411. #define TCM_GETEXTENDEDSTYLE (TCM_FIRST + 53)
  3412. #define TCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
  3413. #define TCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
  3414. #define TCIF_TEXT 0x0001
  3415. #define TCIF_IMAGE 0x0002
  3416. #define TCIF_RTLREADING 0x0004
  3417. #define TCIF_PARAM 0x0008
  3418. #define TCIF_STATE 0x0010
  3419. #define TCIS_BUTTONPRESSED 0x0001
  3420. #define TCIS_HIGHLIGHTED 0x0002
  3421. /* TabCtrl Macros */
  3422. #define TabCtrl_GetImageList(hwnd) \
  3423. (HIMAGELIST)SNDMSGA((hwnd), TCM_GETIMAGELIST, 0, 0L)
  3424. #define TabCtrl_SetImageList(hwnd, himl) \
  3425. (HIMAGELIST)SNDMSGA((hwnd), TCM_SETIMAGELIST, 0, (LPARAM)(UINT)(HIMAGELIST)(himl))
  3426. #define TabCtrl_GetItemCount(hwnd) \
  3427. (int)SNDMSGA((hwnd), TCM_GETITEMCOUNT, 0, 0L)
  3428. #define TabCtrl_GetItemA(hwnd, iItem, pitem) \
  3429. (BOOL)SNDMSGA((hwnd), TCM_GETITEMA, (WPARAM)(int)iItem, (LPARAM)(TCITEMA *)(pitem))
  3430. #define TabCtrl_GetItemW(hwnd, iItem, pitem) \
  3431. (BOOL)SNDMSGW((hwnd), TCM_GETITEMW, (WPARAM)(int)iItem, (LPARAM)(TCITEMW *)(pitem))
  3432. #define TabCtrl_GetItem WINELIB_NAME_AW(TabCtrl_GetItem)
  3433. #define TabCtrl_SetItemA(hwnd, iItem, pitem) \
  3434. (BOOL)SNDMSGA((hwnd), TCM_SETITEMA, (WPARAM)(int)iItem, (LPARAM)(TCITEMA *)(pitem))
  3435. #define TabCtrl_SetItemW(hwnd, iItem, pitem) \
  3436. (BOOL)SNDMSGW((hwnd), TCM_SETITEMW, (WPARAM)(int)iItem, (LPARAM)(TCITEMW *)(pitem))
  3437. #define TabCtrl_SetItem WINELIB_NAME_AW(TabCtrl_SetItem)
  3438. #define TabCtrl_InsertItemA(hwnd, iItem, pitem) \
  3439. (int)SNDMSGA((hwnd), TCM_INSERTITEMA, (WPARAM)(int)iItem, (LPARAM)(const TCITEMA *)(pitem))
  3440. #define TabCtrl_InsertItemW(hwnd, iItem, pitem) \
  3441. (int)SNDMSGW((hwnd), TCM_INSERTITEMW, (WPARAM)(int)iItem, (LPARAM)(const TCITEMW *)(pitem))
  3442. #define TabCtrl_InsertItem WINELIB_NAME_AW(TabCtrl_InsertItem)
  3443. #define TabCtrl_DeleteItem(hwnd, i) \
  3444. (BOOL)SNDMSGA((hwnd), TCM_DELETEITEM, (WPARAM)(int)(i), 0L)
  3445. #define TabCtrl_DeleteAllItems(hwnd) \
  3446. (BOOL)SNDMSGA((hwnd), TCM_DELETEALLITEMS, 0, 0L)
  3447. #define TabCtrl_GetItemRect(hwnd, i, prc) \
  3448. (BOOL)SNDMSGA((hwnd), TCM_GETITEMRECT, (WPARAM)(int)(i), (LPARAM)(RECT *)(prc))
  3449. #define TabCtrl_GetCurSel(hwnd) \
  3450. (int)SNDMSGA((hwnd), TCM_GETCURSEL, 0, 0)
  3451. #define TabCtrl_SetCurSel(hwnd, i) \
  3452. (int)SNDMSGA((hwnd), TCM_SETCURSEL, (WPARAM)i, 0)
  3453. #define TabCtrl_HitTest(hwndTC, pinfo) \
  3454. (int)SNDMSGA((hwndTC), TCM_HITTEST, 0, (LPARAM)(TC_HITTESTINFO *)(pinfo))
  3455. #define TabCtrl_SetItemExtra(hwndTC, cb) \
  3456. (BOOL)SNDMSGA((hwndTC), TCM_SETITEMEXTRA, (WPARAM)(cb), 0L)
  3457. #define TabCtrl_AdjustRect(hwnd, bLarger, prc) \
  3458. (int)SNDMSGA(hwnd, TCM_ADJUSTRECT, (WPARAM)(BOOL)bLarger, (LPARAM)(RECT *)prc)
  3459. #define TabCtrl_SetItemSize(hwnd, x, y) \
  3460. (DWORD)SNDMSGA((hwnd), TCM_SETITEMSIZE, 0, MAKELPARAM(x,y))
  3461. #define TabCtrl_RemoveImage(hwnd, i) \
  3462. (void)SNDMSGA((hwnd), TCM_REMOVEIMAGE, i, 0L)
  3463. #define TabCtrl_SetPadding(hwnd, cx, cy) \
  3464. (void)SNDMSGA((hwnd), TCM_SETPADDING, 0, MAKELPARAM(cx, cy))
  3465. #define TabCtrl_GetRowCount(hwnd) \
  3466. (int)SNDMSGA((hwnd), TCM_GETROWCOUNT, 0, 0L)
  3467. #define TabCtrl_GetToolTips(hwnd) \
  3468. (HWND)SNDMSGA((hwnd), TCM_GETTOOLTIPS, 0, 0L)
  3469. #define TabCtrl_SetToolTips(hwnd, hwndTT) \
  3470. (void)SNDMSGA((hwnd), TCM_SETTOOLTIPS, (WPARAM)hwndTT, 0L)
  3471. #define TabCtrl_GetCurFocus(hwnd) \
  3472. (int)SNDMSGA((hwnd), TCM_GETCURFOCUS, 0, 0)
  3473. #define TabCtrl_SetCurFocus(hwnd, i) \
  3474. SNDMSGA((hwnd),TCM_SETCURFOCUS, i, 0)
  3475. #define TabCtrl_SetMinTabWidth(hwnd, x) \
  3476. (int)SNDMSGA((hwnd), TCM_SETMINTABWIDTH, 0, x)
  3477. #define TabCtrl_DeselectAll(hwnd, fExcludeFocus)\
  3478. (void)SNDMSGA((hwnd), TCM_DESELECTALL, fExcludeFocus, 0)
  3479. #define TabCtrl_GetUnicodeFormat(hwnd) \
  3480. (BOOL)SNDMSGA((hwnd), TCM_GETUNICODEFORMAT, 0, 0)
  3481. #define TabCtrl_SetUnicodeFormat(hwnd, fUnicode) \
  3482. (BOOL)SNDMSGA((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)fUnicode, 0)
  3483. #define TabCtrl_GetExtendedStyle(hwnd) \
  3484. (BOOL)SNDMSGA((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0)
  3485. #define TabCtrl_SetExtendedStyle(hwnd, dwExStyle) \
  3486. (BOOL)SNDMSGA((hwnd), TCM_GETEXTENDEDSTYLE, 0, (LPARAM)dwExStyle)
  3487. #define TabCtrl_HighlightItem(hwnd, i, fHighlight) \
  3488. (BOOL)SNDMSG((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)i, (LPARAM)MAKELONG(fHighlight, 0))
  3489. /* constants for TCHITTESTINFO */
  3490. #define TCHT_NOWHERE 0x01
  3491. #define TCHT_ONITEMICON 0x02
  3492. #define TCHT_ONITEMLABEL 0x04
  3493. #define TCHT_ONITEM (TCHT_ONITEMICON | TCHT_ONITEMLABEL)
  3494. typedef struct tagTCITEMHEADERA
  3495. {
  3496. UINT mask;
  3497. UINT lpReserved1;
  3498. UINT lpReserved2;
  3499. LPSTR pszText;
  3500. int cchTextMax;
  3501. int iImage;
  3502. } TCITEMHEADERA, *LPTCITEMHEADERA;
  3503. typedef struct tagTCITEMHEADERW
  3504. {
  3505. UINT mask;
  3506. UINT lpReserved1;
  3507. UINT lpReserved2;
  3508. LPWSTR pszText;
  3509. int cchTextMax;
  3510. int iImage;
  3511. } TCITEMHEADERW, *LPTCITEMHEADERW;
  3512. #define TCITEMHEADER WINELIB_NAME_AW(TCITEMHEADER)
  3513. #define LPTCITEMHEADER WINELIB_NAME_AW(LPTCITEMHEADER)
  3514. #define TC_ITEMHEADER WINELIB_NAME_AW(TCITEMHEADER)
  3515. #define LPTC_ITEMHEADER WINELIB_NAME_AW(LPTCITEMHEADER)
  3516. typedef struct tagTCITEMA
  3517. {
  3518. UINT mask;
  3519. UINT dwState;
  3520. UINT dwStateMask;
  3521. LPSTR pszText;
  3522. INT cchTextMax;
  3523. INT iImage;
  3524. LPARAM lParam;
  3525. } TCITEMA, *LPTCITEMA;
  3526. typedef struct tagTCITEMW
  3527. {
  3528. UINT mask;
  3529. DWORD dwState;
  3530. DWORD dwStateMask;
  3531. LPWSTR pszText;
  3532. INT cchTextMax;
  3533. INT iImage;
  3534. LPARAM lParam;
  3535. } TCITEMW, *LPTCITEMW;
  3536. #define TCITEM WINELIB_NAME_AW(TCITEM)
  3537. #define LPTCITEM WINELIB_NAME_AW(LPTCITEM)
  3538. #define TC_ITEM WINELIB_NAME_AW(TCITEM)
  3539. #define LPTC_ITEM WINELIB_NAME_AW(LPTCITEM)
  3540. #define TCN_FIRST (0U-550U)
  3541. #define TCN_LAST (0U-580U)
  3542. #define TCN_KEYDOWN (TCN_FIRST - 0)
  3543. #define TCN_SELCHANGE (TCN_FIRST - 1)
  3544. #define TCN_SELCHANGING (TCN_FIRST - 2)
  3545. #define TCN_GETOBJECT (TCN_FIRST - 3)
  3546. #include <pshpack1.h>
  3547. typedef struct tagTCKEYDOWN
  3548. {
  3549. NMHDR hdr;
  3550. WORD wVKey;
  3551. UINT flags;
  3552. } NMTCKEYDOWN;
  3553. #include <poppack.h>
  3554. #define TC_KEYDOWN NMTCKEYDOWN
  3555. /* ComboBoxEx control */
  3556. #define WC_COMBOBOXEXA "ComboBoxEx32"
  3557. #if defined(__GNUC__)
  3558. # define WC_COMBOBOXEXW (const WCHAR []){ 'C','o','m','b','o', \
  3559. 'B','o','x','E','x','3','2',0 }
  3560. #elif defined(_MSC_VER)
  3561. # define WC_COMBOBOXEXW L"ComboBoxEx32"
  3562. #else
  3563. static const WCHAR WC_COMBOBOXEXW[] = { 'C','o','m','b','o',
  3564. 'B','o','x','E','x','3','2',0 };
  3565. #endif
  3566. #define WC_COMBOBOXEX WINELIB_NAME_AW(WC_COMBOBOXEX)
  3567. #define CBEIF_TEXT 0x00000001
  3568. #define CBEIF_IMAGE 0x00000002
  3569. #define CBEIF_SELECTEDIMAGE 0x00000004
  3570. #define CBEIF_OVERLAY 0x00000008
  3571. #define CBEIF_INDENT 0x00000010
  3572. #define CBEIF_LPARAM 0x00000020
  3573. #define CBEIF_DI_SETITEM 0x10000000
  3574. #define CBEM_INSERTITEMA (WM_USER+1)
  3575. #define CBEM_INSERTITEMW (WM_USER+11)
  3576. #define CBEM_INSERTITEM WINELIB_NAME_AW(CBEM_INSERTITEM)
  3577. #define CBEM_SETIMAGELIST (WM_USER+2)
  3578. #define CBEM_GETIMAGELIST (WM_USER+3)
  3579. #define CBEM_GETITEMA (WM_USER+4)
  3580. #define CBEM_GETITEMW (WM_USER+13)
  3581. #define CBEM_GETITEM WINELIB_NAME_AW(CBEM_GETITEM)
  3582. #define CBEM_SETITEMA (WM_USER+5)
  3583. #define CBEM_SETITEMW (WM_USER+12)
  3584. #define CBEM_SETITEM WINELIB_NAME_AW(CBEM_SETITEM)
  3585. #define CBEM_DELETEITEM CB_DELETESTRING
  3586. #define CBEM_GETCOMBOCONTROL (WM_USER+6)
  3587. #define CBEM_GETEDITCONTROL (WM_USER+7)
  3588. #define CBEM_SETEXSTYLE (WM_USER+8)
  3589. #define CBEM_GETEXSTYLE (WM_USER+9)
  3590. #define CBEM_GETEXTENDEDSTYLE (WM_USER+9)
  3591. #define CBEM_SETEXTENDEDSTYLE (WM_USER+14)
  3592. #define CBEM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
  3593. #define CBEM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
  3594. #define CBEM_HASEDITCHANGED (WM_USER+10)
  3595. #define CBEM_SETWINDOWTHEME CCM_SETWINDOWTHEME
  3596. #define CBEIF_TEXT 0x00000001
  3597. #define CBEIF_IMAGE 0x00000002
  3598. #define CBEIF_SELECTEDIMAGE 0x00000004
  3599. #define CBEIF_OVERLAY 0x00000008
  3600. #define CBEIF_INDENT 0x00000010
  3601. #define CBEIF_LPARAM 0x00000020
  3602. #define CBEIF_DI_SETITEM 0x10000000
  3603. #define CBEN_FIRST (0U-800U)
  3604. #define CBEN_LAST (0U-830U)
  3605. #define CBEN_GETDISPINFOA (CBEN_FIRST - 0)
  3606. #define CBEN_GETDISPINFOW (CBEN_FIRST - 7)
  3607. #define CBEN_GETDISPINFO WINELIB_NAME_AW(CBEN_GETDISPINFO)
  3608. #define CBEN_INSERTITEM (CBEN_FIRST - 1)
  3609. #define CBEN_DELETEITEM (CBEN_FIRST - 2)
  3610. #define CBEN_BEGINEDIT (CBEN_FIRST - 4)
  3611. #define CBEN_ENDEDITA (CBEN_FIRST - 5)
  3612. #define CBEN_ENDEDITW (CBEN_FIRST - 6)
  3613. #define CBEN_ENDEDIT WINELIB_NAME_AW(CBEN_ENDEDIT)
  3614. #define CBEN_DRAGBEGINA (CBEN_FIRST - 8)
  3615. #define CBEN_DRAGBEGINW (CBEN_FIRST - 9)
  3616. #define CBEN_DRAGBEGIN WINELIB_NAME_AW(CBEN_DRAGBEGIN)
  3617. #define CBES_EX_NOEDITIMAGE 0x00000001
  3618. #define CBES_EX_NOEDITIMAGEINDENT 0x00000002
  3619. #define CBES_EX_PATHWORDBREAKPROC 0x00000004
  3620. #define CBES_EX_NOSIZELIMIT 0x00000008
  3621. #define CBES_EX_CASESENSITIVE 0x00000010
  3622. typedef struct tagCOMBOBOXEXITEMA
  3623. {
  3624. UINT mask;
  3625. int iItem;
  3626. LPSTR pszText;
  3627. int cchTextMax;
  3628. int iImage;
  3629. int iSelectedImage;
  3630. int iOverlay;
  3631. int iIndent;
  3632. LPARAM lParam;
  3633. } COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA;
  3634. typedef COMBOBOXEXITEMA const *PCCOMBOEXITEMA; /* Yes, there's a BOX missing */
  3635. typedef struct tagCOMBOBOXEXITEMW
  3636. {
  3637. UINT mask;
  3638. int iItem;
  3639. LPWSTR pszText;
  3640. int cchTextMax;
  3641. int iImage;
  3642. int iSelectedImage;
  3643. int iOverlay;
  3644. int iIndent;
  3645. LPARAM lParam;
  3646. } COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW;
  3647. typedef COMBOBOXEXITEMW const *PCCOMBOEXITEMW; /* Yes, there's a BOX missing */
  3648. #define COMBOBOXEXITEM WINELIB_NAME_AW(COMBOBOXEXITEM)
  3649. #define PCOMBOBOXEXITEM WINELIB_NAME_AW(PCOMBOBOXEXITEM)
  3650. #define PCCOMBOBOXEXITEM WINELIB_NAME_AW(PCCOMBOEXITEM) /* Yes, there's a BOX missing */
  3651. #define CBENF_KILLFOCUS 1
  3652. #define CBENF_RETURN 2
  3653. #define CBENF_ESCAPE 3
  3654. #define CBENF_DROPDOWN 4
  3655. #define CBEMAXSTRLEN 260
  3656. typedef struct tagNMCBEENDEDITW
  3657. {
  3658. NMHDR hdr;
  3659. BOOL fChanged;
  3660. int iNewSelection;
  3661. WCHAR szText[CBEMAXSTRLEN];
  3662. int iWhy;
  3663. } NMCBEENDEDITW, *LPNMCBEENDEDITW, *PNMCBEENDEDITW;
  3664. typedef struct tagNMCBEENDEDITA
  3665. {
  3666. NMHDR hdr;
  3667. BOOL fChanged;
  3668. int iNewSelection;
  3669. char szText[CBEMAXSTRLEN];
  3670. int iWhy;
  3671. } NMCBEENDEDITA, *LPNMCBEENDEDITA, *PNMCBEENDEDITA;
  3672. #define NMCBEENDEDIT WINELIB_NAME_AW(NMCBEENDEDIT)
  3673. #define LPNMCBEENDEDIT WINELIB_NAME_AW(LPNMCBEENDEDIT)
  3674. #define PNMCBEENDEDIT WINELIB_NAME_AW(PNMCBEENDEDIT)
  3675. typedef struct
  3676. {
  3677. NMHDR hdr;
  3678. COMBOBOXEXITEMA ceItem;
  3679. } NMCOMBOBOXEXA, *PNMCOMBOBOXEXA;
  3680. typedef struct
  3681. {
  3682. NMHDR hdr;
  3683. COMBOBOXEXITEMW ceItem;
  3684. } NMCOMBOBOXEXW, *PNMCOMBOBOXEXW;
  3685. #define NMCOMBOBOXEX WINELIB_NAME_AW(NMCOMBOBOXEX)
  3686. #define PNMCOMBOBOXEX WINELIB_NAME_AW(PNMCOMBOBOXEX)
  3687. typedef struct
  3688. {
  3689. NMHDR hdr;
  3690. int iItemid;
  3691. char szText[CBEMAXSTRLEN];
  3692. } NMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA;
  3693. typedef struct
  3694. {
  3695. NMHDR hdr;
  3696. int iItemid;
  3697. WCHAR szText[CBEMAXSTRLEN];
  3698. } NMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW;
  3699. #define NMCBEDRAGBEGIN WINELIB_NAME_AW(NMCBEDRAGBEGIN)
  3700. #define PNMCBEDRAGBEGIN WINELIB_NAME_AW(PNMCBEDRAGBEGIN)
  3701. #define LPNMCBEDRAGBEGIN WINELIB_NAME_AW(LPNMCBEDRAGBEGIN)
  3702. /* Hotkey control */
  3703. #define HOTKEY_CLASSA "msctls_hotkey32"
  3704. #if defined(__GNUC__)
  3705. # define HOTKEY_CLASSW (const WCHAR []){ 'm','s','c','t','l','s','_', \
  3706. 'h','o','t','k','e','y','3','2',0 }
  3707. #elif defined(_MSC_VER)
  3708. # define HOTKEY_CLASSW L"msctls_hotkey32"
  3709. #else
  3710. static const WCHAR HOTKEY_CLASSW[] = { 'm','s','c','t','l','s','_',
  3711. 'h','o','t','k','e','y','3','2',0 };
  3712. #endif
  3713. #define HOTKEY_CLASS WINELIB_NAME_AW(HOTKEY_CLASS)
  3714. #define HOTKEYF_SHIFT 0x01
  3715. #define HOTKEYF_CONTROL 0x02
  3716. #define HOTKEYF_ALT 0x04
  3717. #define HOTKEYF_EXT 0x08
  3718. #define HKCOMB_NONE 0x0001
  3719. #define HKCOMB_S 0x0002
  3720. #define HKCOMB_C 0x0004
  3721. #define HKCOMB_A 0x0008
  3722. #define HKCOMB_SC 0x0010
  3723. #define HKCOMB_SA 0x0020
  3724. #define HKCOMB_CA 0x0040
  3725. #define HKCOMB_SCA 0x0080
  3726. #define HKM_SETHOTKEY (WM_USER+1)
  3727. #define HKM_GETHOTKEY (WM_USER+2)
  3728. #define HKM_SETRULES (WM_USER+3)
  3729. /* animate control */
  3730. #define ANIMATE_CLASSA "SysAnimate32"
  3731. #if defined(__GNUC__)
  3732. # define ANIMATE_CLASSW (const WCHAR []){ 'S','y','s', \
  3733. 'A','n','i','m','a','t','e','3','2',0 }
  3734. #elif defined(_MSC_VER)
  3735. # define ANIMATE_CLASSW L"SysAnimate32"
  3736. #else
  3737. static const WCHAR ANIMATE_CLASSW[] = { 'S','y','s',
  3738. 'A','n','i','m','a','t','e','3','2',0 };
  3739. #endif
  3740. #define ANIMATE_CLASS WINELIB_NAME_AW(ANIMATE_CLASS)
  3741. #define ACS_CENTER 0x0001
  3742. #define ACS_TRANSPARENT 0x0002
  3743. #define ACS_AUTOPLAY 0x0004
  3744. #define ACS_TIMER 0x0008 /* no threads, just timers */
  3745. #define ACM_OPENA (WM_USER+100)
  3746. #define ACM_OPENW (WM_USER+103)
  3747. #define ACM_OPEN WINELIB_NAME_AW(ACM_OPEN)
  3748. #define ACM_PLAY (WM_USER+101)
  3749. #define ACM_STOP (WM_USER+102)
  3750. #define ACN_START 1
  3751. #define ACN_STOP 2
  3752. #define Animate_CreateA(hwndP,id,dwStyle,hInstance) \
  3753. CreateWindowA(ANIMATE_CLASSA,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL)
  3754. #define Animate_CreateW(hwndP,id,dwStyle,hInstance) \
  3755. CreateWindowW(ANIMATE_CLASSW,NULL,dwStyle,0,0,0,0,hwndP,(HMENU)(id),hInstance,NULL)
  3756. #define Animate_Create WINELIB_NAME_AW(Animate_Create)
  3757. #define Animate_OpenA(hwnd,szName) \
  3758. (BOOL)SNDMSGA(hwnd,ACM_OPENA,0,(LPARAM)(LPSTR)(szName))
  3759. #define Animate_OpenW(hwnd,szName) \
  3760. (BOOL)SNDMSGW(hwnd,ACM_OPENW,0,(LPARAM)(LPWSTR)(szName))
  3761. #define Animate_Open WINELIB_NAME_AW(Animate_Open)
  3762. #define Animate_OpenExA(hwnd,hInst,szName) \
  3763. (BOOL)SNDMSGA(hwnd,ACM_OPENA,(WPARAM)hInst,(LPARAM)(LPSTR)(szName))
  3764. #define Animate_OpenExW(hwnd,hInst,szName) \
  3765. (BOOL)SNDMSGW(hwnd,ACM_OPENW,(WPARAM)hInst,(LPARAM)(LPWSTR)(szName))
  3766. #define Animate_OpenEx WINELIB_NAME_AW(Animate_OpenEx)
  3767. #define Animate_Play(hwnd,from,to,rep) \
  3768. (BOOL)SNDMSGA(hwnd,ACM_PLAY,(WPARAM)(UINT)(rep),(LPARAM)MAKELONG(from,to))
  3769. #define Animate_Stop(hwnd) \
  3770. (BOOL)SNDMSGA(hwnd,ACM_STOP,0,0)
  3771. #define Animate_Close(hwnd) \
  3772. (BOOL)SNDMSGA(hwnd,ACM_OPENA,0,0)
  3773. #define Animate_Seek(hwnd,frame) \
  3774. (BOOL)SNDMSGA(hwnd,ACM_PLAY,1,(LPARAM)MAKELONG(frame,frame))
  3775. /**************************************************************************
  3776. * IP Address control
  3777. */
  3778. #define WC_IPADDRESSA "SysIPAddress32"
  3779. #if defined(__GNUC__)
  3780. # define WC_IPADDRESSW (const WCHAR []){ 'S','y','s', \
  3781. 'I','P','A','d','d','r','e','s','s','3','2',0 }
  3782. #elif defined(_MSC_VER)
  3783. # define WC_IPADDRESSW L"SysIPAddress32"
  3784. #else
  3785. static const WCHAR WC_IPADDRESSW[] = { 'S','y','s',
  3786. 'I','P','A','d','d','r','e','s','s','3','2',0 };
  3787. #endif
  3788. #define WC_IPADDRESS WINELIB_NAME_AW(WC_IPADDRESS)
  3789. #define IPM_CLEARADDRESS (WM_USER+100)
  3790. #define IPM_SETADDRESS (WM_USER+101)
  3791. #define IPM_GETADDRESS (WM_USER+102)
  3792. #define IPM_SETRANGE (WM_USER+103)
  3793. #define IPM_SETFOCUS (WM_USER+104)
  3794. #define IPM_ISBLANK (WM_USER+105)
  3795. #define IPN_FIRST (0U-860U)
  3796. #define IPN_LAST (0U-879U)
  3797. #define IPN_FIELDCHANGED (IPN_FIRST-0)
  3798. typedef struct tagNMIPADDRESS
  3799. {
  3800. NMHDR hdr;
  3801. INT iField;
  3802. INT iValue;
  3803. } NMIPADDRESS, *LPNMIPADDRESS;
  3804. #define MAKEIPRANGE(low,high) \
  3805. ((LPARAM)(WORD)(((BYTE)(high)<<8)+(BYTE)(low)))
  3806. #define MAKEIPADDRESS(b1,b2,b3,b4) \
  3807. ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<16)+((DWORD)(b3)<<8)+((DWORD)(b4))))
  3808. #define FIRST_IPADDRESS(x) (((x)>>24)&0xff)
  3809. #define SECOND_IPADDRESS(x) (((x)>>16)&0xff)
  3810. #define THIRD_IPADDRESS(x) (((x)>>8)&0xff)
  3811. #define FOURTH_IPADDRESS(x) ((x)&0xff)
  3812. /**************************************************************************
  3813. * Native Font control
  3814. */
  3815. #define WC_NATIVEFONTCTLA "NativeFontCtl"
  3816. #if defined(__GNUC__)
  3817. # define WC_NATIVEFONTCTLW (const WCHAR []){ 'N','a','t','i','v','e', \
  3818. 'F','o','n','t','C','t','l',0 }
  3819. #elif defined(_MSC_VER)
  3820. # define WC_NATIVEFONTCTLW L"NativeFontCtl"
  3821. #else
  3822. static const WCHAR WC_NATIVEFONTCTLW[] = { 'N','a','t','i','v','e',
  3823. 'F','o','n','t','C','t','l',0 };
  3824. #endif
  3825. #define WC_NATIVEFONTCTL WINELIB_NAME_AW(WC_NATIVEFONTCTL)
  3826. #define NFS_EDIT 0x0001
  3827. #define NFS_STATIC 0x0002
  3828. #define NFS_LISTCOMBO 0x0004
  3829. #define NFS_BUTTON 0x0008
  3830. #define NFS_ALL 0x0010
  3831. /**************************************************************************
  3832. * Month calendar control
  3833. *
  3834. */
  3835. #define MONTHCAL_CLASSA "SysMonthCal32"
  3836. #if defined(__GNUC__)
  3837. # define MONTHCAL_CLASSW (const WCHAR []){ 'S','y','s', \
  3838. 'M','o','n','t','h','C','a','l','3','2',0 }
  3839. #elif defined(_MSC_VER)
  3840. # define MONTHCAL_CLASSW L"SysMonthCal32"
  3841. #else
  3842. static const WCHAR MONTHCAL_CLASSW[] = { 'S','y','s',
  3843. 'M','o','n','t','h','C','a','l','3','2',0 };
  3844. #endif
  3845. #define MONTHCAL_CLASS WINELIB_NAME_AW(MONTHCAL_CLASS)
  3846. #define MCM_FIRST 0x1000
  3847. #define MCN_FIRST (0U-750U)
  3848. #define MCN_LAST (0U-759U)
  3849. #define MCM_GETCURSEL (MCM_FIRST + 1)
  3850. #define MCM_SETCURSEL (MCM_FIRST + 2)
  3851. #define MCM_GETMAXSELCOUNT (MCM_FIRST + 3)
  3852. #define MCM_SETMAXSELCOUNT (MCM_FIRST + 4)
  3853. #define MCM_GETSELRANGE (MCM_FIRST + 5)
  3854. #define MCM_SETSELRANGE (MCM_FIRST + 6)
  3855. #define MCM_GETMONTHRANGE (MCM_FIRST + 7)
  3856. #define MCM_SETDAYSTATE (MCM_FIRST + 8)
  3857. #define MCM_GETMINREQRECT (MCM_FIRST + 9)
  3858. #define MCM_SETCOLOR (MCM_FIRST + 10)
  3859. #define MCM_GETCOLOR (MCM_FIRST + 11)
  3860. #define MCM_SETTODAY (MCM_FIRST + 12)
  3861. #define MCM_GETTODAY (MCM_FIRST + 13)
  3862. #define MCM_HITTEST (MCM_FIRST + 14)
  3863. #define MCM_SETFIRSTDAYOFWEEK (MCM_FIRST + 15)
  3864. #define MCM_GETFIRSTDAYOFWEEK (MCM_FIRST + 16)
  3865. #define MCM_GETRANGE (MCM_FIRST + 17)
  3866. #define MCM_SETRANGE (MCM_FIRST + 18)
  3867. #define MCM_GETMONTHDELTA (MCM_FIRST + 19)
  3868. #define MCM_SETMONTHDELTA (MCM_FIRST + 20)
  3869. #define MCM_GETMAXTODAYWIDTH (MCM_FIRST + 21)
  3870. #define MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
  3871. #define MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
  3872. /* Notifications */
  3873. #define MCN_SELCHANGE (MCN_FIRST + 1)
  3874. #define MCN_GETDAYSTATE (MCN_FIRST + 3)
  3875. #define MCN_SELECT (MCN_FIRST + 4)
  3876. #define MCSC_BACKGROUND 0
  3877. #define MCSC_TEXT 1
  3878. #define MCSC_TITLEBK 2
  3879. #define MCSC_TITLETEXT 3
  3880. #define MCSC_MONTHBK 4
  3881. #define MCSC_TRAILINGTEXT 5
  3882. #define MCS_DAYSTATE 0x0001
  3883. #define MCS_MULTISELECT 0x0002
  3884. #define MCS_WEEKNUMBERS 0x0004
  3885. #define MCS_NOTODAY 0x0010
  3886. #define MCS_NOTODAYCIRCLE 0x0008
  3887. #define MCHT_TITLE 0x00010000
  3888. #define MCHT_CALENDAR 0x00020000
  3889. #define MCHT_TODAYLINK 0x00030000
  3890. #define MCHT_NEXT 0x01000000
  3891. #define MCHT_PREV 0x02000000
  3892. #define MCHT_NOWHERE 0x00000000
  3893. #define MCHT_TITLEBK (MCHT_TITLE)
  3894. #define MCHT_TITLEMONTH (MCHT_TITLE | 0x0001)
  3895. #define MCHT_TITLEYEAR (MCHT_TITLE | 0x0002)
  3896. #define MCHT_TITLEBTNNEXT (MCHT_TITLE | MCHT_NEXT | 0x0003)
  3897. #define MCHT_TITLEBTNPREV (MCHT_TITLE | MCHT_PREV | 0x0003)
  3898. #define MCHT_CALENDARBK (MCHT_CALENDAR)
  3899. #define MCHT_CALENDARDATE (MCHT_CALENDAR | 0x0001)
  3900. #define MCHT_CALENDARDATENEXT (MCHT_CALENDARDATE | MCHT_NEXT)
  3901. #define MCHT_CALENDARDATEPREV (MCHT_CALENDARDATE | MCHT_PREV)
  3902. #define MCHT_CALENDARDAY (MCHT_CALENDAR | 0x0002)
  3903. #define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x0003)
  3904. #define GMR_VISIBLE 0
  3905. #define GMR_DAYSTATE 1
  3906. /* Month calendar's structures */
  3907. typedef struct {
  3908. UINT cbSize;
  3909. POINT pt;
  3910. UINT uHit;
  3911. SYSTEMTIME st;
  3912. } MCHITTESTINFO, *PMCHITTESTINFO;
  3913. typedef struct tagNMSELCHANGE
  3914. {
  3915. NMHDR nmhdr;
  3916. SYSTEMTIME stSelStart;
  3917. SYSTEMTIME stSelEnd;
  3918. } NMSELCHANGE, *LPNMSELCHANGE;
  3919. typedef NMSELCHANGE NMSELECT, *LPNMSELECT;
  3920. typedef DWORD MONTHDAYSTATE, *LPMONTHDAYSTATE;
  3921. typedef struct tagNMDAYSTATE
  3922. {
  3923. NMHDR nmhdr;
  3924. SYSTEMTIME stStart;
  3925. int cDayState;
  3926. LPMONTHDAYSTATE prgDayState;
  3927. } NMDAYSTATE, *LPNMDAYSTATE;
  3928. /* macros */
  3929. #define MonthCal_GetCurSel(hmc, pst) \
  3930. (BOOL)SNDMSGA(hmc, MCM_GETCURSEL, 0, (LPARAM)(pst))
  3931. #define MonthCal_SetCurSel(hmc, pst) \
  3932. (BOOL)SNDMSGA(hmc, MCM_SETCURSEL, 0, (LPARAM)(pst))
  3933. #define MonthCal_GetMaxSelCount(hmc) \
  3934. (DWORD)SNDMSGA(hmc, MCM_GETMAXSELCOUNT, 0, 0L)
  3935. #define MonthCal_SetMaxSelCount(hmc, n) \
  3936. (BOOL)SNDMSGA(hmc, MCM_SETMAXSELCOUNT, (WPARAM)(n), 0L)
  3937. #define MonthCal_GetSelRange(hmc, rgst) \
  3938. SNDMSGA(hmc, MCM_GETSELRANGE, 0, (LPARAM) (rgst))
  3939. #define MonthCal_SetSelRange(hmc, rgst) \
  3940. SNDMSGA(hmc, MCM_SETSELRANGE, 0, (LPARAM) (rgst))
  3941. #define MonthCal_GetMonthRange(hmc, gmr, rgst) \
  3942. (DWORD)SNDMSGA(hmc, MCM_GETMONTHRANGE, (WPARAM)(gmr), (LPARAM)(rgst))
  3943. #define MonthCal_SetDayState(hmc, cbds, rgds) \
  3944. SNDMSGA(hmc, MCM_SETDAYSTATE, (WPARAM)(cbds), (LPARAM)(rgds))
  3945. #define MonthCal_GetMinReqRect(hmc, prc) \
  3946. SNDMSGA(hmc, MCM_GETMINREQRECT, 0, (LPARAM)(prc))
  3947. #define MonthCal_SetColor(hmc, iColor, clr)\
  3948. SNDMSGA(hmc, MCM_SETCOLOR, iColor, clr)
  3949. #define MonthCal_GetColor(hmc, iColor) \
  3950. SNDMSGA(hmc, MCM_SETCOLOR, iColor, 0)
  3951. #define MonthCal_GetToday(hmc, pst)\
  3952. (BOOL)SNDMSGA(hmc, MCM_GETTODAY, 0, (LPARAM)pst)
  3953. #define MonthCal_SetToday(hmc, pst)\
  3954. SNDMSGA(hmc, MCM_SETTODAY, 0, (LPARAM)pst)
  3955. #define MonthCal_HitTest(hmc, pinfo) \
  3956. SNDMSGA(hmc, MCM_HITTEST, 0, (LPARAM)(PMCHITTESTINFO)pinfo)
  3957. #define MonthCal_SetFirstDayOfWeek(hmc, iDay) \
  3958. SNDMSGA(hmc, MCM_SETFIRSTDAYOFWEEK, 0, iDay)
  3959. #define MonthCal_GetFirstDayOfWeek(hmc) \
  3960. (DWORD)SNDMSGA(hmc, MCM_GETFIRSTDAYOFWEEK, 0, 0)
  3961. #define MonthCal_GetRange(hmc, rgst) \
  3962. (DWORD)SNDMSGA(hmc, MCM_GETRANGE, 0, (LPARAM)(rgst))
  3963. #define MonthCal_SetRange(hmc, gd, rgst) \
  3964. (BOOL)SNDMSGA(hmc, MCM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
  3965. #define MonthCal_GetMonthDelta(hmc) \
  3966. (int)SNDMSGA(hmc, MCM_GETMONTHDELTA, 0, 0)
  3967. #define MonthCal_SetMonthDelta(hmc, n) \
  3968. (int)SNDMSGA(hmc, MCM_SETMONTHDELTA, n, 0)
  3969. #define MonthCal_GetMaxTodayWidth(hmc) \
  3970. (DWORD)SNDMSGA(hmc, MCM_GETMAXTODAYWIDTH, 0, 0)
  3971. #define MonthCal_SetUnicodeFormat(hwnd, fUnicode) \
  3972. (BOOL)SNDMSGA((hwnd), MCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
  3973. #define MonthCal_GetUnicodeFormat(hwnd) \
  3974. (BOOL)SNDMSGA((hwnd), MCM_GETUNICODEFORMAT, 0, 0)
  3975. /**************************************************************************
  3976. * Date and time picker control
  3977. */
  3978. #define DATETIMEPICK_CLASSA "SysDateTimePick32"
  3979. #if defined(__GNUC__)
  3980. # define DATETIMEPICK_CLASSW (const WCHAR []){ 'S','y','s', \
  3981. 'D','a','t','e','T','i','m','e','P','i','c','k','3','2',0 }
  3982. #elif defined(_MSC_VER)
  3983. # define DATETIMEPICK_CLASSW L"SysDateTimePick32"
  3984. #else
  3985. static const WCHAR DATETIMEPICK_CLASSW[] = { 'S','y','s',
  3986. 'D','a','t','e','T','i','m','e','P','i','c','k','3','2',0 };
  3987. #endif
  3988. #define DATETIMEPICK_CLASS WINELIB_NAME_AW(DATETIMEPICK_CLASS)
  3989. #define DTM_FIRST 0x1000
  3990. #define DTN_FIRST (0U-760U)
  3991. #define DTN_LAST (0U-799U)
  3992. #define DTM_GETSYSTEMTIME (DTM_FIRST+1)
  3993. #define DTM_SETSYSTEMTIME (DTM_FIRST+2)
  3994. #define DTM_GETRANGE (DTM_FIRST+3)
  3995. #define DTM_SETRANGE (DTM_FIRST+4)
  3996. #define DTM_SETFORMATA (DTM_FIRST+5)
  3997. #define DTM_SETFORMATW (DTM_FIRST + 50)
  3998. #define DTM_SETFORMAT WINELIB_NAME_AW(DTM_SETFORMAT)
  3999. #define DTM_SETMCCOLOR (DTM_FIRST+6)
  4000. #define DTM_GETMCCOLOR (DTM_FIRST+7)
  4001. #define DTM_GETMONTHCAL (DTM_FIRST+8)
  4002. #define DTM_SETMCFONT (DTM_FIRST+9)
  4003. #define DTM_GETMCFONT (DTM_FIRST+10)
  4004. /* Datetime Notifications */
  4005. #define DTN_DATETIMECHANGE (DTN_FIRST + 1)
  4006. #define DTN_USERSTRINGA (DTN_FIRST + 2)
  4007. #define DTN_WMKEYDOWNA (DTN_FIRST + 3)
  4008. #define DTN_FORMATA (DTN_FIRST + 4)
  4009. #define DTN_FORMATQUERYA (DTN_FIRST + 5)
  4010. #define DTN_DROPDOWN (DTN_FIRST + 6)
  4011. #define DTN_CLOSEUP (DTN_FIRST + 7)
  4012. #define DTN_USERSTRINGW (DTN_FIRST + 15)
  4013. #define DTN_WMKEYDOWNW (DTN_FIRST + 16)
  4014. #define DTN_FORMATW (DTN_FIRST + 17)
  4015. #define DTN_FORMATQUERYW (DTN_FIRST + 18)
  4016. #define DTN_USERSTRING WINELIB_NAME_AW(DTN_USERSTRING)
  4017. #define DTN_WMKEYDOWN WINELIB_NAME_AW(DTN_WMKEYDOWN)
  4018. #define DTN_FORMAT WINELIB_NAME_AW(DTN_FORMAT)
  4019. #define DTN_FORMATQUERY WINELIB_NAME_AW(DTN_FORMATQUERY)
  4020. #define DTS_SHORTDATEFORMAT 0x0000
  4021. #define DTS_UPDOWN 0x0001
  4022. #define DTS_SHOWNONE 0x0002
  4023. #define DTS_LONGDATEFORMAT 0x0004
  4024. #define DTS_TIMEFORMAT 0x0009
  4025. #define DTS_APPCANPARSE 0x0010
  4026. #define DTS_RIGHTALIGN 0x0020
  4027. typedef struct tagNMDATETIMECHANGE
  4028. {
  4029. NMHDR nmhdr;
  4030. DWORD dwFlags;
  4031. SYSTEMTIME st;
  4032. } NMDATETIMECHANGE, *LPNMDATETIMECHANGE;
  4033. typedef struct tagNMDATETIMESTRINGA
  4034. {
  4035. NMHDR nmhdr;
  4036. LPCSTR pszUserString;
  4037. SYSTEMTIME st;
  4038. DWORD dwFlags;
  4039. } NMDATETIMESTRINGA, *LPNMDATETIMESTRINGA;
  4040. typedef struct tagNMDATETIMESTRINGW
  4041. {
  4042. NMHDR nmhdr;
  4043. LPCWSTR pszUserString;
  4044. SYSTEMTIME st;
  4045. DWORD dwFlags;
  4046. } NMDATETIMESTRINGW, *LPNMDATETIMESTRINGW;
  4047. DECL_WINELIB_TYPE_AW(NMDATETIMESTRING)
  4048. DECL_WINELIB_TYPE_AW(LPNMDATETIMESTRING)
  4049. typedef struct tagNMDATETIMEWMKEYDOWNA
  4050. {
  4051. NMHDR nmhdr;
  4052. int nVirtKey;
  4053. LPCSTR pszFormat;
  4054. SYSTEMTIME st;
  4055. } NMDATETIMEWMKEYDOWNA, *LPNMDATETIMEWMKEYDOWNA;
  4056. typedef struct tagNMDATETIMEWMKEYDOWNW
  4057. {
  4058. NMHDR nmhdr;
  4059. int nVirtKey;
  4060. LPCWSTR pszFormat;
  4061. SYSTEMTIME st;
  4062. } NMDATETIMEWMKEYDOWNW, *LPNMDATETIMEWMKEYDOWNW;
  4063. DECL_WINELIB_TYPE_AW(NMDATETIMEWMKEYDOWN)
  4064. DECL_WINELIB_TYPE_AW(LPNMDATETIMEWMKEYDOWN)
  4065. typedef struct tagNMDATETIMEFORMATA
  4066. {
  4067. NMHDR nmhdr;
  4068. LPCSTR pszFormat;
  4069. SYSTEMTIME st;
  4070. LPCSTR pszDisplay;
  4071. CHAR szDisplay[64];
  4072. } NMDATETIMEFORMATA, *LPNMDATETIMEFORMATA;
  4073. typedef struct tagNMDATETIMEFORMATW
  4074. {
  4075. NMHDR nmhdr;
  4076. LPCWSTR pszFormat;
  4077. SYSTEMTIME st;
  4078. LPCWSTR pszDisplay;
  4079. WCHAR szDisplay[64];
  4080. } NMDATETIMEFORMATW, *LPNMDATETIMEFORMATW;
  4081. DECL_WINELIB_TYPE_AW(NMDATETIMEFORMAT)
  4082. DECL_WINELIB_TYPE_AW(LPNMDATETIMEFORMAT)
  4083. typedef struct tagNMDATETIMEFORMATQUERYA
  4084. {
  4085. NMHDR nmhdr;
  4086. LPCSTR pszFormat;
  4087. SIZE szMax;
  4088. } NMDATETIMEFORMATQUERYA, *LPNMDATETIMEFORMATQUERYA;
  4089. typedef struct tagNMDATETIMEFORMATQUERYW
  4090. {
  4091. NMHDR nmhdr;
  4092. LPCWSTR pszFormat;
  4093. SIZE szMax;
  4094. } NMDATETIMEFORMATQUERYW, *LPNMDATETIMEFORMATQUERYW;
  4095. DECL_WINELIB_TYPE_AW(NMDATETIMEFORMATQUERY)
  4096. DECL_WINELIB_TYPE_AW(LPNMDATETIMEFORMATQUERY)
  4097. #define GDT_ERROR -1
  4098. #define GDT_VALID 0
  4099. #define GDT_NONE 1
  4100. #define GDTR_MIN 0x0001
  4101. #define GDTR_MAX 0x0002
  4102. #define DateTime_GetSystemtime(hdp, pst) \
  4103. (DWORD)SNDMSGA (hdp, DTM_GETSYSTEMTIME , 0, (LPARAM)(pst))
  4104. #define DateTime_SetSystemtime(hdp, gd, pst) \
  4105. (BOOL)SNDMSGA (hdp, DTM_SETSYSTEMTIME, (LPARAM)(gd), (LPARAM)(pst))
  4106. #define DateTime_GetRange(hdp, rgst) \
  4107. (DWORD)SNDMSGA (hdp, DTM_GETRANGE, 0, (LPARAM)(rgst))
  4108. #define DateTime_SetRange(hdp, gd, rgst) \
  4109. (BOOL)SNDMSGA (hdp, DTM_SETRANGE, (WPARAM)(gd), (LPARAM)(rgst))
  4110. #define DateTime_SetFormatA(hdp, sz) \
  4111. (BOOL)SNDMSGA (hdp, DTM_SETFORMATA, 0, (LPARAM)(sz))
  4112. #define DateTime_SetFormatW(hdp, sz) \
  4113. (BOOL)SNDMSGW (hdp, DTM_SETFORMATW, 0, (LPARAM)(sz))
  4114. #define DateTime_SetFormat WINELIB_NAME_AW(DateTime_SetFormat)
  4115. #define DateTime_GetMonthCalColor(hdp, iColor) \
  4116. SNDMSGA (hdp, DTM_GETMCCOLOR, iColor, 0)
  4117. #define DateTime_GetMonthCal(hdp) \
  4118. (HWND) SNDMSGA (hdp, DTM_GETMONTHCAL, 0, 0)
  4119. #define DateTime_SetMonthCalFont(hdp, hfont, fRedraw) \
  4120. SNDMSGA (hdp, DTM_SETMCFONT, (WPARAM)hfont, (LPARAM)fRedraw)
  4121. #define DateTime_GetMonthCalFont(hdp) \
  4122. SNDMSGA (hdp, DTM_GETMCFONT, 0, 0)
  4123. #define DA_LAST (0x7fffffff)
  4124. #define DPA_APPEND (0x7fffffff)
  4125. #define DPA_ERR (-1)
  4126. #define DSA_APPEND (0x7fffffff)
  4127. #define DSA_ERR (-1)
  4128. struct _DSA;
  4129. typedef struct _DSA *HDSA;
  4130. typedef INT (CALLBACK *PFNDSAENUMCALLBACK)(LPVOID, LPVOID);
  4131. HDSA WINAPI DSA_Create(INT, INT);
  4132. BOOL WINAPI DSA_Destroy(HDSA);
  4133. void WINAPI DSA_DestroyCallback(HDSA, PFNDSAENUMCALLBACK, LPVOID);
  4134. LPVOID WINAPI DSA_GetItemPtr(HDSA, INT);
  4135. INT WINAPI DSA_InsertItem(HDSA, INT, LPVOID);
  4136. #define DPAS_SORTED 0x0001
  4137. #define DPAS_INSERTBEFORE 0x0002
  4138. #define DPAS_INSERTAFTER 0x0004
  4139. struct _DPA;
  4140. typedef struct _DPA *HDPA;
  4141. typedef INT (CALLBACK *PFNDPAENUMCALLBACK)(LPVOID, LPVOID);
  4142. typedef INT (CALLBACK *PFNDPACOMPARE)(LPVOID, LPVOID, LPARAM);
  4143. HDPA WINAPI DPA_Create(INT);
  4144. BOOL WINAPI DPA_Destroy(HDPA);
  4145. LPVOID WINAPI DPA_DeletePtr(HDPA, INT);
  4146. BOOL WINAPI DPA_DeleteAllPtrs(HDPA);
  4147. BOOL WINAPI DPA_SetPtr(HDPA, INT, LPVOID);
  4148. LPVOID WINAPI DPA_GetPtr(HDPA, INT);
  4149. INT WINAPI DPA_InsertPtr(HDPA, INT, LPVOID);
  4150. BOOL WINAPI DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM);
  4151. void WINAPI DPA_EnumCallback(HDPA, PFNDPAENUMCALLBACK, LPVOID);
  4152. void WINAPI DPA_DestroyCallback(HDPA, PFNDPAENUMCALLBACK, LPVOID);
  4153. INT WINAPI DPA_Search(HDPA, LPVOID, INT, PFNDPACOMPARE, LPARAM, UINT);
  4154. BOOL WINAPI Str_SetPtrW (LPWSTR *, LPCWSTR);
  4155. /**************************************************************************
  4156. * SysLink control
  4157. */
  4158. #if defined(__GNUC__)
  4159. # define WC_LINK (const WCHAR []){ 'S','y','s','L','i','n','k',0 }
  4160. #elif defined(_MSC_VER)
  4161. # define WC_LINK L"SysLink"
  4162. #else
  4163. static const WCHAR WC_LINK[] = { 'S','y','s','L','i','n','k',0 };
  4164. #endif
  4165. /* SysLink messages */
  4166. #define LM_HITTEST (WM_USER + 768)
  4167. #define LM_GETIDEALHEIGHT (WM_USER + 769)
  4168. #define LM_SETITEM (WM_USER + 770)
  4169. #define LM_GETITEM (WM_USER + 771)
  4170. /* SysLink links flags */
  4171. #define LIF_ITEMINDEX 1
  4172. #define LIF_STATE 2
  4173. #define LIF_ITEMID 4
  4174. #define LIF_URL 8
  4175. /* SysLink links states */
  4176. #define LIS_FOCUSED 1
  4177. #define LIS_ENABLED 2
  4178. #define LIS_VISITED 4
  4179. /* SysLink misc. */
  4180. #define INVALID_LINK_INDEX (-1)
  4181. #define MAX_LINKID_TEXT 48
  4182. #define L_MAX_URL_LENGTH 2084
  4183. /* SysLink structures */
  4184. typedef struct tagLITEM
  4185. {
  4186. UINT mask;
  4187. int iLink;
  4188. UINT state;
  4189. UINT stateMask;
  4190. WCHAR szID[MAX_LINKID_TEXT];
  4191. WCHAR szUrl[L_MAX_URL_LENGTH];
  4192. } LITEM, *PLITEM;
  4193. typedef struct tagLHITTESTINFO
  4194. {
  4195. POINT pt;
  4196. LITEM item;
  4197. } LHITTESTINFO, *PLHITTESTINFO;
  4198. typedef struct tagNMLINK
  4199. {
  4200. NMHDR hdr;
  4201. LITEM item ;
  4202. } NMLINK, *PNMLINK;
  4203. #ifdef __cplusplus
  4204. }
  4205. #endif
  4206. #endif /* __WINE_COMMCTRL_H */