Guidelines

Now that we've reviewed many techniques for eliminating unnecessary repetitive tasks, let's look for patterns. Let's first outline some general objectives and then the specific techniques.

General Objectives

  • When evaluating your program, constantly monitor the user's behavior and look for repetitive behavior. Tasks that are always done should be performed by default. Commonly used multistep tasks should be consolidated into a single command.
  • Any input worth asking for is probably worth saving. Don't throw away the user's input as soon as you are done with it. Save it and use it for future default settings.
  • Monitor user interaction for trends, and use the most common interaction as the default behavior.
  • When possible, have the program perform tasks automatically rather than having the user perform them manually.
  • Eliminate unnecessary dialog boxes.
  • Eliminate unnecessary typing.
  • Make automatic features customizable, and allow the user to turn them off.
  • While performing tasks automatically is helpful, make sure the user is ultimately in control of the program.

Specific Techniques

  • Save and restore the program state. Save the user preferences, windows sizes and locations (using GetWindowPlacement and SetWindowPlacement functions), open documents, and so on, and restore them when possible.
  • Restored windows sizes and locations might need to be adjusted for changes in the screen resolution. Never restore a window to a size larger than the screen (minus the taskbar) or position the window off the screen.
  • Use history lists, and sort them in most recently used order.
  • Use an autocomplete feature when possible to eliminate unnecessary typing.
  • Optimize dialog boxes by using appropriate defaults. The dialog box controls should be initialized to the selections the user is most likely to make. Edit boxes should be initialized to the most likely input, often the last text entered. Dialog boxes that always use the same fixed default values regardless of user input require unnecessary repetition.
  • Some property sheets are more convenient when initialized to the last tab used, especially Options property sheets. Property sheets should also support the Apply button so that users can experiment with settings easily.
  • Dynamic dialog boxes should be initialized to the last mode they were in.
  • The Open and Save As common dialog boxes should remember where the user last opened or saved a file. If the program uses different file types and those different types are often saved to different folders, the program should keep track of the last folder used for each file type.
  • Set the dialog box tab order strategically.
  • Set the dialog box initial input focus strategically. Assign the initial input focus to the control that the user is most likely to interact with first.
  • Reroute input focus strategically. For example, suppose you have a dialog box with an editable list and several command buttons, such as Add, Delete, and Rename. If the user selects an item in the list and clicks the Delete button, the input focus should return to the list to eliminate a step. Leaving the input focus on the Delete button has no value since the user cannot delete anything until another item is selected. The next action will probably require selecting something in the list, so give the list the input focus.
  • Provide shortcut keys for commonly used tasks.
  • Provide drag-and-drop capability for commonly used tasks.
  • When possible, make windows and controls large enough to eliminate scrolling.
  • When possible, prefer using the toolbar and direct manipulation instead of dialog boxes.
  • Use tooltips to allow the user to obtain more information about an object by using the mouse instead of relying on dialog boxes.


Developing User Interfaces for Microsoft Windows
Developing User Interfaces for Microsoft Windows
ISBN: 0735605866
EAN: 2147483647
Year: 2005
Pages: 334

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net