博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模态与非模态对话框
阅读量:5101 次
发布时间:2019-06-13

本文共 1565 字,大约阅读时间需要 5 分钟。

模态与非模态对话框使用

模态对话框

模态对话框代码

CXxxDlg dlg;dlg.DoModal()==IDOK

新建对话框绑定类

  • 1、资源窗口-【添加资源】-【Dialog】

  • 2、绑定为【CLogin】类

  • 3、窗口设计

绑定编辑框控件:控件账户(m_szId)、密码(m_szPwd)。

复选框控件:自动登录(m_bAutoLogin)、记住密码(m_bSavePwd)

549050-20190204152121115-1721186225.jpg

  • 4、在第一个对话框中的模态按钮添加一个事件
void CMFC04digDlg::OnBnClickedButtonLogin(){    // TODO: 在此添加控件通知处理程序代码    // 模态对话框    if (m_dlg.DoModal() == IDOK)    {        CString szId = m_dlg.m_szId;        CString szPwd = m_dlg.m_szPwd;        CString szAuto = _T("不自动登录");        CString szSavePwd = _T("不记住密码");        if (m_dlg.m_bAutoLogin) // CLogin类中的私有变量,对应一个复选框按钮变量        {            szAuto = _T("自动登录");        }        if (m_dlg.m_bSavePwd)        {            szSavePwd = _T("记住密码");        }        MessageBox(szId + szPwd, szAuto + szSavePwd, MB_OK);    }}

其中【CLoginDlg dlg;】如果是放在函数里就变成了局部变量,所以要在调用这个对话框的对话框中的头文件里做声明。

CLoginDlg dlg;

非模态对话框

非模态对话框代码

CXxxDlg  m_showMsgDlg; m_showMsgDlg.Create(IDD_DIALOG_SHOWMSG, NULL);m_showMsgDlg.ShowWindow(SW_SHOW);

新建方法

与模态对话框新建对话框绑定类差不多

处理异常

对话框只能创建一次,第二次创建反复创建会报错。

MFC_04_digDlg.h: 头文件声明变量:

//非模态对话框CShowMsgDlg m_ShowMsgDlg;BOOL m_bCreated;

其中m_bCreated要在构造函数初始化为FALSE。

CMFC04digDlg::CMFC04digDlg(CWnd* pParent /*=nullptr*/)    : CDialogEx(IDD_MFC_04_DIG_DIALOG, pParent)    , m_bCreated(FALSE)  // 初始化为FALSE{    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}

实现部分代码:

void CMFC04digDlg::OnBnClickedButtonNonmod(){    // TODO: 在此添加控件通知处理程序代码    if (!m_bCreated)    {        m_ShowMsgDlg.Create(IDD_DIALOG_ShowMsgDlg, NULL);        m_bCreated = TRUE;    }    m_ShowMsgDlg.ShowWindow(SW_SHOW);}

转载于:https://www.cnblogs.com/17bdw/p/10351830.html

你可能感兴趣的文章
VUE源码解析心得
查看>>
数据结构
查看>>
Oracle数据库的启动与关闭
查看>>
gnome-shell 扩展
查看>>
DDD理论学习系列(9)-- 领域事件
查看>>
Java运行环境的配置(JDK和JRE)
查看>>
nodejs的优点
查看>>
SqlServer 跨库访问
查看>>
About Pull Strings 英语走后门议论文
查看>>
lintcode-111-爬楼梯
查看>>
【HDU4507】恨7不成妻(数位DP)
查看>>
语法小结
查看>>
Python基础之set集合与函数
查看>>
heartbeat 非联网安装(通过配置本地yum文件库安装heartbeat)
查看>>
JavaScript 带给学习者的意外和深入认识
查看>>
利用 Logstash-input-jdbc同步sqlserver数据到elasticsearch
查看>>
优秀的Linux文本编辑器 (转载)
查看>>
Ubuntu下RamDisk使用
查看>>
vi 方向键 ABC
查看>>
ZeroClipboard插件——复制到剪切板
查看>>