[Windows] Changing toolbar icons on the fly

Just starting out? Need help? Post your questions and find answers here.
User avatar
Michael Vogel
Addict
Addict
Posts: 2819
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

[Windows] Changing toolbar icons on the fly

Post by Michael Vogel »

I'd like to have a toolbar which may change during program execution.

I've done an example below (it does show blurry icons to keep the code small), when clicking the first button it toggle between a play and a pause icon.

This seem to work fine in most of the cases:
- after starting the program
- after resizing the icons (clicking the '+' or '-' icon)
- when changing the toolbar mode (click the 'option' icon to change the position of the button texts)

But it does not work anymore when 'resetting' the toolbar (clicking the 'alert' icon)

Does anyone see what I did wrong here?

Code: Select all

; Define

	EnableExplicit

	UsePNGImageDecoder()

	#DefaultIconSize=128

	Enumeration
		#Win
		#List
		#Toolbar
	EndEnumeration

	Enumeration
		#IconStart
		#IconStop; 	Hidden
		#IconPause
		#IconReset
		#IconPlus
		#IconMinus
		#IconCopy
		#IconAlert
		#IconOpts
		;
		#IconTemp1
		#IconTemp2
		;
	EndEnumeration

	Enumeration
		#ListAddress
		#ListState
		#ListOkCount
		#ListOkPercent
		#ListTimeNow
		#ListTimeMedian
		#ListTimeMax
		#ListTTL
		#ListSeriesUp
		#ListSeriesDown
		#ListLastChange
		#ListChangeTime
		#ListName
	EndEnumeration

	Structure WinType
		X.i
		Y.i
		Width.i
		Height.i
		Menu.i
		MenuHeight.i
		Icon.i
		IconHeight.i
		ListTop.i
		ListHeight.i
		;
		ToolbarMode.i
		ToolbarHandle.i
		ToolbarImages.i
		IconW.i
		IconH.i
		IconTextColor.i
		;
		TimeStamp.SystemTime
	EndStructure

	Global Win.WinType

	DataSection
		CompilerIf #PB_Compiler_Debugger

			ButtonBlack:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$1200007412000073,$781F66DE0174,$CB38544144490303,$FE10715A4FC9534D,$41EB457FA4D2F515,$1549ADC60AA97B41,$2A5C3704170140DC,$4C5F64141793E0B8,$83D26A5C5136B011,$AE7ADAB1AA5E0F6D,$DDE0DFE31A9EDAB7
			Data.q $87A68AF33A6FDB03,$C37BEFBE66F332F,$5060C1601020586F,$8C22448B2FEFDF82,$84A10413228A26A,$F3DCE23D46B1FB94,$8850A1642090F789,$73BD79F13CACACAD,$FF0F0F1F675B5BDB,$8711EA354E50427C,$D892FD8A2E2FF7B8,$D3EB8913263674E9,$E7170E76F8B86393,$4F4F14ABECFDF067,$F9C88B5C4C95204E
			Data.q $45B30E1C291A44DF,$F9F7762C5AD5041,$93BFB3377760E10F,$EEEFDE16EDEC1FCE,$3A74FDF9DBD2F614,$B3F8776B6B37BD43,$C3848B296D41A454,$BCDC2092F1ED1C32,$4A933468B580D8DB,$37CCF8E295336024,$F193C9326DFC5237,$4B9C710CA1434438,$62C584A4D0690DC2,$8A25CA6DBB36631,$C079BB75EB2B976E
			Data.q $103879FBF21E5EB,$1E3DFB8F9F4108C0,$5D98A2CBE65E59EE,$56924FB766C0B971,$B19F62FD6AD581DA,$1C173CDCC7391015,$A02585100414EE0E,$9F02C2E2C070E4B8,$B373A7A7AFE59D9F,$96963D6AC2615B36,$95E0E0E0D9BB76E8,$1B1F9CD98B066CD9,$989C9871F1D6E51D,$6488C29849C9A980,$6E119191831B1F18
			Data.q $8686058B16F29932,$78F319575757BF4C,$6F5EA7F7B7A7AC3C,$83EBEC6F21837AE0,$34001818187EFEFE,$60FD7D7DE6020186,$C8C18379B9011A30,$B18F9F3E5FFAF57B,$A691DD3AB4CA3468,$D6EB95D5D5D0BDBD,$F5D5AE3AB56B96A,$AEF540FB01FE7AE8,$EF6B99D9D1DE6EEE,$ED247747AE828E8,$686E648E19D7D7D6
			Data.q $D6DADB3AB536846C,$8E1A35A8351AD5C6,$E0F63948D769A0A6,$B9A9B67EC72B6B55,$9C78F143C3C32C19,$996F5EBC4A28FC31,$2199B04C8AFEBEAA,$92F9796F0B4B7342,$4322013536342453,$C4B8348AE1A1BEB1,$B7F8E37D29498652,$6B6A2FB795E42BC8,$A7572A954AB2CD00,$A732950894EBE652,$142A542D6D4D5AC4
			Data.q $7A50770692E476B7,$33333317688F447F,$72F2D3E5F5554572,$812D5D5141CB90A8,$497E7EAAAB5867F2,$268A16E1E692E21C,$B2DC3244E2BA28B2,$83F5555141FCDF11,$D948BC57A8D53940,$91C132512F1635C3,$244B14A952CA304A,$F51AA72812F9D212,$D7F69B5FDD079C8A,$D27394CA3E,$6042AE444E454900,$82

			ButtonRed:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$2E0000232E000073,$763FA5780123,$CB38544144494203,$87145714685F934D,$241F0490C6BACCCF,$4562D3057118FA31,$62AB8288A2582565,$2BAE884C825D6830,$D993766CECD06AB5,$A1E6A289B26CCD9,$294943EA287DB4A5
			Data.q $552287DA16A9487D,$963129A136EB698A,$B6EA1FE934C16D16,$29ABBBFA73999DDD,$9EEF9CF7B9707C3E,$3B0A4DB6B2973973,$1C1AD07F7F5CA59B,$1C8B2D3261E1EEA4,$29533742449DD4D3,$A0ACB3907EFD8B3A,$40F27FF7902ACD8A,$34C8688687A7A326,$163F7ABE76746F6B,$912E7266733B9F1B,$EA79BA3E244D9C98
			Data.q $89052EA244F96BD4,$D2CB64950517B58A,$CB68F47DBD3CF953,$C48A8D12536DB6FC,$88A6988B4FA72262,$F8F10B20B85C88E3,$2D170A72F186BBF4,$C378D87DD941C84A,$CEC89EEB75C5C230,$41E0EF252246E29D,$BDF2EAEE7C3A3B97,$F924BBBBB75D2793,$D1A277C5EDED78BC,$1DB212EE442E3496,$3534CF56F6F6CF47
			Data.q $6D76B78B57AB277D,$6E66EF77845A5B89,$9830C5847239636B,$2492F1F8EF131D8F,$7739C675B5A8F293,$95CF500C1C1EC6AE,$83062AE91235742B,$BCC7575BB2F5D452,$763BCCCDE6F30D66,$43A1D11523D9EF08,$C3E65186FB28D1CC,$A972AE2448BDE587,$E0FA142CFA45E2E7,$1122DCD3417F220F,$DCDC3547D9ABAB97
			Data.q $BC2EDF6F0B0E1C2C,$F77BFB0891FB176B,$3ADAD17FEEDEDCBA,$6F25E14A23973E7E,$888F2442FC4FD7D5,$5D5FFAC2FE0879BC,$4850A22A56B6B717,$BC45B2DE106C378,$485ADD6C2C253D87,$686D3F25E0109326,$448021671203FBB8,$440FF013C1DF831E,$FC5CBE5BC4CB65E5,$6A693D1B1AF10686,$4D3A660B1B8D89E2
			Data.q $D8D0A16344BA5E64,$E887DC2D0A6168F7,$F3F802D133F3F047,$6AF5D16806FF8CA9,$7B0FA6D378FFC6A,$B7DD1A51D1E94703,$F2B4D3DD046BE3AF,$7922A7D993208224,$C20073C6431ED008,$FDFEFAF25555AFF2,$B019235265F2FA46,$155F158AD8E96B2C,$3810F74BD7577C10,$A2D000780CC1A605,$A93E48DE12B4D03C
			Data.q $D80D55F5F7F42FAF,$F19A8C8618B28076,$555E7060F185FC78,$79A68DFB804A8132,$C27EF634F5893005,$F62C5CB7F060ADD9,$B4CD490656C9CA92,$BC4E279E35196965,$12AAE7CEF1B1B578,$FDE0A4AB7C0B6950,$5588C9501CBF2B95,$D0D84CFC5E519539,$D6DC302B2CE3F56D,$ADAED7CDCD9BCAF6,$FAFD6B783AFB755A
			Data.q $44B671440E0723EB,$49CF8DFF9F6254C5,$985271E0CB4BE802,$AB4BC5EA1191DEB2,$679255967073DAB5,$65DEF1C800FF8AC9,$2E42E77A,$826042AE444E4549

			ButtonYellow:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$1200007412000073,$781F66DE0174,$CB38544144497003,$C71465536FEF933D,$D9403FC486F6DD0F,$146262486C76B60F,$F0E318C4CC3042E2,$10C4510583179447,$FBDBDB776D618220,$D743A01D18EDB73C,$90536C1D9C063308
			Data.q $1AB1B60D8115692C,$30E706B75B9DB5DA,$D30C92DAE85181AE,$4F8BE73A79E1CF5F,$F7179EFDF39EF7EE,$210294A01294039E,$E1D885894B566C14,$CAAC11A3060EDEB0,$44D42C60C18122E1,$FFF644645784784F,$5D81B6498D154AB0,$3C307FDAE0333FD5,$81F353AD83E7B92C,$75C07B934DF0A9D6,$CAEF08F09E8A0E0
			Data.q $BA1DB32468A16581,$E74DF6FA896EF63A,$938661768D981DA3,$A7A3E60CFAE2EF9E,$E9F1D5DD3FDBEA30,$2AAB010DFFA5E116,$EEC5FD3856E49897,$C773BFD2D364D4BA,$DCD08E3F4D633931,$2E4866A4179A88E3,$3531DAE64FD34D39,$BB649AF70CE96BB9,$18951AEC428316C8,$1C8A5916DC19DF56,$73EA6A7481D0C5C1
			Data.q $665FAC2A599B854C,$A5F7062E10E708EA,$FD12A221A8766785,$E2DCD0456D426A,$C63EF0326F71B397,$844B134089331BC7,$D89C9663E864B376,$623E844C1ED0C983,$7160EC08962EE089,$9C7B1DB82A4CF6FF,$8B7D0076A5E89F8D,$F5FD273F0D5CD70A,$DFB7E365AFEFD8F9,$17077C6E36DF7164,$7DC62EFFDC61EFFD
			Data.q $C1BF6E8F62DE736F,$D3D83BC2B357DE62,$6649300368D9B970,$875DE8BFD5B0BD18,$B22F6362E7CF230B,$53857DE87C46D8D8,$C612F389B6362057,$7173AB8616C0BD6E,$1648B40FABEB1DEE,$BECDB9FAE0524900,$B973E0E8B0D637FB,$F9CB861714B37FB,$77880B6B2307C0AB,$ED73FE0D6377BF51,$BDD43672A1BDDCD9
			Data.q $8E9060BFF128DC79,$597759FEFAA9EF41,$9CA7A7FB32A0667E,$14A57BBB196BF5FD,$AEE672EF14ADFEFF,$BB8EECE52FECE194,$15DD6765572F8582,$E4C1BF6B6AFFEF9,$4EE7741387693300,$4CEABEF1C52F9DF,$71FE2D27E26CB5FB,$826727F12F26CB51,$5F32D7DE5A8FD0EB,$A49E0542FF8CBAEF,$5255500F84CC3B4D
			Data.q $FD97B1F7494ACB24,$7A4D5DF438B5EEDE,$AD8EB756F0E9CE4,$5E1D59F0D8EBDFA3,$5D12A1FDED26B6FF,$C591BE1917E8D8E,$FA62056A1314B154,$6FD5D8DAD1CF436C,$D674F19F5CE3D0AA,$9B59C79C9ACE3D66,$7AB99F5CEEED7373,$B784C6D5B7CF0ABA,$2ACA2655E5D9E190,$6D7C368748A014BE,$8F178556DBDA34DE
			Data.q $A0AE8E6A89D2F16B,$4784F793B12ADAFB,$84A2E2CAB1190B78,$8996553E50D14420,$FD7861C0FC3E1886,$94D08111BAC697EC,$86F97784784F44D7,$A7CD272B021235C4,$C80736A1A26FF116,$8B4202D6964C1DB4,$B22CA72B3DC7A15A,$EC87E43F8191014F,$454900000000B4AF,$826042AE444E

			ButtonWhite:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$1200007412000073,$781F66DE0174,$CB3854414449BE02,$3D14515A4ECB534D,$702FC4BF49A4E8A,$AA3ACEDA76A385FE,$1A86526A0A22351,$588D035330D8D81D,$723017228282AE5A,$8D87EF2E140808C1,$9EECEBC074DAA4DA
			Data.q $B5AD7ECAC1860375,$13264CCD9EFBB9CF,$1D5D5D5B23468C03,$D91F3333665E5E5F,$723E003A721CDCDC,$5E22F740EE0381A8,$E1045C5C5D195959,$F7145510F8E1DDB5,$350E47C0052E5CCF,$13477D61341DC070,$F4D9B2654D6E6E6F,$B3D3CFE025FF3D3,$6B6B736D4620D13C,$8371B745A0685C0A,$5AB564CB162CC0C1
			Data.q $668D1A9BF8F0F7FB,$3D77779B766CD1AB,$787AD1BD7ADDC440,$B56ACFF6AD6AA47C,$A8C1B863B423424E,$9905678B162AF6E8,$AD53AB56AB72A54A,$5CEA1A6BC442E75E,$BF779AB52A58A908,$8C9A31A1678F1E28,$DB366CCB3B3B363A,$176D557942A572FB,$CA979952C5E258A,$50BCC42C42584854,$552A576D5E5CF22C
			Data.q $F76D36AE18779A12,$4C997A142D53B70F,$BCF9E241E5CB93B6,$CB9F8253405AAA4A,$9D32674F2818B9E7,$8710E92493D8A142,$22A9C9E9C8188333,$4E9B7BAA54C94406,$ACD343164CE94483,$89E69B7B7433A716,$EB8BE7CFBC8BB264,$A3A48F44C3181617,$DDD7D7D7E4993268,$9520494482412244,$F06E6E6FE4622CD2
			Data.q $B638F8F8F705DFD,$F6F6F6CF3F3F3068,$D9797977AC58B1EC,$622E14515CA34689,$757723E0970C4990,$FEEE03A44891E515,$D9EBD7A65A1DBEFE,$17483060DBFAFAFA,$142879941CB6C117,$2C08E123CC3870A2,$382443921E614385,$8DA65965B408103C,$83C7B717A378D8D,$AEEEEEF8D2D2D2DD,$12DBD7AF273F3812
			Data.q $9FF33F3F7E6747DF,$3EA77DCFCFBF5871,$8DC480D12D3C78F2,$F0C60D0C76846815,$FB0E1C26D6D6D7C6,$25B7724921E3D7BD,$81615D492473BBB7,$EAFA5EBC4FB408E,$4FFA0D68D0B83DC7,$76765F1328BFA479,$E8DF5CB901C1E764,$24E9D0E059A5CBBB,$3CA7B4478BE9C0D4,$351B5716DBC1A658,$E7DB16AD5B4D3F9B
			Data.q $4F366CDF0020EDED,$26A1C6D97DCC36A3,$61DEFC04E1A6C3A,$1FFCEBC3381A872,$1FE608D257987C45,$444E454900000000,$826042AE

			SymbolStart:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$B0000130B000073,$189C9A000113,$CB38544144491801,$3304A06068686863,$DD307AFAFA80D550,$5C927CC8CC8D8D8,$681A609595954D20,$A70A1067C6881310,$6D85A5A5A18EAEAE,$E50CCD40AEB5DAED,$865C6C404360E5E5
			Data.q $CF5FAFD7E9803360,$45A2D164797CBE5F,$3433575754D72056,$9BF38616F5613535,$FD7F7FBFDF199B9B,$ACDAED76BEFC043F,$309494974A271389,$D5821BA032D6D6D4,$EFF7FEDD3E9F4F80,$F7E5360040BF9FDF,$6F696A9D4EA777EF,$A00BA092B906E76F,$A86FCFE7F3FDFC06,$674E7D7EBF5EFE4B,$D788C15D01F2767
			Data.q $1AA0D70BC8018600,$D9ECC360F0783FFF,$17B094B4B4A75B3,$AF881400BA03CE4,$3F3ADD6EBEB8AE8,$6181B4AE24050269,$3B9DCEDB2B6B6B40,$2B640383A3A3AA3,$468A89199A8119C5,$4C75180C320484E4,$73DD3293F5245284,$AA3947B9FE120023,$454900000000B3DD,$826042AE444E

			SymbolPause:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$B0000130B000073,$189C9A000113,$CB38544144491201,$D41450836ACB53BD,$DAEE943501F36D0,$6EA58FDF44FD0211,$745DA75D5BF1F145,$39D268F82B6B5C25,$61725A1570924141,$828F1E3B99CE4660,$81ABFC205FC29A69
			Data.q $51E99C7B17031861,$11DA69A05404E5CD,$44B2CB0264F54FC4,$17B6DB47801FF7DF,$E8099349E79ED204,$B6D1F55557DE1416,$AF1C714F249277ED,$E71C757F3CF2BFC1,$B6E02AAAAA20678E,$CB2C9C079F34D355,$78A28BC4CA9A69D6,$13F3AEBA9775D77,$FCD1ECF43018240C,$80C1D830E21B148C,$A6C00640E0C4E09F
			Data.q $75D5583300CF304F,$F400940AF438F6CD,$21DC960CC3B63187,$504B3BAEBA9033F6,$DC80CEE0251BE596,$B45147286185B3E9,$412FE0B700DC345,$62394514917B3C81,$A658CAB59EB1A458,$AE0993D63E786105,$87C20DFE02FE37FE,$635B23D5,$826042AE444E4549

			SymbolReset:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$B0000130B000073,$189C9A000113,$CB3854414449D201,$7E1461824B3B53A5,$69368820E6A6D4D,$7F407EA6A1A229AB,$9B77EF149D26ADA1,$25242BBC441D2484,$2122936420E638B9,$25D06B037829B826,$810AF33F11E74BC9
			Data.q $CE79CE1DF7CE1C2F,$B03060CCBCF79E73,$DE47EBD7A0216C75,$7FFFB8F3C9F23468,$1D3A74370A992001,$25741A7E0C952A53,$428F89932609700,$9712244DBD9B3648,$16C88C10B8A7CFF4,$3193264DD18A4D18,$432FEBD7AA25CB97,$32952A4AEA54A93A,$AB533972E4C54A95,$2EA3C063841E6CD5,$B5EBD7BAF264C99B
			Data.q $D6AD5A7FF7EFDC50,$6F458B15F050A15B,$31DDCE9D3B969D3A,$61A346AE88C809C3,$A27C18307B63870E,$3B9C307BE9BE4098,$18E040816B76EDD,$76ECF401193C09C2,$EA32467E5CB94EFB,$E3C79D8B162DB3A9,$BB78877F3E7C8BF1,$991A02CD9B377EDD,$D5AACD1931222337,$BED132412ECD196A,$7CD9B37893244891
			Data.q $A202C18B0E1C3C45,$8F3842620F215FCF,$61E271EE824FB3C7,$2850B30291A346CC,$BF225D2C10063074,$9F3E87BD7AF62FDF,$C183049C891228EF,$A74EF742672E5CD3,$7023338458B161F3,$D7A0B6D9B369A06,$7A3468AF99BA1C97,$69C44FE2850A6,$F74A952C2AD5AB7D,$C91F56AD562D5AB5,$63264C87952A553F
			Data.q $E2BD31E822DDBB71,$19CF0CCC1009AB0B,$8B0BED718A2BA198,$5E55CAD8CD21E2B4,$7AF2177502FF39F7,$78D543CE,$826042AE444E4549

			SymbolStop:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$B0000130B000073,$189C9A000113,$CB3854414449AF00,$451020C30ACB93BD,$DD455DFD086DBECD,$764268417E860FEB,$C9910182E769A42E,$C67733081C0D0C03,$A5C41A88C630A879,$AE41B37FEBD6B409,$652C52940802BE1
			Data.q $25BEF7856B5815B3,$8A700ADDBE1682BA,$138C63E84216EE73,$56CD07C1B04C4EF1,$F8081FD3894A4682,$83CEB341F06C1F16,$B3140F12774480AD,$157B7C1B02C49F10,$C61699185BC82754,$4E6028BE21A42D53,$D7CC43476C330483,$5E35C3BA0B3DB588,$E35FDFF2AFAA9172,$6F1972BEDAA9020F,$4E4549000000008F
			Data.q $826042AE44

			SymbolPlus:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$B0000130B000073,$189C9A000113,$CB38544144493401,$F5C7406068686863,$991B1B1BA60F5F5,$415631D0C5919988,$A5C6305ADADA8698,$BDBDBD0D3001A719,$805740A27D7D7DC2,$EAEA80D58419B0C5,$FAFE28A65329866A
			Data.q $2FDFBFDFEFCDEBF5,$2412B2B2B0C0B058,$9B40E99000D388C7,$9A61A9A9AE7E4118,$B158287FDEA67339,$5353155555638562,$504BB20D480B1353,$B8A9B200C4540C9C,$FF0A49A4D26198B8,$42C2C2E302E800A0,$5D5D417563083CB0,$2D97D473399CC31D,$1DF342E170BD665B,$C0E0705CC2C4763B,$B9B920E621A06C81
			Data.q $4B4B417561AAE773,$27FEEF5FAFD7F30B,$96A800F6FB7DBE00,$66E6E680DC086615,$E7A2C1DCBE5F2FE6,$30C7DC96807321F,$D032B67B3D985E60,$10BD03182F406699,$17A01C85E8003309,$12AA6F405672802C,$5C31102F88A881B,$4D00A4848E234514,$909820302E801F48,$D9A09996A9949AA8,$FA350006765F0999
			Data.q $3A5AAEC298E8,$42AE444E45490000,$8260

			SymbolMinus:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$B0000130B000073,$189C9A000113,$CB3854414449CD00,$861040820E3B93E5,$19581F087A06F167,$173796414E463CF,$17898D0D433A4A6A,$C93FEAB8C616E4A1,$BE4DD3B0A0489662,$2966CC87F37C990C,$3880A1FA06FA1249
			Data.q $1026CC0B534D298E,$E479E786BA02F6EC,$925D3398EC28EEBA,$75D7D8A28A808208,$E89A3D40755554ED,$3BCCF2EC767039E,$E5EDB6D494A4D7F8,$3319E5D99CE07139,$BB9C2534D366E2C0,$BD03CD2815CAEA52,$B7AB00E939C37F1B,$9E79B2CB288A28C4,$3601B02B04B06BE7,$B83BB059C36AEAD8,$D851FDF7C90C30C4
			Data.q $A026235719225A19,$9302F0B7F3FC6B8F,$5E35B16415BA71,$AE444E4549000000,$826042

			SymbolAlert:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$B0000130B000073,$189C9A000113,$CB3854414449B301,$7D1450C24F3D52A5,$1C6AE884306131AD,$15FD1C27F80FF274,$BE56050A184A2E2E,$E31A590DC4636007,$48560751831A1848,$4B44C0CA04DA48F8,$312BE5A7D21EF169
			Data.q $DEE7B9DF779B92FA,$FF609122597B7A7B,$64C9671E3C609DB1,$ABF607C1845F2052,$924CA3468B325E02,$56C8ABB607C195A4,$C1D3C58B15246E32,$A54A5F0E1C3CF060,$AAD9296D8A3019D2,$E4C993C900B2CB28,$C9D4D34C8F9F3E75,$4F02AF6C444C237F,$B8D1A359870E18BA,$366CA1F3E7C9D25D,$88779B3669D7201B
			Data.q $62C426AFE157E381,$3366CD1D4A952131,$E885CB97335D75CD,$99464A4A671C701D,$AD610A80F348264C,$56B0891220FDD780,$AF56AD53BD2D25AB,$64C537F25CA952A,$5486015BE2AE5C07,$21D1D4DDF18E1428,$9D3A75ABD7AF6E05,$E7131ACB2CC0F847,$555DDE014FE81BC4,$6E16162C5A747BD5,$CE231FB1B20DB6DB
			Data.q $9984D02057E15703,$794C89B2352AEBAE,$87D3A74C180694F6,$E7CB80E061C0428,$595F7EFD590880BC,$FD7AF53728A28EFA,$209F78E063975C9A,$779CC2D1B6C029AE,$E9D4EF69A69ADDBB,$FC9B40ED368C30C3,$17CB972A7B14604F,$BEBE6E02FED6A97C,$E6FE32BADFA30890,$A16C635CD9CFEDAB,$BEC262F3186D55C8
			Data.q $B7351017D93FA45,$8BA9FAB3B4,$6042AE444E454900,$82

			SymbolOpts:
			Data.q $A1A0A0D474E5089,$524448490D000000,$1000000010000000,$FFF31F0000000608,$5948700900000061,$B0000130B000073,$189C9A000113,$CB3854414449B101,$DD1040C26ADB5385,$F5BEB4FD28493E24,$208DA1AB5F6B7DA5,$150A41F6F0188D1A,$6FD0A56D58A318C1,$DA25E34158D46C48,$64303524BC5648CE,$44B3999CF6767676
			Data.q $649A74E967E26596,$EF283F418C161932,$ECED4A953AE1D0EC,$FE067C160DBF1CBF,$30F9F3E7C0A142A1,$56722D399F6F39AC,$288966CD9224925D,$A870E1D78C30C48A,$68830A28A271E3C7,$EA412244F5601102,$A952A3565960BAF5,$79DD75DB4B972EDC,$B86F468D1FBD5AB5,$878500A8F2883987,$837C06FEA9A69BB7
			Data.q $F648A5CC1CC340C1,$72E5249932779090,$C2C58BBADDBB66F9,$8DFF8226063D75D2,$65403980F6AD5AB1,$E2CD06E4355D8BDF,$E0FD5AB57B71E3C7,$4102082223468D6D,$7AF5EB6319ED34D3,$4E9E3972E7693D0E,$4F93264D5C0B0E7,$8D14FAAAAB260ECE,$3A6CC0AF17816946,$E54A6BC58B157E9D,$E10456AD5B060288
			Data.q $6CD9A10A02638E3A,$93792BB76E8528C6,$2F8C179073B0A238,$8CF4089A82BE2804,$3C4DF61F63C4A952,$91D3A74C1B0B2318,$CE80EEE8C3EEDB6D,$8847BE3038D9B36C,$42A22E053D7AF47D,$4386882E9512173B,$18BDF7381DE8703A,$71C553293F6D27EB,$E718878C3430E520,$D79114F94A2F641D,$973339E0298FCBED
			Data.q $A5507DD941FF39E,$49000000000B78F9,$826042AE444E45

		CompilerElse

			ButtonBlack:
			IncludeBinary "Data\Button\Black.png"
			ButtonRed:
			IncludeBinary "Data\Button\Red.png"
			ButtonOrange:
			IncludeBinary "Data\Button\Orange.png"
			ButtonYellow:
			IncludeBinary "Data\Button\Yellow.png"
			ButtonGreen:
			IncludeBinary "Data\Button\Green.png"
			ButtonBlue:
			IncludeBinary "Data\Button\Blue.png"
			ButtonWhite:
			IncludeBinary "Data\Button\White.png"

			SymbolStart:
			IncludeBinary "Data\Symbol\01.png"
			SymbolPause:
			IncludeBinary "Data\Symbol\02.png"
			SymbolReset:
			IncludeBinary "Data\Symbol\03a.png"
			SymbolStop:
			IncludeBinary "Data\Symbol\04.png"
			SymbolPlus:
			IncludeBinary "Data\Symbol\05.png"
			SymbolMinus:
			IncludeBinary "Data\Symbol\06.png"
			SymbolAlert:
			IncludeBinary "Data\Symbol\07.png"
			SymbolOpts:
			IncludeBinary "Data\Symbol\08.png"

		CompilerEndIf
	EndDataSection


	#GrayGreen=	$8CBA73
	#GrayRed=	$7373BA

	Procedure.s ExactTime()
		GetSystemTime_(@Win\TimeStamp)
		ProcedureReturn RSet(Str(Win\TimeStamp\wDay),2,"0")+"."+RSet(Str(Win\TimeStamp\wMonth),2,"0")+"."+Str(Win\TimeStamp\wYear)+" "+RSet(Str(Win\TimeStamp\wHour),2,"0")+":"+RSet(Str(Win\TimeStamp\wMinute),2,"0")+":"+RSet(Str(Win\TimeStamp\wSecond),2,"0")+"."+RSet(Str(Win\TimeStamp\wMilliseconds),3,"0")
	EndProcedure

