views:

174

answers:

3
+2  Q: 

mfc application

How can i stop mfc dialog application closing by pressing ESC (Escape key). After executing my application if u press ESC key then the window is closed. how it can be stopped, i am using VC++ 6.0.

+1  A: 

There are different ways to do this. You can:

  1. Create an OnCancel Handler and do whatever you want with the Cancel notification
  2. You can Handle OnClose Event and do whatever you want.
  3. You can override PreTranslateMessage and check Esc key there and do whatever you want.

Check this for code examples.

For a PreTranslateMessage example, see this

Aamir
+2  A: 

You can override the OnCancel event and only move forward with the OnCancel call if IDCANCEL is the focused item.

void CMyDialog::OnCancel(void)
{
   if(GetDlgItem(IDCANCEL) ==  GetFocus())
    {  
        CDialog::OnCancel();
        return;
    }
}
tschaible
+1  A: 

Override OnCancel and don't call the base class implementation.

Don't go near OnClose unless you know what you're doing, you risk breaking the behaviour for Alt-F4 and the X button.

I've always regarded PreTranslateMessage for things like this as using a thermo-nuclear weapon to crack a nut, but if it floats your boat...

Bob Moore