Application Design Review
Windows applications are subtly complex to design. Many of the things
that we take for granted need to be consciously implemented when an application
is designed and written.
This list is certainly not complete, but it addresses many of the things you
should think about.
- Does your application work the way that Windows applications are supposed
- Does your application close when it should? Specifically, you should
close it when you receive a panel-CLOSE-AND-STOP event, which occurs
when the user clicks the X box in the upper right corner of your main
window, uses the Alt+F4 keyboard shortcut, or selects Close from the system
menu at the upper left of the main window.
- Did you enable state-saving in your application so that the user's
preferred size and layout are restored the next time the application is
- For multilingual applications, did you do your layout in the most verbose
language so that controls - labels and text will always fit? Did you
translate all text strings for all of your panels consistently?
- If you used property sheets, did you correctly implement the OK, Cancel,
and Apply buttons?
- Have you tested your application with various video modes to be sure that
your panels aren't too big? Many end-users use 800x600 resolution, and
some even use 640x480 video modes. If you design your application to
run on a 1600x1200 display, it's not going to fit on a lower-resolution
display. See also Accessibility considerations, below.
- Have you tested your application on all of the versions of Windows that it
may encounter? Some things work differently on early versions of
Windows, which can be a problem if you're not aware of it. See Distributing
Applications for some details.
- Have you tested your application with various display settings, including
lower resolution settings and the use of Large Fonts or Extra Large
- If you are designing your application on a high-resolution display using
small fonts, you may find that your panels will not fit when they are
displayed on a machine using 800x600 resolution and Large Fonts.
- Verify that you can use your application without a mouse, and that the
standard keyboard shortcuts work properly. For example, verify that
tapping the Alt key or the F10 key enables the standard menu keyboard
- Consider adding Access-Keys to selected buttons, menu items, check boxes
and radio buttons. The Access keys are underlined Characters
indicating that you can press Alt+character to trigger that menu item. See
the note at the bottom of the Windows
- Are your menus laid out like those of other Windows applications?
- Do you use keyboard access keys by inserting an ampersand (&) symbol in
front of the significant character for the menu item? Have you
verified there are no conflicts? (duplicate use of the same character
on the panel). See the not on the Windows Keyboard page in the above
- Do you have Help and Help/About?
- Did you use context (right-click) menus where they are appropriate?
Consistent use of keyboard shortcuts
- Did you assign function keys to menus and buttons in a way consistent with
the standard Windows keyboard interface?
- Have you avoided conflicts with the standard Windows keyboard interface?
- Are your buttons where Windows users have come to expect them, and are
they consistent and clearly labeled?
- Have you presented an Escape option for every panel which can be used when
the user do not know the answer or data needed to complete the task?
- Have you used group boxes for related items and visual appeal?
- Is layout and spacing consistent from one panel to the next?
- Does everything line up? A misalignment of as little as one unit is
Appearance; colors, fonts, etc.
- Because Windows lets users select the color scheme and appearance they
prefer, you should generally avoid the use of color except to highlight
items of major importance.
- The same applies to fonts; users can apply a font size or style by
changing their display properties; therefore, you should generally avoid
- Is you panel tabbing sequence logical and efficient?
- If the application involves high-volume data entry, have you optimized
it? Review the use of custom tabbing sequence, beep full,
enter-as-tab, hot field logic, etc.
- Did you consider mouse-less navigation? Is it possible to use your
application without a mouse?
ToolTips, Help, Documentation
- Does your application explain (help, tool tips, labels, anywhere) which
function keys do what?
- Did you define Tool tips for all controls that might need them? - Did you
get carried away?
- Did you define help for any controls that need explanation?
- Does the Help display the page applicable to the panel in use if the user
presses the F1 key?