怎样实现“关闭窗口时出现提示对话框”?该如何处理

怎样实现“关闭窗口时出现提示对话框”?
想实现在关闭程序时出现一个提示信息:
点击窗口右上角的×按钮后出现对话框,提示用户是否保存
如果“是”——保存后正常关闭;
如果“否”——不保存正常关闭;
如果“取消”——不关闭窗口;

另外,在界面上还有一个按钮,需要实现与右上角的×按钮一样的功能

恳请各位帮帮忙
谢谢

------解决方案--------------------
http://community.csdn.net/Expert/topic/5579/5579861.xml?temp=.4606745

参考这个试试!
------解决方案--------------------
void Cgame2005test1Dlg::OnCancel()
{
// TODO: 在此添加专用代码和/或调用基类

CString str1,str2;
str1.LoadString(IDS_STRING107);
str2.LoadString(IDS_STRING106);
if(IDCANCEL == MessageBox(str1,str2,MB_OKCANCEL))//退出时弹出对话框
{
return;
}
CDialog::OnCancel();
}
------解决方案--------------------
响应主窗体的ONCLOSE 事件WM_CLOSE
------解决方案--------------------
void CMy1Dlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
int iRes =MessageBox( "1 ", "2 ",MB_YESNOCANCEL);

if (iRes==IDCANCEL||iRes==IDNO)
;
else
CDialog::OnClose();
}
------解决方案--------------------
添加WM_CLOSE消息,添加响应函数.
------解决方案--------------------
右上角按钮,调用OnOK();
void XXX::按钮()
{
if(MessageBox( "确认退出? ", "系统提示 ",MB_YESNO)==IDYES)
OnOK();
}
ALT+F4,重载OnSysCommand,
if(nID== SC_CLOSE)
{
if(MessageBox( "确认退出? ", "系统提示 ",MB_YESNO)==IDYES)
xxx::OnSysCommand(nID, lParam);
}
else
{
XXX::OnSysCommand(nID, lParam);
}