=====Displaying an icon on a pushbutton=====
//by Richard Russell, March 2016//\\ \\ The main //BBC BASIC for Windows// help documentation tells you how to [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#fnbutton|display a BMP image on a pushbutton]] but not how to display an icon (ICO file) instead. The simple code below shows how to do that:\\
BM_SETIMAGE = &F7
BS_ICON = 64
IMAGE_ICON = 1
LR_LOADFROMFILE = 16
INSTALL @lib$+"WINLIB5"
ICOfile$ = @lib$+"..\bbchelp.ico"
hButton = FN_button("", 100, 100, 96, 96, FN_setproc(PROCclick()), BS_ICON)
SYS "LoadImage", 0, ICOfile$, IMAGE_ICON, 96, 96, LR_LOADFROMFILE TO hImage
SYS "SendMessage", hButton, BM_SETIMAGE, IMAGE_ICON, hImage
REPEAT
WAIT 1
UNTIL FALSE
END
DEF PROCclick(W%, L%)
PRINT "Button clicked!"
ENDPROC
This code is for a standalone button displayed in the main window, but can easily be adapted for a button in a dialogue box (change the **SendMessage** call to a **SendDlgItemMessage**).\\ \\ You can similarly display an icon on a **static control** as follows:\\
IMAGE_ICON = 1
LR_LOADFROMFILE = 16
SS_ICON = 3
STM_SETIMAGE = 370
INSTALL @lib$+"WINLIB5"
ICOfile$ = @lib$+"..\bbchelp.ico"
hButton = FN_staticbox("", 100, 100, 96, 96, 101, SS_ICON)
SYS "LoadImage", 0, ICOfile$, IMAGE_ICON, 96, 96, LR_LOADFROMFILE TO hImage
SYS "SendMessage", hButton, STM_SETIMAGE, IMAGE_ICON, hImage
REPEAT
WAIT 1
UNTIL FALSE
END