Introduction
A
dialog-based
application
by default
will close
when the
user hits
Return,
Esc,
File ->
Close, or
the "X" in
the system
menu (top
right of
dialog/window).
If your app
is
complicated
and doesn't
have an OK
and/or
Cancel
button in
the main
window of
the app, the
user may be
surprised
when he hits
Return
(or
Esc)
accidentally
and the app
closes on
him. Imagine
if you were
using MS
Word and it
closed when
you hit the
"Return"
key,
especially
if you
hadn't saved
hours of
work. Pretty
upsetting.
I wanted my
app to close
only when
the user
clicked the
"X" in the
system menu
or selected
the File->
Close (or
Exit) menu
item.
The solution
is simple.
Collapse
Copy
Code
void MyDialog::OnCancel()
{
}
void MyDialog::OnOK()
{
}
item
void MyDialog::OnFileClose()
{
EndDialog(IDOK);
}
void MyDialog::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else if ((nID & 0xFFF0) == SC_CLOSE)
{
EndDialog(IDOK); }
else
{
CDialog::OnSysCommand(nID, lParam);
}
}