#undef STOCKITEM
+ if ( flags & wxSTOCK_WITHOUT_ELLIPSIS )
+ {
+ wxString baseLabel;
+ if ( stockLabel.EndsWith("...", &baseLabel) )
+ stockLabel = baseLabel;
+
+ // accelerators only make sense for the menu items which should have
+ // ellipsis too while wxSTOCK_WITHOUT_ELLIPSIS is mostly useful for
+ // buttons which shouldn't have accelerators in their labels
+ wxASSERT_MSG( !(flags & wxSTOCK_WITH_ACCELERATOR),
+ "labels without ellipsis shouldn't use accelerators" );
+ }
+
+#ifdef __WXMSW__
+ // special case: the "Cancel" button shouldn't have a mnemonic under MSW
+ // for consistency with the native dialogs (which don't use any mnemonic
+ // for it because it is already bound to Esc implicitly)
+ if ( id == wxID_CANCEL )
+ flags &= ~wxSTOCK_WITH_MNEMONIC;
+#endif // __WXMSW__
+
if ( !(flags & wxSTOCK_WITH_MNEMONIC) )
{
stockLabel = wxStripMenuCodes(stockLabel);