An application's user interface serves two main purposes: to receive user input and provide user output. How well your application handles these tasks depends on your hardware capability, your operating system configuration, and the input and output requirements of your target platform.
Before designing your application, you need to ask some important questions about its interface: Will it be graphical or non-graphical? How will your application receive user input? Will users type commands with a keyboard, with a touchscreen, with voice commands, or with buttons on a console? How will you provide feedback to the user? Will your device support an LCD screen or audio feedback?
Windows CE supports a range of device platforms, from handheld computers to industrial embedded systems. Its modular design allows you to use only the features you need to create applications for the specific platform you have chosen. Because user interface requirements vary from one platform to another, this chapter describes general design considerations for a graphical user interface. Platform–specific design considerations, such as those pertaining to a Handheld PC (H/PC) or Palm-size PC, are discussed in later chapters.
A well-designed user interface focuses on users and their tasks. Good user-interface design considers general design principles as well as how graphics, color, and layout influence the usability of an application. Apply the following design concepts when creating an interface focused on the needs of the user.
Allow the user, not the computer or software, to initiate actions. Remember, the goal of the user is not to use the application, but to accomplish a task.
To increase familiarity with the interface, allow users to manipulate representations of the tasks they perform. For example, if you provide a desktop-like interface, allow users to drag icons depicting documents to an icon depicting a trash bin when deleting a file. For other types of interfaces, be sure buttons and icons relate to the tasks they perform. One example of this would be to display a wrench icon to start an automotive maintenance application.
Another way to increase your user's familiarity with the interface is to avoid using modes whenever possible. Modes, which occur when identical commands or keystrokes perform different actions in different situations, force users to think about how the application works instead the tasks at hand. Though modes are best avoided, warning boxes and message boxes are two types of modes that are necessary and appropriate.
Consistency makes the interface familiar and predictable, which reduces user errors and improves performance. Consistency is enhanced with components that have a similar appearance and behavior and with actions that have the same result regardless of context. For example, in a desktop environment, scroll bars operate the same way, regardless of whether the scroll bar is in a list box or window. To achieve consistency, reuse standard commands across tasks and present commands in the same way in each task.
Let the user explore the interface through trial and error, while warning him or her about potential damage to the system or data. To minimize user problems, provide clear error messages and indicate appropriate actions for the user to take to recover from an error or correct the problem that caused it. If possible, make actions reversible or recoverable.
Present the user with timely visual and audio cues to confirm that the software is responding to input.
Effective visual design is aesthetically pleasing. An attractive interface helps the user select appropriate competing information and suggests a high-quality application.
Simple interfaces, with an uncluttered display, are easy to learn and easy to use. Show only the most important controls directly on the interface and hide the rest in menus. Reduce the number of different tasks presented in a single window or screen and group related tasks together. Simplicity is especially important in Windows CE-based devices with small displays.
Whenever possible, provide multiple methods for performing an operation. To accomplish this, support different types of input devices if possible, and provide keyboard shortcuts or accelerators for specific tasks, if your device supports a keyboard.