自己写的一个可以从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;//存密码
配置 文件要放到你写的项目的同目录下
完成效果