The easiest way would indeed be to place a TEXT widget on top of the IMAGE widget.
The other way would be to call the GUI_Disp... routine within a callback when reacting on a WM_PAINT message. So you would manually handle the drawing of the widget.
In your case you would set a custom callback to the IMAGE widget and call your drawing function after calling the default IMAGE callback to ensure that the image is still drawn normally.
C
case WM_PAINT:
//
// Call standard IMAGE callback so that the image is still displayed.
//
IMAGE_Callback(pMsg);
//
// Display something on top...
//
GUI_Disp...
break;