Images from GUI Bloopers, by Jeff Johnson. Used without permission.
What's wrong with this?
The bad example above most often happens when an old, unsupported components must be included into new software. It may also be the case that the user needs to use the components in a more constrained way than the original design expects.
Avoid this problem by wrapping old code with new code which shows instructions to the user. These instructions may be in the main window or in auxiliary windows. If possible, try to poll the system to find out which step is current for the user, and highlight the corresponding instructions.