From GUI Bloopers, by Jeff Johnson (Morgan Kaufman Publishers, 2000). Used without permission.
What's wrong with these?
What's right about this?
In the first example, the command buttons initiate commands, such as compiling or bringing up the print dialog (note the "..." after "Print"). The command buttons revert to an unpressed state when the command is done.
Some GUI toolkits have toggle buttons which look like command buttons. In the second example, the "Boldface" button is one such button, but notice that the button remains in the depressed state when pressed. This shows that the state of the button is ON.
The third example shows specialized toggle buttons, for expand/contract and open/closed. These have definite ways of showing their states, and they cannot be mistaken for command buttons.