Button is just another window - when you need to display your own graphics in it, you will need to hook the WM_DRAWITEM message. In the handler you put code like if you are drawing into a normal window. You need to get a DC, then draw on it (first fill the background, then draw the icon, then the text). Then release the DC.