Instead, leave the menu item enabled. If there’s some reason you can’t complete the action, the menu item can display a message telling the user why.
I thought it was pretty common knowledge that users don’t read message boxes. Anyway, I’m squarely in the disable-menu-items-that-aren’t-applicable camp, and I never hide items.
Take the Refresh Data menu item in Excel. It’s disabled unless the activecell is part of a pivot table, external data range, or probably some other things. If MS wanted to use the Spolsky method, they would have two options. First, they could make a five word message box that would be so cryptic as to be no help or second, they could write a 30 word message box and nobody would read.
No, I think disabling irrelevant menu options is the way to go. But I’m willing to listen. Thoughts?