博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC中 给基于对话框的应用程序添加登陆界面
阅读量:4975 次
发布时间:2019-06-12

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

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

在一般的基于对话框的应用程序的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;     }

 

 大功告成~~~ ^_^

 

转载于:https://www.cnblogs.com/lxt287994374/archive/2013/05/30/3108779.html

你可能感兴趣的文章
裁剪图片
查看>>
数据结构实习 problem L 由二叉树的中序层序重建二叉树
查看>>
VS中展开和折叠代码
查看>>
如何确定VS编译器版本
查看>>
设置PL/SQL 快捷键
查看>>
个人阅读作业7
查看>>
转载:深入浅出Zookeeper
查看>>
GMA Round 1 新程序
查看>>
node anyproxy ssi简易支持
查看>>
编译预处理指令:文件包含指令、宏定义指令、条件编译指令
查看>>
PHP函数 ------ ctype_alnum
查看>>
网站安全
查看>>
WS-Addressing 初探
查看>>
.NET+模块编排+数据库操作类的封装+分层架构+实体类+Ajax.net+Athem.NET+javascript+Activex组件+用户权限等...
查看>>
Markdown不常见功能
查看>>
(二)NUnit单元测试心得
查看>>
hdu_2604Queuing(快速幂矩阵)
查看>>
frame.bounds和center
查看>>
HDU 1102 Constructing Roads
查看>>
android StaticLayout参数解释
查看>>