🌸 MFC工资系统
1。新建MFC项目(基于对话框、静态库)
2。添加控件,删除初始的3个多余控件
加3个static_text ,其caption分别是工号、名字、工资
加3个edit_control,其ID 分别为IDC_EDIT1、IDC_EDIT2、IDC_EDIT3(默认)
加3个按钮,修改caption为ADD,DEL,MODIFY
加一个List_control,其ID 为IDC_LIST1(默认),属性View修改为report,添加变量:IDC_LIST1变量名为pList,IDC_EDIT1~3分别为Num、Name、Money。
3。添加代码
双击按钮1,添加代码:
void CMFCApplication9Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString Num,Name,Money;
GetDlgItemText(IDC_EDIT1, Num);
GetDlgItemText(IDC_EDIT2, Name);
GetDlgItemText(IDC_EDIT3, Money);
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST1);
int nCount = pList->GetItemCount();//从尾部插入
pList->InsertItem(nCount, Num);
pList->SetItemText(nCount, 1, Name);
pList->SetItemText(nCount, 2, Money);
}
同理添加按钮2,3的代码
void CMFCApplication9Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST1);
int nSel = pList->GetSelectionMark();//基于虚线选中
if (nSel<0){
AfxMessageBox(L"请先选中一行再进行删除!");
return;
}
pList->DeleteItem(nSel);
}
void CMFCApplication9Dlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST1);
int nSel = pList->GetSelectionMark();//基于虚线选中
if (nSel < 0) {
AfxMessageBox(L"请先选中一行再进行修改!");
return;
}
CString Num, Name, Money;
GetDlgItemText(IDC_EDIT1, Num);
if (IDNO == AfxMessageBox(L"确认修改工号:" + Num + L"的数据么?", MB_YESNO)) return;
GetDlgItemText(IDC_EDIT2, Name);
pList->SetItemText(nSel, 1, Name);
GetDlgItemText(IDC_EDIT3, Money);
pList->SetItemText(nSel, 2, Money);
}
获取List控件的ID,然后在控件中添加列名:工号,姓名,工资:
BOOL CMFCApplication9Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST1);
pList->InsertColumn(0, L"工号", 0, 120);
pList->InsertColumn(1, L"姓名", 0, 160);
pList->InsertColumn(2, L"工资(万元)", 0, 180);
/*...*/
}
4。运行
运行结果:
可以添加员工的工号,姓名,工资,通过工号选中删除的员工,修改选中的员工。
ERROR
ERROR:无法将参数转换为LPCTSTR
解决方法:还是字符串前加L
🌸 MFC登录系统
1。新建mfc项目,项目名qq
2。资源视图 根文件夹右键添加Dlg资源IDD_DIALOG1
3。在DIALOG1添加控件
2个static_text 账号、密码
2个Edit control
4。双击一个按钮,创建类,类名为CLoginDlg
5。双击按钮,进入CLoginDlg.cpp添加代码
void CLoginDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CString Name, Pass;
GetDlgItemText(IDC_EDIT1, Name);
GetDlgItemText(IDC_EDIT2, Pass);
Name.MakeLower();
if(Name=="admin"&& Pass=="123456")
CDialog::OnOK();
else {
AfxMessageBox(L"账号or密码错误,请重新输入");
SetDlgItemText(IDC_EDIT1, L"");
SetDlgItemText(IDC_EDIT2, L"");
GetDlgItem(IDC_EDIT1)->SetFocus();
}
}
6。在qq.cpp中修改代码
#include "LoginDlg.h"
BOOL CqqApp::InitInstance()
{
//...
// TODO: 应适当修改该字符串,
CLoginDlg idlg;
if (idlg.DoModal() == IDCANCEL) return FALSE;
// 例如修改为公司或组织名
//...
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用
return FALSE;
// “取消”来关闭对话框的代码
}
//...
}
7。在主对话框IDC_QQ_DIALOG中新建按钮,caption为重新登陆,双击按钮,添加代码
#include "LoginDlg.h"
void CqqDlg::OnBnClickedDialog1()
{
// TODO: 在此添加控件通知处理程序代码
ShowWindow(SW_HIDE);
CLoginDlg dlg;
if (dlg.DoModal() == IDCANCEL)
OnCancel();
else
ShowWindow(SW_SHOW);
}
8。运行,结果如下:
账号admin密码123456