📄 viewdlg.cpp
字号:
// ViewDlg.cpp : implementation file
//
#include "stdafx.h"
#include "server.h"
#include "ViewDlg.h"
#include "nowSet.h"
#include "userSet.h"
#include <Winsock2.h>
#include "useractionSet.h"
#include "SendMsgDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern bool tagofsend;
extern void jishi();
int delcolumn;
/////////////////////////////////////////////////////////////////////////////
// CViewDlg dialog
CString ip;
CViewDlg::CViewDlg(CWnd* pParent /*=NULL*/)
: CDialog(CViewDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CViewDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CViewDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CViewDlg)
DDX_Control(pDX, IDC_LIST1, m_ListCtrl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CViewDlg, CDialog)
//{{AFX_MSG_MAP(CViewDlg)
ON_WM_PAINT()
ON_COMMAND(IDC_EXIT, OnExit)
ON_COMMAND(IDC_SENDMSG, OnSendMsg)
ON_NOTIFY(NM_RCLICK, IDC_LIST1, OnRclickList1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CViewDlg message handlers
void CViewDlg::OnSendMsg()
{
////////发送消息
CSendMsgDlg sendmsgdlg;
sendmsgdlg.DoModal();
}
void CViewDlg::OnExit()
{
////////下机///////
int choice=MessageBox("确认要下机吗?","确认",MB_YESNO|MB_ICONQUESTION);
if(choice==IDYES)
{
tagofsend=false;
jishi();
CString xuehao,name,l_class;
CString *pip= new CString;
pip->Format("ip='%s'",ip);
CNowSet now;
now.m_strFilter=*pip;
now.Open();
int statue=0;
if(now.GetRecordCount())
{ delete pip;
xuehao=now.m_xuehao;
name=now.m_name;
l_class=now.m_class;
statue=now.m_statue;
now.Delete();
now.Requery();
}
now.Close();
if(!statue)
{
///////////////useraction添加记录///////////////
CUseractionSet useraction;
useraction.Open();
useraction.AddNew();
useraction.m_xuehao=xuehao;
useraction.m_name=name;
useraction.m_class=l_class;
useraction.m_action="协助下机";
useraction.m_ip=ip;
CTime currenttime=CTime::GetCurrentTime();
CString mtime=currenttime.Format("%#Y年%#m月%#d日%#H时%#M分%#S秒");
useraction.m_date=mtime;
useraction.Update();
useraction.Close();
//////////////////user中的num减一//////////////
CString *pxuehao= new CString;
pxuehao->Format("xuehao='%s'",xuehao);
CUserSet user;
user.m_strFilter=*pxuehao;
delete pxuehao;
user.Open();
user.Edit();
user.m_num=user.m_num-1;
user.Update();
user.Close();
}
/////////////////////////
m_ListCtrl.DeleteItem(delcolumn);
SOCKADDR_IN addrSrv;
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
addrSrv.sin_addr.S_un.S_addr=inet_addr(ip);
addrSrv.sin_family =AF_INET;
addrSrv.sin_port=htons(6001);
int ret = 0;
int error = 0;
char sendmsgbuf[2]="a";
ret = connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
if(ret == SOCKET_ERROR)
{
return;
if(error == 10061)
return;
}
else
{
ret = send(sockClient, sendmsgbuf,2, 0);
if(ret != 2)
return;
}
}
}
void CViewDlg::OnOK()
{
CDialog::OnOK();
}
BOOL CViewDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//mComb->EnableWindow(FALSE);
DWORD dwStyle;
RECT rect;
LV_COLUMN lvc;
m_ListCtrl.SetBkColor(RGB(255,255,255));
m_ListCtrl.SetTextBkColor(RGB(255,255,255));
dwStyle = m_ListCtrl.GetStyle();
dwStyle |= LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT |LVS_SHOWSELALWAYS |LVS_EDITLABELS ;
m_ListCtrl.SetExtendedStyle(dwStyle);
m_ListCtrl.GetClientRect(&rect);
lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH |LVCF_FMT;
lvc.fmt=LVCFMT_LEFT;
lvc.iSubItem = 0;
lvc.pszText = _T("编号");
lvc.cx = 50;
m_ListCtrl.InsertColumn(1,&lvc);
lvc.iSubItem = 1;
lvc.pszText = _T("计算机名");
lvc.cx = 70;
m_ListCtrl.InsertColumn(2,&lvc);
lvc.iSubItem = 2;
lvc.pszText = _T("姓 名");
lvc.cx = 60;
m_ListCtrl.InsertColumn(3,&lvc);
lvc.iSubItem = 3;
lvc.pszText = _T("班 级");
lvc.cx = 100;
m_ListCtrl.InsertColumn(4,&lvc);
lvc.iSubItem = 4;
lvc.pszText = _T("上机时间");
lvc.cx = 110;
m_ListCtrl.InsertColumn(5,&lvc);
lvc.iSubItem = 5;
lvc.pszText = _T("上机模式");
lvc.cx = 120;
m_ListCtrl.InsertColumn(6,&lvc);
LV_ITEM lvitem;
int numline=0;
lvitem.pszText="";
lvitem.mask=LVIF_TEXT;
lvitem.iSubItem=0;
CString *tag;
tag= new CString;
CNowSet listmdb;
listmdb.m_strSort="statue";
listmdb.Open();
CString computer;
int counter=1;
CString scounter;
while(!listmdb.IsEOF())
{
switch(listmdb.m_statue)
{
case 0: tag->Format("%s","自由上机");break;
case 1: tag->Format("%s","教学上机");break;
case 2: tag->Format("%s","教师上机");break;
};
computer=listmdb.m_ip;
computer=computer.Right(2);
computer.Replace(".","");
scounter.Format("%d",counter);
lvitem.iItem=numline;
m_ListCtrl.InsertItem(&lvitem);
m_ListCtrl.SetItemText(numline,0,scounter);
m_ListCtrl.SetItemText(numline,1,computer);
m_ListCtrl.SetItemText(numline,2,listmdb.m_name);
m_ListCtrl.SetItemText(numline,3,listmdb.m_class);
m_ListCtrl.SetItemText(numline,4,listmdb.m_starttime);
m_ListCtrl.SetItemText(numline,5,*tag);//
numline++;
listmdb.MoveNext();
counter++;
}
listmdb.Close();
delete tag;
return FALSE;
}
void CViewDlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
POSITION pos = m_ListCtrl.GetFirstSelectedItemPosition();
//如果选中一行
if(pos)
{
int nItem = m_ListCtrl.GetNextSelectedItem(pos);
ip="127.0.0."+m_ListCtrl.GetItemText(nItem,1);
delcolumn=nItem;
CMenu menu;
if (!menu.LoadMenu(IDR_MENU2))
return ;
CMenu* pSubMenu = menu.GetSubMenu(0);
if (!pSubMenu)
return ;
// if (lEvent==WM_RBUTTONUP) {
// Make first menu item the default (bold font)
::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);
// Display the menu at the current mouse location. There's a "bug"
// (Microsoft calls it a feature) in Windows 95 that requires calling
// SetForegroundWindow. To find out more, search for Q135788 in MSDN.
//
CPoint mouse;
GetCursorPos(&mouse);
::SetForegroundWindow(m_hWnd);
::TrackPopupMenu(pSubMenu->m_hMenu, 0, mouse.x, mouse.y, 0,
m_hWnd, NULL);
*pResult = 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -