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);
    }
    
  • 相关阅读:
    javaWeb下载
    javaWeb上传
    JavaWeb过滤器
    JavaWeb中的监听器
    数据库dbutils
    数据库连接池
    51nod 1837 砝码称重【数学,规律】
    Codeforces Round #437 (Div. 2)[A、B、C、E]
    Codeforces Round #436 (Div. 2)【A、B、C、D、E】
    Codeforces Round #435 (Div. 2)【A、B、C、D】
  • 原文地址:https://www.cnblogs.com/17bdw/p/10351830.html
Copyright © 2011-2022 走看看