When i ran my CVI application under MS XP the first time, i decided i want to replace all buttons by 3D buttons, but only when the application runs under XP. My application has about 80 panels. So i wrote a function XP_PanelConform() to be called after loading a panel. It puts a 3D button on top of each button in a panel, depending on a flag in the ini file and on the MS system running. This function loads a background image for the panel as well.. Then there is another function XP_CtrlIdMap() called from the control callback common to all controls of a panel. This function maps the 3D button id (basically unknown to the existing software) into the original buttons control id, so callback functions basically need not be changed. Later i got two more functions XP_GetCt
rlAttribute() and XP_SetCtrlAttribute() to handle attributes of button controls.
This approach to get everything more XP-like took about one day and i am still with one UIR file.