zoukankan      html  css  js  c++  java
  • 模态与非模态对话框

    模态与非模态对话框使用

    模态对话框

    模态对话框代码

    CXxxDlg dlg;
    dlg.DoModal()==IDOK
    

    新建对话框绑定类

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

    • 2、绑定为【CLogin】类

    • 3、窗口设计

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

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

    • 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);
    }
    
  • 相关阅读:
    以一道CTF题目看无参数RCE
    浅谈php序列化字符串逃逸问题
    [XCTF 4th] ics-05 复现
    关于Sharp俩打印机AR-1808S和AR-2348SV的共享问题
    关于使用AdventureWorks2008示例数据库之初碰到的问题
    明日科技的SQL Server---6
    ado.net 4 step by step随书数据库
    手欠,大半个下午加一晚上就报销了。
    程序员的SQL金典
    c#读写文件
  • 原文地址:https://www.cnblogs.com/17bdw/p/10351830.html
Copyright © 2011-2022 走看看