📄 chat.cpp
字号:
// Chat.cpp : implementation file
//
#include "stdafx.h"
#include "SoftDocSystem.h"
#include "Chat.h"
#include "Rrypt.h"
#include "LogMngr.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CChat dialog
extern CString PublicUserName;
extern int PublicUserType;
CChat::CChat(CWnd* pParent /*=NULL*/):CDialog(CChat::IDD, pParent)
{
//{{AFX_DATA_INIT(CChat)
m_Pwd = _T("");
m_Context = _T("");
m_Chattype = -1;
m_Number = _T( _T("");"");
m_Author = _T("");
m_Xinghao = _T("");
m_SoftType = _T("");
m_GeShi = _T("");
m_UserName = _T("");
m_SoftName = _T("");
//}}AFX_DATA_INIT
}
void CChat::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CChat)
DDX_Control(pDX, IDC_COMBO7, m_UserNameCtrl);
DDX_Control(pDX, IDC_COMBO6, m_GeShiCtrl);
DDX_Control(pDX, IDC_COMBO5, m_SoftTypeCtrl);
DDX_Control(pDX, IDC_COMBO4, m_XinghaoCtrl);
DDX_Control(pDX, IDC_COMBO3, m_AuthorCtrl);
DDX_Control(pDX, IDC_COMBO2, m_SoftNameCtrl);
DDX_Control(pDX, IDC_COMBO1, m_NumberCtrl);
DDX_Control(pDX, IDC_RADIO1, m_TypeCtrl);
DDX_Control(pDX, IDC_LIST2, m_List2);
DDX_Control(pDX, IDC_LIST1, m_List1);
DDX_Text(pDX, IDC_EDIT2, m_Pwd);
DDX_Text(pDX, IDC_EDIT4, m_Context);
DDX_Radio(pDX, IDC_RADIO1, m_Chattype);
DDX_CBString(pDX, IDC_COMBO1, m_Number);
DDX_CBString(pDX, IDC_COMBO3, m_Author);
DDX_CBString(pDX, IDC_COMBO4, m_Xinghao);
DDX_CBString(pDX, IDC_COMBO5, m_SoftType);
DDX_CBString(pDX, IDC_COMBO6, m_GeShi);
DDX_CBString(pDX, IDC_COMBO7, m_UserName);
DDX_CBString(pDX, IDC_COMBO2, m_SoftName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CChat, CDialog)
//{{AFX_MSG_MAP(CChat)
ON_BN_CLICKED(IDC_BUTTON4, OnSummit)
ON_BN_CLICKED(IDC_RADIO1, OnBorrow)
ON_BN_CLICKED(IDC_RADIO2, OnReturn)
ON_BN_CLICKED(IDC_BUTTON3, OnQuery)
ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2)
ON_BN_CLICKED(IDC_BUTTON1, OnRight)
ON_BN_CLICKED(IDC_BUTTON2, OnLeft)
ON_BN_CLICKED(IDC_BUTTON5, OnApply)
ON_BN_CLICKED(IDC_BUTTON6, OnNext)
ON_BN_CLICKED(IDC_CHECK1, OnSelectAll)
ON_BN_CLICKED(IDC_CHECK6, OnCheck6)
ON_BN_CLICKED(IDC_CHECK3, OnCheck3)
ON_BN_CLICKED(IDC_CHECK4, OnCheck4)
ON_BN_CLICKED(IDC_CHECK2, OnCheck2)
ON_BN_CLICKED(IDC_CHECK5, OnCheck5)
ON_BN_CLICKED(IDC_CHECK7, OnCheck7)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CChat message handlers
BOOL CChat::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::DestroyWindow();
}
void CChat::Initiate()
{
//如果是管理员登陆
if(PublicUserType==1)
{GetDlgItem(IDC_EDIT2)->EnableWindow(false);
//输入用户名集合
CString sql_;
_variant_t Holder;
sql_.Format ("SELECT DISTINCT 用户名 FROM UserInfo");
_RecordsetPtr Myset;
Myset.CreateInstance (__uuidof(Recordset));
_bstr_t source= m_strSource;
_bstr_t Mysql=sql_;
try{
Myset->Open (Mysql,source,adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage());}
while(!Myset->adoEOF ){
Holder=Myset->GetCollect ("用户名");
if(Holder.vt!=VT_NULL)
m_UserNameCtrl.AddString((char*)(_bstr_t)Holder);
Myset->MoveNext ();
}
Myset->Close();
}
else
{m_UserNameCtrl.Clear();
((CComboBox*)GetDlgItem(IDC_COMBO7))->SetWindowText(PublicUserName);
GetDlgItem(IDC_EDIT2)->EnableWindow(true);
}
//界面设置
GetDlgItem(IDC_RADIO1)->EnableWindow(false);
GetDlgItem(IDC_RADIO2)->EnableWindow(false);
GetDlgItem(IDC_LIST1)->EnableWindow(false);
GetDlgItem(IDC_LIST2)->EnableWindow(false);
GetDlgItem(IDC_BUTTON1)->EnableWindow(false);
GetDlgItem(IDC_BUTTON2)->EnableWindow(false);
GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
m_List1.DeleteAllItems ();
m_List2.DeleteAllItems ();
GetDlgItem(IDC_COMBO1)->EnableWindow(false);
GetDlgItem(IDC_COMBO2)->EnableWindow(false);
GetDlgItem(IDC_COMBO3)->EnableWindow(false);
GetDlgItem(IDC_COMBO4)->EnableWindow(false);
GetDlgItem(IDC_COMBO5)->EnableWindow(false);
GetDlgItem(IDC_COMBO6)->EnableWindow(false);
GetDlgItem(IDC_COMBO7)->EnableWindow(true);
((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK5))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK7))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK6))->SetCheck(false);
GetDlgItem(IDC_CHECK1)->EnableWindow(false);
GetDlgItem(IDC_CHECK2)->EnableWindow(false);
GetDlgItem(IDC_CHECK3)->EnableWindow(false);
GetDlgItem(IDC_CHECK4)->EnableWindow(false);
GetDlgItem(IDC_CHECK5)->EnableWindow(false);
GetDlgItem(IDC_CHECK6)->EnableWindow(false);
GetDlgItem(IDC_CHECK7)->EnableWindow(false);
UpdateData();
}
void CChat::Trash()
{
}
void CChat::OnSummit()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_UserName==""){AfxMessageBox("请输入用户名");return;}
//判断是管理员还是用户
if(PublicUserType==1){
GetDlgItem(IDC_RADIO2)->EnableWindow(true);
GetDlgItem(IDC_RADIO1)->EnableWindow(true);
}
else
{
if(m_UserName==""){AfxMessageBox("请输入用户名");return;}
CString sql_,PasswordChar,str1,pASS;
if(m_Pwd.IsEmpty())
PasswordChar=_T("RX67YM3482C");//对空密码进行处理
else
PasswordChar=CCrypt::Encrypt (m_Pwd,376);
sql_.Format ("SELECT * FROM UserInfo WHERE 用户名 = '%s'",m_UserName);
_bstr_t sql=sql_;
_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());}
int Count=0;
while(!Myset->adoEOF)
{Count+=1;Myset->MoveNext();};
if(Count==0){AfxMessageBox("你输入的用户名不存在");return;}
_variant_t Holder;
Myset->MoveFirst();
Holder=Myset->GetCollect ("用户名");
if(Holder.vt==VT_NULL){AfxMessageBox("用户名不存在");return;}
Holder=Myset->GetCollect ("密码");
Myset->Close();
//派出两种部窜在的情况
if(Holder.vt==VT_NULL)
{AfxMessageBox("这个密码已被破坏,下次请不要字使用这个用户名!");
return;}
else{
pASS=(char*)(_bstr_t)Holder;
pASS.TrimLeft (" ");
pASS.TrimRight (" ");
if(PasswordChar!=pASS)
{AfxMessageBox("密码不正确");return;}
//将数据匡是能
GetDlgItem(IDC_RADIO2)->EnableWindow(true);
GetDlgItem(IDC_RADIO1)->EnableWindow(true);
GetDlgItem(IDC_COMBO7)->EnableWindow(false);
}
}
}
void CChat::OnBorrow()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_COMBO1)->EnableWindow(false);
GetDlgItem(IDC_COMBO2)->EnableWindow(false);
GetDlgItem(IDC_COMBO3)->EnableWindow(false);
GetDlgItem(IDC_COMBO4)->EnableWindow(false);
GetDlgItem(IDC_COMBO5)->EnableWindow(false);
GetDlgItem(IDC_COMBO6)->EnableWindow(false);
((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK5))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK7))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK6))->SetCheck(false);
GetDlgItem(IDC_CHECK1)->EnableWindow(true);
GetDlgItem(IDC_CHECK2)->EnableWindow(true);
GetDlgItem(IDC_CHECK3)->EnableWindow(true);
GetDlgItem(IDC_CHECK4)->EnableWindow(true);
GetDlgItem(IDC_CHECK5)->EnableWindow(true);
GetDlgItem(IDC_CHECK6)->EnableWindow(true);
GetDlgItem(IDC_CHECK7)->EnableWindow(true);
}
void CChat::OnReturn()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_CHECK1)->EnableWindow(true);
((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(true);
GetDlgItem(IDC_CHECK2)->EnableWindow(false);
GetDlgItem(IDC_CHECK3)->EnableWindow(false);
GetDlgItem(IDC_CHECK4)->EnableWindow(false);
GetDlgItem(IDC_CHECK5)->EnableWindow(false);
GetDlgItem(IDC_CHECK6)->EnableWindow(false);
GetDlgItem(IDC_CHECK7)->EnableWindow(false);
}
void CChat::OnQuery()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_Chattype==0)//如果是借文档
{
int AllNot=((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
if( AllNot)//如果列举全部可用数据
BorrowTotal();
else
BorrowSelect();
}
else {
if(m_Chattype==1)//如果是还文档
ReturnTotal();
}
}
void CChat::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POSITION pos=m_List1.GetFirstSelectedItemPosition();//判断是否选中记录
if(pos==NULL)return;
int i=m_List1.GetSelectionMark();
CString softnumber=m_List1.GetItemText (i,2);
CString softname=m_List1.GetItemText (i,0);
CString softgeshi=m_List1.GetItemText (i,1);
GetDlgItem(IDC_BUTTON2)->EnableWindow(false);
CString sql_;
sql_.Format ("SELECT * FROM SoftDocInfo WHERE 软件编号 = '%s'",softnumber);
_bstr_t sql=sql_;
_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 myStr2,mystr;
myStr2=softname+"编号: "+softnumber;
_variant_t Holder;
Holder=Myset->GetCollect ("软件类型");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
myStr2+=" 类型:";
myStr2+=mystr;}
Holder=Myset->GetCollect ("作者");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
myStr2=softname+" 作者: ";
myStr2+=mystr;}
Holder=Myset->GetCollect ("所属型号");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
myStr2+=" 所属型号:";
myStr2+=mystr;}
Holder=Myset->GetCollect ("所属系统");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
myStr2+=" 所属系统:";
myStr2+=mystr;}
Holder=Myset->GetCollect ("软件功能描述");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
myStr2+="\n软件功能描述\n";
myStr2+=mystr;}
m_Context=myStr2;
UpdateData(false);
Myset->Close();
//控制邮移健
if(i>=0){
if(m_Chattype==0){
if(m_List2.GetItemCount ()<3)
{GetDlgItem(IDC_BUTTON1)->EnableWindow(true);}
}
else GetDlgItem(IDC_BUTTON1)->EnableWindow(true);}
*pResult = 0;
}
void CChat::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POSITION pos=m_List2.GetFirstSelectedItemPosition();//判断是否选中记录
if(pos==NULL)return;
int i=m_List2.GetSelectionMark();
CString softnumber=m_List2.GetItemText (i,2);
CString softname=m_List2.GetItemText (i,0);
CString softgeshi=m_List2.GetItemText (i,1);
GetDlgItem(IDC_BUTTON1)->EnableWindow(false);
CString sql_;
sql_.Format ("SELECT * FROM SoftDocInfo WHERE 软件编号 = '%s'",softnumber);
_bstr_t sql=sql_;
_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 myStr2,mystr;
myStr2=softname+"编号: "+softnumber;
_variant_t Holder;
Holder=Myset->GetCollect ("软件类型");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
myStr2+=" 类型:";
myStr2+=mystr;}
Holder=Myset->GetCollect ("作者");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
myStr2=softname+" 作者: ";
myStr2+=mystr;}
Holder=Myset->GetCollect ("所属型号");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
myStr2+=" 所属型号:";
myStr2+=mystr;}
Holder=Myset->GetCollect ("所属系统");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
myStr2+=" 所属系统:";
myStr2+=mystr;}
Holder=Myset->GetCollect ("软件功能描述");
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight (" ");
myStr2+="/n软件功能描述/n";
myStr2+=mystr;}
m_Context=myStr2;
UpdateData(false);
Myset->Close();
//控制邮移健
if(i>=0){
GetDlgItem(IDC_BUTTON2)->EnableWindow(true);}
*pResult = 0;
}
void CChat::OnRight()
{
// TODO: Add your control notification handler code here
// 移动选中格
int i=m_List1.GetSelectionMark();
if(i<0)
return;
int j=m_List2.GetItemCount();
if((j==3)&&(m_Chattype==0))
return;
CString Str1,Str2,Str3;
Str1=m_List1.GetItemText (i,0);
Str2=m_List1.GetItemText (i,1);
Str3=m_List1.GetItemText (i,2);
m_List2.InsertItem (j,Str1);
m_List2.SetItemText (j,1,Str2);
m_List2.SetItemText (j,2,Str3);
m_List1.DeleteItem (i);
GetDlgItem(IDC_BUTTON5)->EnableWindow(true);
GetDlgItem(IDC_BUTTON2)->EnableWindow(false);
}
void CChat::OnLeft()
{
// TODO: Add your control notification handler code here
// 移动选中格
int i=m_List2.GetSelectionMark();
int j=m_List1.GetItemCount ();
if(i<0)
return;
CString Str1,Str2,Str3;
Str1=m_List2.GetItemText (i,0);
Str2=m_List2.GetItemText (i,1);
Str3=m_List2.GetItemText (i,1);
m_List1.InsertItem (j,Str1);
m_List1.SetItemText (j,1,Str2);
m_List1.SetItemText (j,2,Str2);
m_List2.DeleteItem (i);
int m=m_List2.GetItemCount ();
if(m==0){
GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
GetDlgItem(IDC_BUTTON2)->EnableWindow(false);}
GetDlgItem(IDC_BUTTON1)->EnableWindow(false);
}
void CChat::OnApply()
{
// TODO: Add your control notification handler code here
int m=m_List2.GetItemCount();
if( m==0){AfxMessageBox("没有可选项");return;}
if(PublicUserType==1)
ManagerControl();
else
{
if(PublicUserType==2)
UserApply();
}
}
void CChat::OnNext()
{
// TODO: Add your control notification handler code here
Initiate();
}
BOOL CChat::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//List Initiallize
m_List1.InsertColumn (0,"软件名称");
m_List1.InsertColumn (1,"软件格式");
m_List1.InsertColumn (2,"软件编号");
RECT rect;
m_List1.GetWindowRect(& rect);
int wid=(rect.right -rect.left )/2;
m_List1.SetColumnWidth(0,wid);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -