+bool wxDialog::MSWProcessMessage(WXMSG* pMsg)
+{
+ const MSG * const msg = wx_reinterpret_cast(MSG *, pMsg);
+ if ( msg->message == WM_KEYDOWN && msg->wParam == VK_ESCAPE )
+ {
+ int idCancel = GetEscapeId();
+ switch ( idCancel )
+ {
+ case wxID_NONE:
+ // don't handle Esc specially at all
+ break;
+
+ case wxID_ANY:
+ // this value is special: it means translate Esc to wxID_CANCEL
+ // but if there is no such button, then fall back to wxID_OK
+ if ( EmulateButtonClickIfPresent(wxID_CANCEL) )
+ return true;
+ idCancel = wxID_OK;
+ // fall through
+
+ default:
+ // translate Esc to button press for the button with given id
+ if ( EmulateButtonClickIfPresent(idCancel) )
+ return true;
+ }
+ }
+
+ return wxDialogBase::MSWProcessMessage(pMsg);
+}
+