zoukankan      html  css  js  c++  java
  • MFC中 给基于对话框的应用程序添加登陆界面

    给基于对话框的应用程序添加登陆界面,也就是增加一个新的对话框。

    在一般的基于对话框的应用程序的CXXXApp.cpp中都会有:

    CXXXDlg dlg;              //程序的主对话框

     m_pMainWnd = &dlg;         //设置为主对话框,也就是所主对话框的结束也就意味着程序的结束

     INT_PTR nResponse = dlg.DoModal();  //弹出主对话框

     if (nResponse == IDOK)  //根据对话框的返回值设置要执行的操作

     {...  }  

    else if (nResponse == IDCANCEL)

     {...  }

    现在就来开始添加登陆界面:

    1、先建好新的登陆对话框类CLoginDlg(MFC类,基于CDialog的),生成.cpp和.h文件。

    2、在资源视图里绘制好登陆界面的内容:可以输入用户名和密码的编辑框,登入和退出按钮。

    3、利用类向导给用户名和密码的两个编辑框分别关联变量:

                   m_InUser ,m_InPassword。

    4、在给登陆按钮添加消息响应函数OnBnClickedOk(),并添加代码如下:

    void CLoginDlg::OnBnClickedOk()
    {
        // TODO: 在此添加控件通知处理程序代码
        CDialog::OnOK();
    
        //获取用户名和密码
        m_InUser.GetWindowText(m_InLoginname);
    m_InPassword.GetWindowText(m_Password);
    //判断用户名和密码 if((m_Loginname == "")||(m_Password == "")) { AfxMessageBox(L"请输入用户名和密码!"); } else if(m_Loginname == L"lxt" && m_Password == L"123") { m_SuccessLogin = true; this->EndDialog(1); } else { AfxMessageBox(L"错误的帐号或密码,请重新输入!"); return; } }

    5、给突出按钮添加消息响应函数OnBnClickedCancel():

    void CLoginDlg::OnBnClickedCancel()
    {
        // TODO: 在此添加控件通知处理程序代码
        CDialog::OnCancel();
        m_bCancle = true;
    }

    6、在LoginDlg.h里声明:

     BOOL m_bCancle;
     BOOL m_SuccessLogin;

    7、在LoginDlg.cpp里初始化:

      m_bCancle = false;
      m_SuccessLogin = false;

    8、在CXXXApp.cpp中,将最上边的代码替换成:

    p:
        CLoginDlg dlg_login;    //建立登陆对话框对象
        dlg_login.DoModal();   //弹出登陆对话框
    
        if(dlg_login.m_SuccessLogin)
        {
            CXXXDlg dlg; //建立主应用程序对话框对象
            m_pMainWnd = &dlg;           //设置dlg为主对话框
            INT_PTR nResponse = dlg.DoModal();    //弹出主对话框
            if (nResponse == IDOK)   //根据主对话框返回值选择操作
            {
                // TODO: 在此处放置处理何时用“确定”来关闭
                //  对话框的代码
            }
            else if (nResponse == IDCANCEL)
            {
                // TODO: 在此放置处理何时用“取消”来关闭
                //  对话框的代码
            }
        }
        else
        {
            if(!dlg_login.m_bCancle)
            {
                goto p;
            }
            delete(m_pMainWnd);
            m_pMainWnd = NULL;
            return FALSE; 
        }

     大功告成~~~ ^_^

     

  • 相关阅读:
    《算法导论》读书笔记之第16章 贪心算法—活动选择问题
    C语言综合实验1—学生信息管理系统
    《算法导论》读书笔记之第15章 动态规划[总结]
    《算法导论》读书笔记之第11章 散列表
    模板类中定义list<T>::iterator iter在g++下不识别的解决办法
    C语言参考程序—无符号一位整数的四则运算
    《算法导论》读书笔记之第15章 动态规划—最优二叉查找树
    C语言综合实验2—长整数运算
    递归与尾递归总结
    《算法导论》读书笔记之第13章 红黑树
  • 原文地址:https://www.cnblogs.com/lxt287994374/p/3108779.html
Copyright © 2011-2022 走看看