vc对话框关闭按钮
来源:互联网 发布:网络传播的特点 编辑:程序博客网 时间:2024/06/04 18:29
对话框默认用的两个按钮的ID分别是IDOK和IDCANCEL,这两个都是在winuser.h 中预定义的系统标准控件ID。
对于标准ID,你不重载时MFC会自动调用父类的相应处理函数。
比如IDOK映射到CDialog::OnOK()函数,IDCANCEL映射到CDialog::OnCancel()。
在这两个函数的源码如下:
void CDialog::OnOK()
{
if (!UpdateData(TRUE))
{
TRACE(traceAppMsg, 0, "UpdateData failed during dialog termination.\n");
// the UpdateData routine will set focus to correct item
return;
}
EndDialog(IDOK);
}
void CDialog::OnCancel()
{
EndDialog(IDCANCEL);
}
可以看出点击这两个按钮,都会调用EndDialog()来关闭对话框,只是返回值不同。
EndDialog()函数调用了DestroyWindow()函数,DestroyWindow()函数又发送了WM_DESTROY消息,该消息的处理函数是OnDestroy(),对话框的生存期最后一个函数是PostNcDestroy()函数。
点那个叉叉呢,首先向对话框发送WM_CLOSE消息,由OnClose()函数处理,它调用DestroyWindow(),其后是和上面一样的路由。
可以看出点叉叉的时候绕过了OnOK()和OnCancel()。
小结一下:
1. 点“确定”、“取消”时的关闭路由为
OnOK()或OnCancel() ---> EndDialog() ---> DestroyWindow() ---> OnDestroy() ---> PostNcDestroy()
2. 点“关闭”标题栏按钮的关闭路由为
OnClose()---> OnCancel() ---> EndDialog() ---> DestroyWindow() ---> OnDestroy() ---> PostNcDestroy()
给你的退出按钮添加标识符IDC_XXX;
在类向导里面选择Message Maps这个选项,然后在class name里面选择一个类(取决于你需要在哪个类里面实现这个功能),以对话框为例:
选择C**Dlg类,Object IDs里面找到你的标识符IDC_XXX,在右边的Message里面添加BN_CLICKED消息响应(Add Function->Edit Code)在对应的函数里面添加上代码:
{
//想做的事情
OnOK();
}
或者使用:exit(0);
- vc对话框关闭按钮
- VC对话框的关闭按钮 调用函数的过程
- VC对话框的关闭按钮 调用函数的过程
- MFC 对话框 关闭按钮
- VC对话框禁止关闭按钮和禁止任务管理中关闭进程
- vc对话框关闭按钮和取消按钮效果一样的原因
- vc中关闭对话框dialog
- vc中关闭对话框dialog
- vc中关闭对话框dialog
- vc中关闭对话框dialog
- vc 双击按钮实现关闭
- 设置对话框字体 颜色 屏蔽关闭按钮
- 使对话框上的关闭按钮失效
- 点击子对话框的关闭按钮不起作用
- QT对话框去掉帮助和关闭按钮
- QT对话框去掉帮助和关闭按钮
- QT对话框去掉帮助和关闭按钮
- QT对话框去掉帮助和关闭按钮
- android中重要知识点
- 记录linux运维博文
- Java加密技术(一)—BASE64与单向加密算法MD5&SHA&MA
- Linux下安装Oracle11g服务器
- JS 定义方法的三种方式
- vc对话框关闭按钮
- Android下的数据库(SQLite)
- 机器学习的常识
- 市场普查的作用
- XP+Vista双系统中破解Vista系统密码的方法
- 微博价值和社会化营销
- 中国网络商品交易会
- mybaits入门(CURD)
- 内网传输接受数据源码