I have done something similar, but with a pushbutton. In principle the system works, but only if I put the custom routine in gwin_button.c (since it refers to buttonVMT,which is static). void gwinButtonDraw_Frame(GWidgetObject *gw, void *param) { const GColorSet * pcol; (void) param; if (gw->g.vmt != (gwinVMT *)&buttonVMT) return; pcol = getButtonColors(gw); gdispGDrawBox(gw->g.display, gw->g.x, gw->g.y, gw->g.width-1, gw->g.height-1, pcol->fill); } Am I doing something wrong? Is there any way to put the custom routine in a separate file? thank You