MFC登陆窗口

自己写的一个可以从TXT文件中读到用户名和密码的登陆窗口




BOOL CLadingtextDlg::OnInitDialog()
{


// TODO: Add extra initialization here

CStringArray ary_ALL;//存密码用户名
CString path;
CStringArray aryString;
path="userInfo.txt";
CDialog::OnInitDialog();
LoadStdioFileToStringArray( path, ary_ALL);
GetValue(ary_ALL);
OnInitComboBox();

return TRUE;  // return TRUE  unless you set the focus to a control
}

//保存文件--不过我没用到先写这大笑
bool CLadingtextDlg::SaveStdioFileFromStringArray(CString path, CStringArray &ary_ALL, bool bTrimSpace)
{

CStdioFile f;
if(!f.Open(path, CFile::modeWrite | CFile::modeCreate| CFile::typeText))
return false;

CString str;
for(int i=0;i<ary_ALL.GetSize();i++)
{
CString tmp=ary_ALL[i];

if(bTrimSpace)
{
tmp.TrimLeft();
tmp.TrimRight();
if(tmp=="")
continue;
}

str.Format("%s\n",ary_ALL[i]);
f.WriteString(str);
}
f.Close();

return true;
}

//分割字符串
int CLadingtextDlg::SplitString(CString c,CString str,CStringArray& aryString)//分割
{
aryString.RemoveAll();
while(str.GetLength())
{
int pos=str.Find(c,0);
if(pos==-1)
{
aryString.Add(str);
break;
}
else
{
CString s=str.Left(pos);
aryString.Add(s);
str=str.Right(str.GetLength()-pos-c.GetLength());
if(str=="")
aryString.Add("");
}
}
return aryString.GetSize();
}

//读文件并将文件内容存到 ary_ALL 中
bool CLadingtextDlg::LoadStdioFileToStringArray(CString path,CStringArray& ary_ALL)
{
CStdioFile f;
if(!f.Open(path, CFile::modeRead| CFile::typeText))

{

return false;

}
ary_ALL.RemoveAll();
while(f.ReadString(str))
{
ary_ALL.Add(str);
}

f.Close();

return true;
}


void CLadingtextDlg::OnOK() 
{
// TODO: Add extra validation here
this->UpdateData(true);
if(Opinion())
{
CDialog::OnOK();
AfxMessageBox("登陆成功!!!");
}
else
{
AfxMessageBox("请从新输入密码!!!");
}


GotoDlgCtrl(GetDlgItem(IDC_EDIT_PWD));//指定光标回到文本编辑框中
GetDlgItem(IDC_EDIT_PWD)->SetWindowText(_T(""));消除现有所有内容

}


bool CLadingtextDlg::Opinion()
{
bool isOk=1;
int nIndex=m_COMBO_N.GetCurSel();//当前选中的项
CString rString;
m_COMBO_N.GetLBText(nIndex,rString);//将得到的内容保存在rString中
for(int i=0;i<m_ary_User.GetSize();i++)
{
if(this->m_ary_User.GetAt(i)==rString)
{
if(this->m_EDIT_P==m_ary_Pwd.GetAt(i))
{
return isOk;
}
else
{
return !isOk;
}
break;
}
}
return false;
}


void CLadingtextDlg::OnInitComboBox()//初始化控件
{  
((CComboBox*)GetDlgItem(IDC_COMBO2))->ResetContent();//消除现有所有内容
for(int u=0;u<m_ary_User.GetSize();u++)
{
CString strTemp;
strTemp.Format("%s",m_ary_User.GetAt(u));
((CComboBox*)GetDlgItem(IDC_COMBO2))->AddString(strTemp);
}
//判断
if(m_ary_User.GetSize()>0)
{
((CComboBox*)GetDlgItem(IDC_COMBO2))->SetCurSel(0);//设置第1行内容为显示的内容。
}
else
{
MessageBox("请先添加用户信息!!!");
this->SendMessage( WM_CLOSE);
}

}
//将TXT中的内容按Tab键分割保存到m_ary_User和m_ary_Pwd中
void CLadingtextDlg::GetValue(CStringArray &ary_ALL)//赋值
{
CStringArray aryString;
for(int i=0;i<ary_ALL.GetSize();i++)
{
aryString.RemoveAll();//清空
SplitString("\t", ary_ALL.GetAt(i), aryString);
//判断
if(aryString.GetSize()==2)
{
m_ary_User.Add(aryString[0]);
m_ary_Pwd.Add(aryString[1]);
}
else
{
if(MessageBox( "添加用户名密码格式错误!!\n退出修改请按是,继续请安否", 
"提示", MB_YESNO | MB_ICONQUESTION ) == IDYES) 
{
this->SendMessage( WM_CLOSE);

}

}

}


头文件中声明成员变量

CString str;
CStringArray m_ary_User;//存用户名
CStringArray m_ary_Pwd;//存密码

配置 文件要放到你写的项目的同目录下

完成效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值