MFC的基本控件的使用~设计一个UI界面(二)

  吃饱喝足(没睡够)之后呢,咱们继续接着上次界面的设计。

现在做个东西都需要登录注册,所以呢咱们就设计个登录注册的界面。

首先打开上次的文件定位到资源视图 找到Dialog文件夹右键插入一个Dialog

插入之后呢 找到新插入的Dialog,把上面的空间全部删除,我们自己来DIY,右键这个Dialog,在属性里修改一下ID,便于区分。

然后在这个Dialog上开始DIY ,所有的控件都是在工具箱里,  左边的数字和右边的数组一一对应,1是文本框显示文本的也可以用来显示图片,2是编辑框用来输入文本的,密码是以加密形式显示的,所以点击这个编辑框右键属性里面找到PassWord这个属性然后设为true,就可以了。3是按钮。  我们对文本框和按钮上面文字的修改,有两种方法,1:直接点击控件输入文字即可,2:点击控件右键属性找到一个叫Caption的在后面输入文本, Tips:可以好好看一下控件的属性。  注册面板也是同样的步骤,这里我就不重复了。

界面设计完之后我们就要开始写代码管理这些控件了。控件是由变量来关联的,而界面是由类关联的。

首先我们先做一下配置,新建一个文档用来存储用户名和密码,在文件目录下新建一个文档起名login后缀为.ini   ,在里面输入用户名和密码 。然后在新建一个类其名为InfoFile 用来读取和写入,在文件目录下新建两个文本文档起名InfoFile后缀分别为.h.cpp 。完成之后回到VS中把这个两个文件引用一下 右键项目添加现有项 选中这两个文件,最后添加就可以了。(一定要注意文件的后缀哦)

创建完成之后 打开InfoFile头文件(.h)

在里面输入代码。

#include <list>
#include <fstream>
#include <iostream>
#include <string>
#include <afxwin.h>

#define _F_LOGIN "./login.ini"


using namespace std;

class CInfoFile
{
public:
    CInfoFile();
    ~CInfoFile();

    //读取登录信息
    void ReadLogin(CString &name, CString &pwd);

};

完成之后再在InfoFile源文件(.cpp)中输入代码

#include "stdafx.h"

#include "InfoFile.h"

CInfoFile::CInfoFile()

{

}

CInfoFile::~CInfoFile()

{

}

    //读取登录信息

void CInfoFile::ReadLogin(CString & name, CString & pwd)

{

    //创建文件输入对象

    ifstream ifs;

    //打开文件

    ifs.open(_F_LOGIN);

    char buf[1024] = { 0 };

    //读取一行内容

    ifs.getline(buf, sizeof(buf));

    //char* 转换为CString

    name = CString(buf);

    ifs.getline(buf, sizeof(buf));

    pwd = CString(buf);

    //关闭文件

    ifs.close();

}

完成之后下面给按钮添加事件,回到登录界面,然后双击登陆按钮会直接进入到脚本中,就直接创建了按钮的点击事件。

然后在方法里面添加我们的判断事件。不过要先引用InfoFile的头文件。在脚本中最上面引用一下。

//登录按钮点击事件
void CLoginDlg::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码

    //把控件中的值更新到变量中
    UpdateData(TRUE);

    ////把变量更新到控件中   这两个要好好区分一下哦
    //UpdateData(FALSE)

    if (c_user.IsEmpty() || m_psd.IsEmpty())
    {
        //消息提示框
        MessageBox(TEXT("用户名或密码不能为空"));
        return;
    }

    CInfoFile file;
    CString user, psd;
    //读取信息
    file.ReadLogin(user, psd);
    if (user == c_user)
    {
        if (psd == m_psd)
        {
            //关闭当前窗口
        DialogBox:OnCancel();
        }
        else
        {
            MessageBox(TEXT("密码输入错误"));
        }
    }
    else
    {
        MessageBox(TEXT("用户名输入错误"));
    }

}

然后现在就可以运行一下看一下效果。

输入用户名,密码点击登录 是不是就进去了呢,不过不论你输不输入用户名密码 ,直接敲击回车或者点击X号的话是不是也直接进入下一个窗口了呢。所以我们就先解决一下这个Bug.

首先是回车问题: 回到类视图中找到CLoginDlg 文件  ,右键属性 在属性页中,点击重写,找到回车对应的事件 OnOk 添加这个事件。会直接进入到这个事件中。把他的returnCDialogEx::OnOK() 注释掉 就解决了。

下面来解决X号问题:

还是这个界面右键属性 ,不过这个是点击消息,然后找到WM_CLOSE 添加这个事件,然后把它自带的事件注销掉,我们仍然DIY    添加一句exit(0);   就解决了。

再运行一下是不是这两个小Bug已经解决了呢。

好了 ,到这里先把登录事件写完,下一篇在写注册事件。

MFC的基本控件的使用~设计一个UI界面(三)

猜你喜欢

转载自blog.csdn.net/fineboby/article/details/89703281