4-1 MFC学习之模式对话框和非模式对话框以及对话框的回调
2016-01-16 20:22
387 查看
模式对话框
非模式对话框
必须在堆内申请对象,或在成员变量内申请对象
堆内申请对象
成员对象内申请对象
获取对话框指针
对话框关闭过程 OnClose() -> OnCancel() -> OnDestroy()
//模式对话框:DoModal CAbout dlg; dlg.DoModal();
非模式对话框
必须在堆内申请对象,或在成员变量内申请对象
堆内申请对象
CChatDlg *pdlg = new CChatDlg; pdlg->Create(IDD_DIALOG1/*, GetDesktopWindow()*/); pdlg->ShowWindow(SW_SHOW);
成员对象内申请对象
#include "ChatDlg.h" class CTestDlg2Dlg : public CDialogEx { ChatDlg m_cdlg;
void CTestDlg2Dlg::OnBnClickedButton1() { if(!m_cdlg.m_hWnd) { m_cdlg.Create(IDD_DIALOG1); m_cdlg.ShowWindow(SW_SHOW); } }
获取对话框指针
GetDlgItem(IDC_BUTTON3)->SetWindowText(_T("测试"));
//管理所有系统菜单和系统按钮消息 void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam) { switch(nID) { case SC_CLOSE: MessageBoxW(_T("SC_CLOSE")); return; } }
对话框关闭过程 OnClose() -> OnCancel() -> OnDestroy()
void CTestDlg2Dlg::OnClose() { CDialogEx::OnClose(); } //不但用于按钮回调消息,也是系统按钮关闭窗口的回调 void CTestDlg2Dlg::OnCancel() { CDialogEx::OnCancel(); } //通过窗口销毁消息,窗口已经消失了 //无法取消关闭过程了 void CTestDlg2Dlg::OnDestroy() { CDialogEx::OnDestroy(); }
相关文章推荐
- 批处理文件:实现将写好的Android Uiautomator工程打包成jar包放到手机中执行
- django中配置markdown
- centos rhel rtorrent
- UI小结.(一)
- bzoj1085 骑士精神
- UESTC--1269--ZhangYu Speech(模拟)
- python 调试器
- 姑娘也是江湖中人?
- HDU 1237 简单计算器
- 1.服务器上安装更新的python和代码提示(ipython)的安装
- 2016-01-15 FFC
- CSS制作三角标签
- UESTC--1269--ZhangYu Speech(模拟)
- vs2012无法新建项目(前几天还可以的)
- Android TV-Building TV Apps,Get Started with TV Apps
- 2016-01-16 FFC
- OpenStack 中的neutron-server启动过程
- WebPack
- Ubuntu下Tomcat配置
- Problem E: C语言实验——矩阵下三角元素之和