⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 viewdlg.cpp

📁 初学VC,编写的一个机房管理系统,功能基本上完善,但代码可读性不强.
💻 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 + -