MFC学习记录4之Mini系统3
1.增加学生信息和修改学生信息按钮
需要增加一个学号和姓名的静态文本和eidt Contro用来存储并写入学生信息,并添加新增和修改的按钮,如下图所示
然后就是对新增按钮和修改按钮增加相应的事件处理函数:
新增按钮:
void CMiniMsDlg::OnBnClickedButtonAdd()
{
// TODO: 在此添加控件通知处理程序代码
int nId=GetDlgItemInt(IDC_EDT_ID);
CString strName;
GetDlgItemText(IDC_EDT_NAME,strName);
if(strName.GetLength()==0){
AfxMessageBox(_T("学生姓名不能是空白"));
return;
}
if(nId<=0){
AfxMessageBox(_T("学号必须大于0"));
return;
}
//检查学号不能重复
//处理姓名里面的单引号
strName.Replace(_T("'"),_T("''"));
TCHAR szSql[1024]={0};
_stprintf(szSql,_T("insert into Students(StudentId,StudentName) values(%d,'%s')"),nId,strName);
Execute(szSql);
GetDataset();
}
接着就是修改按钮,在加入修改按钮事件之前需要增加一个选中list窗口中的选项,然后将list中选项所对应的内容再显示到对应的编辑框里面,需增加一个“OnLvnItemchangedList1”函数,代码如下:
void CMiniMsDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
if((pNMLV->uChanged & LVIF_STATE)&&(pNMLV->uNewState & LVIS_SELECTED)){
SetDlgItemText(IDC_EDT_ID,(m_list.GetItemText(pNMLV->iItem,0)));
SetDlgItemText(IDC_EDT_NAME,(m_list.GetItemText(pNMLV->iItem,1)));
}
*pResult = 0;
}
最后才可以添加修改按钮事件,代码如下:
void CMiniMsDlg::OnBnClickedButtonEdit()
{
// TODO: 在此添加控件通知处理程序代码
int nIndex=m_list.GetSelectionMark();
if(nIndex<0){
return;
}
int nId=m_list.GetItemData(nIndex);
int nNewId=GetDlgItemInt(IDC_EDT_ID);
CString strNewName;
GetDlgItemText(IDC_EDT_NAME,strNewName);
if(strNewName.GetLength()==0||nNewId<=0){
return;
}
strNewName.Replace(_T("'"),_T("''"));
TCHAR szSql[1024]={0};
_stprintf(szSql,_T("update Students set StudentId=%d,StudentName='%s' where StudentId=%d"),nNewId,strNewName,nId);
Execute(szSql);
GetDataset();
}
至此,整个mini系统都已经结束。
初次写完整个小项目,如有不妥之处,欢迎各位指出不足,并予以纠正,谢谢。