; EndDefine

Procedure ResizeGadgets()

	With Win
		If WindowHeight(#Win)=\Width And WindowWidth(#Win)=\Height
			Debug "AHA?"
		EndIf

		\Width=	WindowWidth(#Win)
		\Height=	WindowHeight(#Win)
		\ListHeight=\Height-\ListTop

		ResizeGadget(#List,0,\ListTop,\Width,\ListHeight)

	EndWith


EndProcedure
Macro IconAddress(id)

	?icon#id

EndMacro
Macro IconSize(id,nid)

	IconAddress(nid)-IconAddress(id)

EndMacro
Procedure ColorizeIcon(x,y,s,d)

	ProcedureReturn AlphaBlend((s&$FF000000)|Win\IconTextColor,d)

EndProcedure

Procedure GenerateIcon(icon,*button,*symbol,color=#White)

	Protected x

	With Win

		\IconTextColor=color

		If \IconH=\IconW
			CatchImage(icon,*button)
			CatchImage(#IconTemp1,*symbol)

			StartDrawing(ImageOutput(icon))
			If color<>#White
				DrawingMode(#PB_2DDrawing_CustomFilter)
				CustomFilterCallback(@ColorizeIcon())
			EndIf
			DrawAlphaImage(ImageID(#IconTemp1),0,0)
			StopDrawing()
			FreeImage(#IconTemp1)

			If \IconH<>#DefaultIconSize
				ResizeImage(icon,\IconW,\IconH)
			EndIf

		Else
			CreateImage(icon,\IconW,\IconH,32,#PB_Image_Transparent)
			CatchImage(#IconTemp1,*button)
			CatchImage(#IconTemp2,*symbol)
			ResizeImage(#IconTemp1,\IconH,\IconH)
			ResizeImage(#IconTemp2,\IconH,\IconH)

			x=(\IconW-\IconH)/2
			StartDrawing(ImageOutput(icon))
			DrawAlphaImage(ImageID(#IconTemp1),x,0)
			If color<>#White
				DrawingMode(#PB_2DDrawing_CustomFilter)
				CustomFilterCallback(@ColorizeIcon())
			EndIf
			DrawAlphaImage(ImageID(#IconTemp2),x,0)
			StopDrawing()
			FreeImage(#IconTemp1)
			FreeImage(#IconTemp2)

		EndIf

	EndWith

EndProcedure
Procedure InitToolbar()

	Protected image.TBADDBITMAP
	Protected i,flag

	With Win

		GenerateIcon(#IconStart,	?ButtonBlack,	?SymbolStart)
		GenerateIcon(#IconStop,	?ButtonRed,	?SymbolStop)
		GenerateIcon(#IconPause,	?ButtonYellow,	?SymbolPause)
		GenerateIcon(#IconReset,	?ButtonBlack,	?SymbolReset)
		GenerateIcon(#IconPlus,	?ButtonWhite,	?SymbolPlus,	#GrayGreen)
		GenerateIcon(#IconMinus,	?ButtonWhite,	?SymbolMinus,	#GrayRed)
		GenerateIcon(#IconAlert,	?ButtonBlack,	?SymbolAlert,	#Yellow)
		GenerateIcon(#IconOpts,	?ButtonWhite,	?SymbolOpts,	#Gray)

		flag=#PB_ToolBar_Large | (#PB_ToolBar_InlineText*Bool(\ToolbarMode=2)) | (#PB_ToolBar_Text*Bool(\ToolbarMode))
		If IsToolBar(#Toolbar)
			FreeToolBar(#Toolbar)
		EndIf
		\ToolbarHandle=CreateToolBar(#Toolbar,WindowID(#Win),flag)

		CompilerIf 1	; Change icon size and symbols
			\ToolbarImages=SendMessage_(\ToolBarHandle, #TB_GETIMAGELIST,0,0)
			ImageList_SetIconSize_(\ToolbarImages, \IconW,\IconH);
			SendMessage_(\ToolbarHandle, #TB_SETBUTTONSIZE,0,\IconW|\IconH<<16)
			SendMessage_(\ToolbarHandle, #TB_SETIMAGELIST,0,\ToolBarImages)
			SendMessage_(\ToolbarHandle, #TB_AUTOSIZE,0,0)
			;image\Hinst=0
			;image\nID=ImageID(#IconStop)
			;SendMessage_(ToolbarHandle,#TB_ADDBITMAP,0,image)
		CompilerEndIf

		ToolBarImageButton(#IconStart, ImageID(#IconStart),#PB_ToolBar_Normal,"Start")
		ToolBarToolTip(#Toolbar,#IconStart,"Start")
		ToolBarImageButton(#IconPause, ImageID(#IconPause),#PB_ToolBar_Normal,"Pause")
		ToolBarToolTip(#Toolbar,#IconPause,"Pause")
		ToolBarImageButton(#IconStop, ImageID(#IconStop),#PB_ToolBar_Normal,"Stop")
		ToolBarToolTip(#Toolbar,#IconStop,"Stop")
		ToolBarImageButton(#IconReset, ImageID(#IconReset),#PB_ToolBar_Normal,"Reset")
		ToolBarToolTip(#Toolbar,#IconReset,"Reset")
		ToolBarSeparator()

		ToolBarImageButton(#IconPlus, ImageID(#IconPlus), #PB_ToolBar_Normal,"Increase");"New Entry")
		ToolBarImageButton(#IconMinus, ImageID(#IconMinus), #PB_ToolBar_Normal,"Decrease");"Remove Entry")
		ToolBarSeparator()
		ToolBarImageButton(#IconAlert, ImageID(#IconAlert), #PB_ToolBar_Normal,"Problem")
		ToolBarImageButton(#IconOpts, ImageID(#IconOpts), #PB_ToolBar_Normal,"Change Mode")
		;ToolBarImageButton(#IconStop, ImageID(#IconStop))
		;ToolBarSeparator()

		;DisableToolBarButton(#Toolbar,#IconAlert,1)

		SendMessage_(\ToolbarHandle,#TB_DELETEBUTTON,#IconStop,#Null)

		\IconHeight=	ToolBarHeight(#Toolbar)
		\ListTop=		\MenuHeight+\IconHeight
		\ListHeight=	\Height-\ListTop

		ResizeGadgets()

	EndWith

EndProcedure
Procedure Init()

	Protected i

	With Win

		\Width=960
		\Height=400

		\IconW=48
		\IconH=48

		If OpenWindow(#Win,0,0,\Width,\Height,"Bird's Beeper",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget)
			WindowBounds(#Win,600,200,4000,2500)

			ListIconGadget(#List,0,\ListTop,\Width,\ListHeight,"Address",120, #PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_HeaderDragDrop)
			AddGadgetColumn(#List,#ListState,"State",60)
			AddGadgetColumn(#List,#ListOkCount,"Ok #",55)
			AddGadgetColumn(#List,#ListOkPercent,"Ok %",55)
			AddGadgetColumn(#List,#ListTimeNow,"ms",45)
			AddGadgetColumn(#List,#ListTimeMedian,"Time med",45)
			AddGadgetColumn(#List,#ListTimeMax,"Time max",45)
			AddGadgetColumn(#List,#ListTTL,"TTL",40)
			AddGadgetColumn(#List,#ListSeriesUp,"Ups",60)
			AddGadgetColumn(#List,#ListSeriesDown,"Downs",60)
			AddGadgetColumn(#List,#ListLastChange,"Change",170)
			AddGadgetColumn(#List,#ListChangeTime,"Time",60)
			AddGadgetColumn(#List,#ListName,"Name",120)

			InitToolBar()

			AddGadgetItem(#List,0,"222.222.222.222"+#LF$+"Okay"+#LF$+"999"+#LF$+"99.9%"+#LF$+"123"+#LF$+"60"+#LF$+"1234"+#LF$+"127"+#LF$+"1234"+#LF$+"6666"+#LF$+ExactTime()+#LF$+"12s"+#LF$+"Switch A")

			AddWindowTimer(#Win,0,100)
			BindEvent(#PB_Event_SizeWindow,@ResizeGadgets(),#Win)
			HideWindow(#Win,#Null)


			;ButtonGadget(0,20,70,200,30,"Hide ToolBar ")
			Protected Shown = 1

			Repeat
				Select WaitWindowEvent()
				Case #PB_Event_Gadget
				Case #PB_Event_Menu
					Select EventGadget()
					Case #IconAlert
						\IconW=24
						\IconH=24
						\ToolbarMode=0
						i=0
						InitToolbar()
					Case #IconMinus
						If \IconW>16
							\IconW-8
							\IconH-8
							InitToolbar()
						EndIf
					Case #IconPlus
						If \IconW<128
							\IconW+8
							\IconH+8
							InitToolbar()
						EndIf
					Case #IconOpts
						\ToolbarMode+1
						\ToolbarMode%3
						InitToolbar()
					Case #IconStart
						;ToolBarImageButton(#IconPlay, ImageID(#IconStop),#PB_ToolBar_Normal,"Stop")
						i=1-i
						SendMessage_(\ToolbarHandle,#TB_CHANGEBITMAP,#IconStart,i)
						ToolBarButtonText(#Toolbar,EventGadget(),StringField("Start.Pause",i+1,"."))
						;		ShowWindow_(ToolbarHandle,#SW_HIDE) ; now hide toolbar
						;		ShowWindow_(ToolbarHandle,#SW_SHOWNORMAL) ; now shot toolbar
					EndSelect
				Case #PB_Event_CloseWindow
					End
				EndSelect
			ForEver

		EndIf

	EndWith

EndProcedure

Init()
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4991
Joined: Sun Apr 12, 2009 6:27 am

Re: [Windows] Changing toolbar icons on the fly

Post by RASHAD »

Maybe

Code: Select all

					Case #IconAlert
						\IconW=32
						\IconH=32
						\ToolbarMode=0
						i=0
						InitToolbar()
Egypt my love
User avatar
Michael Vogel
Addict
Addict
Posts: 2819
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Re: [Windows] Changing toolbar icons on the fly

Post by Michael Vogel »

Interesting, do you know why any size except 24 does work and only 24 fails?
breeze4me
Enthusiast
Enthusiast
Posts: 633
Joined: Thu Mar 09, 2006 9:24 am
Location: S. Kor

Re: [Windows] Changing toolbar icons on the fly

Post by breeze4me »

Image 0 seems to be empty when the toolbar is created.
So, depending on the initial size when the toolbar is created, 1 should be added.

Code: Select all

Case #IconStart
  ;ToolBarImageButton(#IconPlay, ImageID(#IconStop),#PB_ToolBar_Normal,"Stop")
  i=1-i
  
  ; if #PB_ToolBar_Small (default) is included.
  ;If \IconW = 16 And \IconH = 16
  
  ; if #PB_ToolBar_Large is included.
  If \IconW = 24 And \IconH = 24
    SendMessage_(\ToolbarHandle,#TB_CHANGEBITMAP,#IconStart,i + 1)
  Else
    SendMessage_(\ToolbarHandle,#TB_CHANGEBITMAP,#IconStart,i)
  EndIf
Alternatively, it seems that image 0 can be removed. I haven't tested it thoroughly.

Code: Select all

		CompilerIf 1	; Change icon size and symbols
			\ToolbarImages=SendMessage_(\ToolBarHandle, #TB_GETIMAGELIST,0,0)
			ImageList_SetIconSize_(\ToolbarImages, \IconW,\IconH);
			ImageList_Remove_(\ToolbarImages, 0)
			
			SendMessage_(\ToolbarHandle, #TB_SETBUTTONSIZE,0,\IconW|\IconH<<16)
			SendMessage_(\ToolbarHandle, #TB_SETIMAGELIST,0,\ToolBarImages)
			SendMessage_(\ToolbarHandle, #TB_AUTOSIZE,0,0)
			;image\Hinst=0
			;image\nID=ImageID(#IconStop)
			;SendMessage_(ToolbarHandle,#TB_ADDBITMAP,0,image)
		CompilerEndIf
User avatar
Michael Vogel
Addict
Addict
Posts: 2819
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Re: [Windows] Changing toolbar icons on the fly

Post by Michael Vogel »

Even I still do not understand why image 0 is relevant for 24x24 icons but not for any other size, the following line works perfect:

Code: Select all

ImageList_Remove_(\ToolbarImages, 0)
Thank you for your great help.
Post Reply