📄 manager.cpp
字号:
m_ListNumber=6;
RECT rect;
m_List.GetWindowRect(& rect);
int wid=(rect.right -rect.left )/5;
m_List.SetColumnWidth(0,wid);
m_List.SetColumnWidth(1,wid);
m_List.SetColumnWidth(2,wid);
m_List.SetColumnWidth(3,wid);
m_List.SetColumnWidth(4,wid);
m_List.SetExtendedStyle (LVS_EX_FULLROWSELECT);
break;}
case 3:
{
m_List.InsertColumn (0,"用户名");
m_List.InsertColumn (1,"真实姓名");
m_List.InsertColumn (2,"部门");
m_List.InsertColumn (3,"联系电话");
m_List.InsertColumn (4,"注册日期");
m_List.InsertColumn (5,"详细信息");
m_ListNumber=6;
RECT rect;
m_List.GetWindowRect(& rect);
int wid=(rect.right -rect.left )/5;
m_List.SetColumnWidth(0,wid);
m_List.SetColumnWidth(1,wid);
m_List.SetColumnWidth(2,wid);
m_List.SetColumnWidth(3,wid);
m_List.SetColumnWidth(4,wid);
m_List.SetExtendedStyle (LVS_EX_FULLROWSELECT);
m_IndexTo=0;
m_Indexpoint=0;
break; }
}
}
void CManager::OnCancel()
{
// TODO: Add your control notification handler code here
if(m_DelSum>0)DeleteRemain();
m_PreType=3;
CDialog::OnCancel ();
}
/*
void CManager::OnContextMenu(CWnd* pWnd, CPoint point)
{
//判断鼠标是否在列表框中,是则显示弹处菜单。
m_ptMsg=point;
CRect rect;
GetDlgItem(IDC_LIST1)->GetWindowRect(rect);
if((point.x<rect.right && point.x>rect.left) &&(point.y<rect.bottom && point.y>rect.top))
{
CMenu myPopupMenu;
myPopupMenu.LoadMenu (IDR_POPUPMENU);
CMenu *pPopup=myPopupMenu.GetSubMenu (0);
pPopup->EnableMenuItem(IDR_ACCEPT, MF_DISABLED|MF_BYPOSITION);
pPopup->EnableMenuItem(IDR_ACCEPT, MF_DISABLED|MF_BYPOSITION);
pPopup->EnableMenuItem(IDR_DEL, MF_DISABLED|MF_BYPOSITION);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
}
//UpdateData();
}
*/
void CManager::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
POSITION pos=m_List.GetFirstSelectedItemPosition();//是否选中记录
if(pos==NULL){GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
return;}
// 显示改状态的相关对话
m_Content=_T("");
UpdateData(false);
if(m_treatType==2 ||m_treatType==4)
{GetDlgItem(IDC_BUTTON6)->EnableWindow(false);return;}
GetDlgItem(IDC_BUTTON6)->EnableWindow(true);//是发送信息框使能
int i=m_List.GetSelectionMark();
CString SelectMSG=m_List.GetItemText(i,m_Indexpoint);
SelectMSG.TrimRight (" ");
CString mysql,mystr1,mystr2,mystr3,mystr4,laststr;
mysql.Format("SELECT * FROM MessageMap WHERE 征对状态 = '%s' ORDER BY 发出日期",SelectMSG);
if(m_treatType==3)
mysql.Format("SELECT * FROM MessageMap WHERE 消息类别 = '通知' OR 消息类别='回复通知' OR 征对状态 = '%s' ORDER BY 发出日期",SelectMSG);
_bstr_t sql=mysql;
_bstr_t source=m_strSource;
_RecordsetPtr Myset;
Myset.CreateInstance (__uuidof(Recordset));
try{
Myset->Open (sql,source,adOpenDynamic,adLockOptimistic,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage ());return;
}
_variant_t Holder;
while(!Myset->adoEOF ){
Holder=Myset->GetCollect ("发出用户");
if(Holder.vt!=VT_NULL)
{mystr1=(char*)(_bstr_t)Holder;
mystr1.TrimRight (" ");}
else
mystr1="未知姓名";
Holder=Myset->GetCollect ("征对用户");
if(Holder.vt!=VT_NULL)
{mystr2=(char*)(_bstr_t)Holder;
mystr2.TrimRight (" ");}
else
mystr2="未知姓名";
Holder=Myset->GetCollect ("内容");
if(Holder.vt!=VT_NULL)
{mystr3=(char*)(_bstr_t)Holder;
mystr3.TrimRight (" ");}
else
mystr3="未知姓名";
Holder=Myset->GetCollect ("发出日期");
if(Holder.vt!=VT_NULL)
{mystr4=(char*)(_bstr_t)Holder;
mystr4.TrimRight (" ");}
else
mystr4="未知日期";
laststr.Format ("%s对%s说:%s %s",mystr1,mystr2,mystr3,mystr4);
//m_Dialog.AddString(laststr);
m_Content=m_Content+"\n"+laststr;
Myset->MoveNext ();}
UpdateData(false);
*pResult = 0;
}
void CManager::OnReplyUser()
{
// TODO: Add your control notification handler code here
if(m_DelSum>0)DeleteRemain();
m_PreType=3;
UpdateData();
if(m_ReplyStr.IsEmpty()){AfxMessageBox("你没有输入回复的信息,请确认输入!");return;}
CString MsgNumber,MsgText,MsgFrom,MsgTo,MsgPoint,MsgType,MsgDate;
int i=m_List.GetSelectionMark();
CTime tm=CTime::GetCurrentTime ();
MsgDate.Format("%d-%d-%d",tm.GetYear (),tm.GetMonth (),tm.GetDay());
MsgNumber.Format("MSG%d%02d%02d%02d%02d%02d",tm.GetYear (),tm.GetMonth (),tm.GetDay(),tm.GetHour(),tm.GetMinute(),tm.GetSecond ());
MsgText=m_ReplyStr;
MsgFrom="管理员";
MsgTo=m_List.GetItemText(i,m_IndexTo);
MsgPoint=m_List.GetItemText(i,m_Indexpoint);
MsgType="回复";
CString sql_;
sql_.Format ("INSERT INTO MessageMap (消息号,消息类别,内容,发出用户,征对用户,征对状态,发出日期) VALUES('%s','%s','%s','%s','%s','%s','%s')",MsgNumber,MsgType,MsgText,MsgFrom,MsgTo,MsgPoint,MsgDate);
_bstr_t sql=sql_;
try{
m_DBCnt->Execute (sql,NULL,adCmdText);}
catch (_com_error &e){
AfxMessageBox(e.ErrorMessage()); return;}
CString str2;
str2.Format ("管理员,你的信息已成功输入!",PublicUserName);
AfxMessageBox(str2);
m_ReplyStr=_T("");
UpdateData(false);
}
void CManager::OnNotify()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_ReplyStr.IsEmpty()){AfxMessageBox("你没有输入通知信息,请确认输入!");return;}
CString MsgNumber,MsgText,MsgFrom,MsgTo,MsgPoint,MsgType,MsgDate;
int i=m_List.GetSelectionMark();
CTime tm=CTime::GetCurrentTime ();
MsgNumber.Format("MSG%d%02d%02d%02d%02d%02d",tm.GetYear (),tm.GetMonth (),tm.GetDay(),tm.GetHour(),tm.GetMinute(),tm.GetSecond ());
MsgDate.Format ("%d-%02d-%02d-%02d-%02d",tm.GetYear (),tm.GetMonth(),tm.GetDay (),tm.GetHour(),tm.GetMinute());
MsgText=m_ReplyStr;
MsgFrom="管理员";
MsgTo="所有用户";
MsgPoint="无状态";
MsgType="通知";
CString sql_;
sql_.Format ("INSERT INTO MessageMap (消息号,消息类别,内容,发出用户,征对用户,征对状态,发出日期) VALUES('%s','%s','%s','%s','%s','%s','%s')",MsgNumber,MsgType,MsgText,MsgFrom,MsgTo,MsgPoint,MsgDate);
_bstr_t sql=sql_;
if(m_DBCnt->GetState ()==adStateOpen){
try{
m_DBCnt->Execute (sql,NULL,adCmdText);}
catch (_com_error &e){
AfxMessageBox(e.ErrorMessage()); return;}}
CString str2;
str2.Format ("管理员,你的通知信息已成功输入!",PublicUserName);
GetDlgItem(IDC_EDIT2)->SetWindowText("");
AfxMessageBox(str2);
}
void CManager::OnBorrowLend()
{
// TODO: Add your control notification handler code here
CChat dlg;
this->ShowWindow(SW_HIDE);
dlg.DoModal ();
this->ShowWindow (SW_SHOW);
}
void CManager::OnAccept() //批准申请
{
POSITION pos=m_List.GetFirstSelectedItemPosition();//判断是否选中记录
if(pos==NULL){AfxMessageBox("没有选中记录",MB_ICONEXCLAMATION);return;}
CString y[11];
int i=m_List.GetSelectionMark();//写入交易记录
CTime tm=CTime::GetCurrentTime ();
CString strDate,strGeshi,strUser,strApplyNumber,strApplyType,strSoftName,strNumber;
CString InputStr,ChatNumber;//交易编号
ChatNumber.Format("CH%d%02d%02d%02d%02d1",tm.GetYear (),tm.GetMonth (),tm.GetDay(),tm.GetHour(),tm.GetMinute());
strDate.Format ("%d-%d-%d %d:%d",tm.GetYear(),tm.GetMonth (),tm.GetDay(),tm.GetHour(),tm.GetMinute());
strUser=m_List.GetItemText (i,0);
strApplyType=m_List.GetItemText (i,1);
strSoftName=m_List.GetItemText (i,2);
strGeshi=m_List.GetItemText (i,3);
strNumber=m_List.GetItemText (i,4);
strApplyNumber=m_List.GetItemText (i,6);
//开始事务
try{
m_DBCnt->BeginTrans();
CString sql2_,sql1_,sql3_;
sql2_.Format("INSERT INTO ChatInfo(交易编号,用户名,软件名称,格式,软件编号,交易类别,交易时间) VALUES('%s','%s','%s','%s','%s','%s','%s')",ChatNumber,strUser,strSoftName,strGeshi,strNumber,strApplyType,strDate);
_bstr_t sql2=sql2_;
try{//交易纪录
m_DBCnt->Execute(sql2,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage());return;}
//操作日志
CString str1;
str1+="文档";
if(m_Log.Setup (m_DBCnt))
m_Log.Addlog (strUser,str1,strSoftName);
//写入软件修改信息
InputStr=(strApplyType=="借")?strUser:"在家";//软件信息
sql1_.Format ("UPDATE SoftDocInfo SET %s = '%s' WHERE 软件编号 = '%s'",strGeshi,InputStr,strNumber);
_bstr_t sql1=sql1_;
try{
m_DBCnt->Execute(sql1,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage());return;}
sql3_.Format ("delete from ApplyTable where 申请号 = '%s'",strApplyNumber);
_bstr_t sql3=sql3_;
try{
m_DBCnt->Execute(sql3,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage());return;}
m_DBCnt->CommitTrans();
}
catch(_com_error& e)
{AfxMessageBox("数据操作失败!");
m_DBCnt->RollbackTrans();return;}
CString OutPutString;
OutPutString.Format ("管理员,用户%s的信息已成功输入!",strUser);
AfxMessageBox(OutPutString);
m_List.DeleteItem (i);
}
void CManager::OnCopy()
{
// TODO: Add your command handler code here
POSITION pos=m_List.GetFirstSelectedItemPosition();//判断是否选中记录
if(pos==NULL){AfxMessageBox("没有选中记录",MB_ICONEXCLAMATION);return;}
CString mystr;
int i=m_List.GetSelectionMark();
for(int j=0;j<m_ListNumber;j++)
{mystr+=m_List.GetItemText(i,j);
mystr+=" ";
}
::OpenClipboard(this->m_hWnd);
::EmptyClipboard();
HGLOBAL h=GlobalAlloc(GHND|GMEM_SHARE,mystr.GetLength()+1);
strcpy((LPSTR)GlobalLock(h),mystr);
GlobalUnlock(h);
::SetClipboardData(CF_TEXT,h);
::CloseClipboard();
}
void CManager::OnDel()
{
// TODO: Add your command handler code here
POSITION pos=m_List.GetFirstSelectedItemPosition();//判断是否选中记录
if(pos==NULL){AfxMessageBox("没有选中记录",MB_ICONEXCLAMATION);return;}
if(m_treatType==3){
CString sql_,ApplyNumber;
int i=m_List.GetSelectionMark ();
ApplyNumber=m_List.GetItemText (i,0);
sql_.Format ("delete from UserInfo where 用户名 ='%s'",ApplyNumber);
_bstr_t sql2=sql_;
try{m_DBCnt->Execute(sql2,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage ());return;
}
AfxMessageBox("你已经彻底删除了用户信息,将不可恢复!");
return;}//删除记录
int i,j;
if(m_DelSum==3)
DeleteFirst();//删除最先第一个记录
int n=(m_DelSum==3)?1:m_DelSum+1;
int m=b[n]*10;//本条记录应该保存的位置
if(m_treatType==0 || m_treatType==1 ||m_treatType==3){//状态汇报删除管理
i=m_List.GetSelectionMark ();
for(j=0;j<m_ListNumber;j++)
a[m+j]=m_List.GetItemText (i,j);//保存数据
m_List.DeleteItem (i);
int NowNumber=m_DelSum;
m_DelSum=(m_DelSum==3)?3:m_DelSum+1;//保存删除的记录数
if(NowNumber<3)b[NowNumber+1]=NowNumber;
else
{b[m_DelSum]=b[n];
for(j=1;j<m_DelSum+1;j++)//保存删除的顺序
b[j-1]=b[j];
}
AfxMessageBox("用户的申请记录已成功删除,如果操作错误,请选择'恢复删除'");
return;}
}
void CManager::OnUndo()
{
// TODO: Add your command handler code here
int i,j=m_List.GetSelectionMark ();
if(m_DelSum>0){
int NowNumber=10*b[m_DelSum];
m_List.InsertItem (j,a[NowNumber]);
for(i=0;i<m_ListNumber+1;i++)
m_List.SetItemText (j,i,a[NowNumber+i]);
m_DelSum-=1;}
}
void CManager::OnChatRec()
{
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(false);
((CButton*)GetDlgItem(IDC_RADIO2))->SetCheck(false);
((CButton*)GetDlgItem(IDC_RADIO3))->SetCheck(false);
((CButton*)GetDlgItem(IDC_RADIO4))->SetCheck(false);
GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
UpdateData();
m_treatType=4;
m_List.DeleteAllItems ();//初始化列表筐
for (int i=m_ListNumber-1;i>-1;i--)
m_List.DeleteColumn(i);
m_List.InsertColumn (0,"交易号");
m_List.InsertColumn (1,"用户名");
m_List.InsertColumn (2,"软件名称");
m_List.InsertColumn (3,"格式");
m_List.InsertColumn (4,"交易类别");
m_List.InsertColumn (5,"软件编号");
m_List.InsertColumn (6,"交易时间");
m_ListNumber=7;
RECT rect;
m_List.GetWindowRect(& rect);
int wid=(rect.right -rect.left )/5;
m_List.SetColumnWidth(0,wid);
m_List.SetColumnWidth(1,wid);
m_List.SetColumnWidth(2,wid);
m_List.SetColumnWidth(3,wid);
m_List.SetColumnWidth(4,wid);
m_List.SetExtendedStyle (LVS_EX_FULLROWSELECT);
m_List.SetRedraw (false);
if(m_DelSum>0)DeleteRemain();//删除被删除项
m_PreType=4;
//初始化数据原
CString mysql;
mysql.Format("SELECT * FROM ChatInfo");
_bstr_t sql=mysql;
_bstr_t source=m_strSource;
_RecordsetPtr Myset;
Myset.CreateInstance (__uuidof(Recordset));
try{
Myset->Open (sql,source,adOpenDynamic,adLockOptimistic,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage ());
}
CString str1;
_variant_t Holder;
i=0;
while(!Myset->adoEOF ){
Holder=Myset->GetCollect ("交易编号");
if(Holder.vt!=VT_NULL)
m_List.InsertItem (i,(char*)(_bstr_t)Holder);
Holder=Myset->GetCollect ("用户名");
if(Holder.vt!=VT_NULL)
m_List.SetItemText (i,1,(char*)(_bstr_t)Holder);
else
m_List.SetItemText (i,1,"未知用户名");
Holder=Myset->GetCollect ("软件名称");
if(Holder.vt!=VT_NULL)
m_List.SetItemText (i,2,(char*)(_bstr_t)Holder);
else
m_List.SetItemText (i,2,"未知软件");
Holder=Myset->GetCollect ("格式");
if(Holder.vt!=VT_NULL)
m_List.SetItemText (i,3,(char*)(_bstr_t)Holder);
else
m_List.SetItemText (i,3,"未知格式");
Holder=Myset->GetCollect ("交易类别");
if(Holder.vt!=VT_NULL)
m_List.SetItemText (i,4,(char*)(_bstr_t)Holder);
else
m_List.SetItemText (i,4,"未知类别");
Holder=Myset->GetCollect ("软件编号");
if(Holder.vt!=VT_NULL)
m_List.SetItemText (i,5,(char*)(_bstr_t)Holder);
else
m_List.SetItemText (i,5,"未知编号");
Holder=Myset->GetCollect ("交易时间");
if(Holder.vt!=VT_NULL)
m_List.SetItemText (i,6,(char*)(_bstr_t)Holder);
else
m_List.SetItemText (i,6,"未知时间");
i+=1;
Myset->MoveNext ();
}
Myset->Close();
m_List.SetRedraw (true);
}
void CManager::OnBorrowReturn()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
if(m_DelSum>0)DeleteRemain();
m_PreType=1;
((CButton*)GetDlgItem(IDC_RADIO5))->SetCheck(false);
InitList();
m_DelSum=0;
b[1]=b[0]=b[4]=b[5]=b[6]=0;
b[2]=1;
b[3]=2;
m_List.SetRedraw (false);
CString mysql;
mysql.Format("SELECT * FROM ApplyTable ORDER BY 申请号");
_bstr_t sql=mysql;
_bstr_t source=m_strSource;
_RecordsetPtr Myset;
Myset.CreateInstance (__uuidof(Recordset));
try{
Myset->Open (sql,source,adOpenDynamic,adLockOptimistic,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage ());return;
}
CString str1,mystr;
_variant_t Holder;
int i=0;
while(!Myset->adoEOF ){
Holder=Myset->GetCollect ("用户名");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.InsertItem (i,mystr);}
else
m_List.InsertItem (i,"未知用户名");
Holder=Myset->GetCollect ("申请类别");//
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
m_List.SetItemText (i,1,mystr);}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -