第1节 登录对话框与主对话框组合
大部分网络软件,甚至单机版软件都具有登录功能,当账号和密码匹配时才能进入程序主窗口。如果账号和密码一直不能匹配则一直无法进入,最后只能选择退出软件。
使用MFC应用程序向导,创建一个工程名为“QQ”的对话框程序。
1)在资源视图中的Dialog上单击鼠标右键,在弹出的快捷菜单中,选择“Insert Dialog”命令,添加一个新的对话框资源作为登录对话框,如图5-1所示。
2)修改对话框的ID为IDD_LOGIN_DLG,标题为“登录”,并修改字体和外观,如图5-2所示。

图5-1 插入新对话框资源

图5-2 编辑登录对话框
3)添加一些控件并修改控件的属性,见表5-1。
表5-1 “登录”对话框的控件属性

4)在“登录”对话框上单击鼠标右键,在弹出的快捷菜单中,选择“ClassWizard”命令,或按快捷键<Ctrl+W>,如图5-3所示。
5)通过类向导为IDD_LOGIN_DLG建立一个对话框类“CLoginDlg”,如图5-4所示。

图5-3 打开类向导
(https://www.daowen.com)
图5-4 创建登录对话框的关联类
6)在登录对话框资源中双击“登录”按钮,建立消息映射函数OnOK并编写代码。

7)修改App类中的进程启动函数InitInstance的代码。

8)在主对话框资源内添加一个按钮,ID为IDC_LOGIN,标题为“重新登录”,如图5-5所示。

图5-5 编辑主对话框
9)双击“重新登录”按钮建立消息映射函数,并编写代码。

10)编译并运行,测试代码,如图5-6所示。

图5-6 查看运行结果
在CLoginDlg::OnOK函数中,只有输入正确的用户名和密码才能执行基类函数CDialog::OnOK,结束阻塞函数ldlg.DoModal并返回IDOK;如果单击“退出”按钮执行的是基类函数CDialog::OnCancel,则结束阻塞函数ldlg.DoModal并返回IDCANCEL。在InitInstance函数中根据返回值判断,如果是IDCANCEL则程序不进入主对话框而直接退出进程。