Why is there no message for disabling the Cancel button on a wizard?


Some people have noticed that there is no message that lets you disable the Cancel button on a wizard. This is on purpose. Usability studies reveal that users find it extremely frustrating when they get partway through a wizard and then decide they don't want to perform the operation after all, but find that the wizard doesn't give them a way to cancel. Now the user feels trapped. They can't back out of the operation; they're being forced to finish something against their will.

Imagine if you went to an e-commerce site and started going through the checkout procedure, then decide that you didn't want to buy the item after all, yet the web page disabled the Back button and didn't have a Cancel, and when you clicked the "X" button to close the web browser, the page put up a message box saying, "You cannot cancel this operation once it has begun." Not a very pleasant experience, and I suspect you would avoid this web site in the future.

The same principle applies to wizards. Users should always be given a way to cancel out of a wizard. Wizards should, generally speaking, collect information in stages, and apply them at the point the user clicks Finish. This is not always practical, and wizards may have need to commit partially-made decisions along the way, but that's the general idea. Under such circumstances, the wizard author should make it clear to the user whether cancelling the operation will undo the previously-committed decisions or leave them intact. If you are clever, you can do this without an annoying confirmation dialog. Instead, you can indicate this by the flow of the wizard itself. For example, you might have a wizard that goes like this:

  1. Welcome to the XYZ Setup Wizard.
  2. What type of XYZ do you want?
  3. Your XYZ is now ready to use. Would you like to set up special access rights to the XYZ?
  4. Access rights to Your XYZ has been established. This concludes the XYZ Setup Wizard.

With this wizard flow, clicking "Next" to go from page 2 to page 3 commits the initial XYZ setup, as indicated by the text "Your XYZ is now ready to use." If the user decides to cancel out of the customization, you've made it clear that the XYZ has nevertheless been set up and cancelling will not undo it.

Comments (12)
  1. oldnewthing says:

    (Yeah, this is nearly a dup of a posting from last month. Sorry. Didn’t realize it when I wrote it.)

  2. Dave says:

    Clippy said: "It looks like you’re trying to write a duplicate post. Do you want help?"

    :-)

  3. oldnewthing says:

    Well at least this time through I have some design guidance.

  4. PatriotB says:

    It would be nice to be able to disable the Cancel button at least on the final "conclusion" page of the wizard.  For example, many Setup programs use wizards; after the "Progress" page (which does the actual install) you see the "Conclusion" page saying something like "Program XYZ has been successfully installed."  And here you’ll see a Finish and Cancel buttons.  It would be nice to be able to disable the Cancel button here, since the process has already been completely finished.

  5. Miral says:

    You’re assuming that people actually read the wizard pages.  That assumption is frequently unwarranted :)

  6. David Candy says:

    Who disabled your Cancel button? Time to report to the debugger room RCH3N and get fixed.

  7. Norman Diamond says:

    (Yeah, this is nearly a dup of a posting

    > from last month.

    No problem ^^  Just remember that when people put requests in the suggestion box asking you to dup postings from more than a month ago ^^

    > Didn’t realize it when I wrote it.)

    Yeah well of course.  It hadn’t been posted yet ^^

    Better be careful though.  If you don’t have a Cancel button for your postings then some people will think you’re not a wizard ^^

  8. You can disable the cancel button using the PSM_CANCELTOCLOSE message because a wizard has no OK button. Maybe this isn’t supposed to work?

    As an example… http://www.mutexed.com/code/JoinExt/wizard-iv.png

  9. oldnewthing says:

    PSM_CANCELTOCLOSE is legal only for property sheets. Using it for wizards results in undefined behavior.

  10. 8 says:

    as indicated by the text "Your XYZ is now ready to use."

    The user should’ve been notified in step 2. This is exactly what i meant in my earlier comment in your previous cancel button post. After the keyboard, mouse, time and date settings the setup goes on to install, and afterwards it’s not possible to go back and change something. It would be very convenient if there was a warning that the next step goes on to install, so i can go back and forth between pages to make sure eveything is allright, and then proceed with installation. I should be warned that there is no back button afterwards.

    Similarly, the Windows Installer has a cancel button, but clicking it just re-opens it. So I click again, again, again, again and again, so I’m getting frustrated because I really DIDNT want to open up (for instance) Word. And suddenly Word appears, even though I had clearly indicated I clicked it by accident or have changed my mind.

  11. BryanK says:

    8: On the Office/Windows Installer issue, that’s because Word is trying to dereference several different WI-controlled GUIDs, and none of them are installed.  So every single time it tries to dereference one of them, WI pops up the dialog, which you have to cancel.

    Then, eventually, you’ve made it through all the GUID-dereferencing code in Word, and it comes up.

    (WI uses GUIDs because that makes it possible to set components to "install on first use", where they’re present according to the app, but not taking up disk space until they’re needed.  Apparently many Office programs abuse this feature, because even if I install Office XP Pro in "full" mode, with nothing set to "install on first use", I still get the WI dialog the first time I open each Office program.  Which means each Office program is trying to use something that isn’t installed.  Sigh.)

  12. 8 says:

    Thanks for the explanation. Install-on-demand can actually be useful. A shame though that we get to face it so often. So this begs the question, why can’t WI and Word better work together so WI can install the missing components in 1 run instead of several?

Comments are closed.