All GUI controls like buttons are just windows which handle the drawing on their own. So drawing something on the area of the control will be overwritten when the control is redrawn which happens upon several conditions.
The common solution is deriving a class using owner-draw which requires the usage of a member variable in the dialog class to link the resource item to your derived class.
If you don't want to use the above method, you can handle the
WM_DRAWITEM message (Windows)[
^] in your dialog containing the button. When the button has the owner draw style set, the message will be send to the parent window.