Click here to Skip to main content
13,349,293 members (55,826 online)
Click here to Skip to main content
Add your own
alternative version


16 bookmarked
Posted 15 Apr 2004

Defense against the dreaded Klingon Battlecruiser

, 15 Apr 2004
Rate this:
Please Sign up or sign in to vote.
An article about application users and their perception.

Sample Image


This article provides an intelligent solution to a phenomenon known as the Klingon battle cruiser. To illustrate, create an empty document in VC++, then type "something" in it. Good. The Battle cruiser is coming near. Ok, just type CTRL-F4 on the keyboard and - voila! There's one right there.

In essence, KBC (Klingon Battlecruiser) is an annoying message box. All kinds of users with all kinds of computer background have to face numerous message boxes dozens of time every day.

Most users "dismiss" the message box automatically, as a reflex. Why read it?

It turns out that a study (sorry - I have no formal references) has shown that a lot of good folks out there reject the KBC on site, w/o reading it.


I am writing an application that is used in the context of a security system. Users can put in a lot of work and the application offers a BACKUP - RESTORE command that interfaces with the underlying SQL SERVER database engine.

My boss, who happens to be the industry Guru, is one of the greatest KBC fighters. He never, ever reads any phrase with more than two words. He dismisses dialog boxes so quickly, he could win Olympic medals.

What was bound to occur has occurred. He "accidentally" restored a database instead of backing it up. Result: 1 day of work lost. It could have been worse.

Earlier this week, he went to some clients, setting up their systems using his laptop and backed-up client 1 database on top of client 2 backup. This time, the loss was closer to 4 hours. Lucky.

Then he figures that if he makes that sort of mistakes, others are bound to do the same.

Hence this article, describing a simple way to replace "easy" MessageBox(), that too easily dismissed.

Using the pattern

Sample Image

Basically, the proposed design pattern replaces the "easy to dismiss" message box with a modal dialog box that not only provides messagebox like buttons, but that contains an extra confirmation edit control.

Once invoked, it will return "IDOK" if - and only if the operator has typed the confirmation in the edit control. The idea is that to know what to type, the user has to go through the text first. Only by carefully reading the text will the user learn what the "confirmation word" is.

Points of Interest

What this Graphic User Interface design pattern suggests, is that simple message boxes are often not enough to allow an application user to confirm dangerous operations.

Application users with all kinds of computer literacy skills have learned to dismiss most message boxes as trivial, unimportant. They automatically hit ENTER or click on the leftmost choice without reading.

The modal dialog box with edit control does not register with the brain as a message box. It draws attention. The user is more likely to read the text and, more importantly, think about the consequences before confirming their action.


First release of this article in April 2004.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Technical Lead
Canada Canada
No Biography provided

You may also be interested in...

Comments and Discussions

GeneralMy vote of 4 Pin
Sastry_kunapuli13-Nov-12 8:52
memberSastry_kunapuli13-Nov-12 8:52 
GeneralMy vote of 5 Pin
DinoLL++2-Nov-12 15:25
memberDinoLL++2-Nov-12 15:25 
GeneralLazy users Pin
_Olivier_5-Jan-07 5:05
member_Olivier_5-Jan-07 5:05 
General2 dialogs are better than one.... Pin
Jimothy19-Nov-04 5:52
memberJimothy19-Nov-04 5:52 
GeneralRe: 2 dialogs are better than one.... Pin
CreF6-Dec-07 2:04
memberCreF6-Dec-07 2:04 
GeneralButton order Pin
Merlinblack21-Apr-04 19:55
memberMerlinblack21-Apr-04 19:55 
GeneralRe: Button order Pin
Bamaco222-Apr-04 9:46
memberBamaco222-Apr-04 9:46 
GeneralA picture speaks a thousand words! Pin
WREY16-Apr-04 13:39
memberWREY16-Apr-04 13:39 
GeneralDamn Pin
Michael P Butler16-Apr-04 4:54
memberMichael P Butler16-Apr-04 4:54 
GeneralRe: Damn Pin
Jubjub16-Apr-04 19:11
memberJubjub16-Apr-04 19:11 
GeneralRe: Damn Pin
shoonya16-Mar-06 3:14
membershoonya16-Mar-06 3:14 
GeneralFacing a Klingon Battlecruiser ... Pin
Maximilien16-Apr-04 1:54
memberMaximilien16-Apr-04 1:54 
GeneralRe: Facing a Klingon Battlecruiser ... Pin
Bamaco217-Apr-04 21:28
memberBamaco217-Apr-04 21:28 
GeneralUse it, and end up in the Interface Hall of Shame Pin
msalters15-Apr-04 23:52
sussmsalters15-Apr-04 23:52 
GeneralRe: Use it, and end up in the Interface Hall of Shame Pin
Bamaco216-Apr-04 1:29
memberBamaco216-Apr-04 1:29 
Note: The actual dialog box sample shown in the article did not end up in my application.

My original problem was that the backup for client A over-wrote the backup for client B.

Using SQL server, I can't just provide a convenient path to the destination backup file. It works in a more indirect way. I must first create a "dump device", giving it a logical name.

run adddump_device name "main_file"device "C:\Backup\MainFile.bak"
run adddump_device name "history"device "C:\Backup\LogFile.bak"

Then the user selects "main_file" or "history" in the screen and press the "BACKUP" or "RESTORE".

I still have not found a perfect solution, but one is coming. Part of the original problem is that whatever directory is selected, the filenames (one for history and one for the main file) end up being the same. So, saving two distinct clients backup in the root of a single USB PEN type of disk gives me these problems.

A suggested solution (by my boss) is to encode the "logicalname" for the backup into the filename. But this is beside the point.

The goal of this article is to present to this community the fact that very often, message boxes will not be read. I offer one solution (forcing the user to read the text) as an example only.

I hope to see some comments that will help me reduce the possibility of errors and perhaps improove the end user's experience.

Note: I like your suggestion for a shorter text with some boldface in it. Too bas it's not supported by ordinary messageboxes. Maybe I can simulate this using rich edit control or some other interesting RTF formatting control seen somewhere in code project Smile | :)
GeneralRe: Use it, and end up in the Interface Hall of Shame Pin
compiler16-Apr-04 6:11
membercompiler16-Apr-04 6:11 
GeneralRe: Use it, and end up in the Interface Hall of Shame Pin
John M. Drescher16-Apr-04 7:18
memberJohn M. Drescher16-Apr-04 7:18 
GeneralRe: Use it, and end up in the Interface Hall of Shame Pin
John M. Drescher16-Apr-04 5:26
memberJohn M. Drescher16-Apr-04 5:26 
GeneralUse clear buttons Pin
Patje15-Apr-04 21:44
memberPatje15-Apr-04 21:44 
GeneralRe: Use clear buttons Pin
Bamaco215-Apr-04 23:15
memberBamaco215-Apr-04 23:15 
GeneralRe: Use clear buttons Pin
Thomas Freudenberg15-Apr-04 23:52
memberThomas Freudenberg15-Apr-04 23:52 
GeneralRe: Use clear buttons Pin
Patje16-Apr-04 1:05
memberPatje16-Apr-04 1:05 
GeneralRe: Use clear buttons Pin
compiler16-Apr-04 6:18
membercompiler16-Apr-04 6:18 
GeneralRe: Use clear buttons Pin
Martin Friedrich16-Apr-04 6:53
memberMartin Friedrich16-Apr-04 6:53 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.180111.1 | Last Updated 16 Apr 2004
Article Copyright 2004 by Bamaco2
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid