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

📄 clientinfoview.cpp

📁 用数据库控制树型控件现实内容的例子
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// ClientInfoview.cpp : implementation file
//

#include "stdafx.h"
#include "Kill.h"
#include "ClientInfoview.h"
#include "ComputerDelDlg.h"
#include "ComputerAddDlg.h"
#include "MainFrm.h"
#include "ComputerChangeDlg.h"

#define   COMPUTERNAME_NUM 0
#define   IP_ADDRESS_NUM  1
#define   COMPUTERID_NUM  7
#define   ISKILLINSTALLED_NUM   3
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CClientInfoview

IMPLEMENT_DYNCREATE(CClientInfoview, CFormView)

CClientInfoview::CClientInfoview()
	: CFormView(CClientInfoview::IDD)
{
	//{{AFX_DATA_INIT(CClientInfoview)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	CoInitialize(NULL);
//	AfxOleInit();
//    m_db.CreateInstance(__uuidof(Connection));
    HRESULT hRes;
	try
	{
        hRes=m_db.CreateInstance(_T("ADODB.Connection"));
		m_db->ConnectionTimeout = 8;
		//连接ACCESS2000
		hRes=m_db->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DataBase\\KillData.mdb",
            _T(""),_T(""),adModeUnknown);
	}
	catch(_com_error e)///捕捉异常
	{
		 CString errormessage;
		 errormessage.Format(_T("连接KillData.mdb数据库失败!\r\n错误信息:%s"),e.ErrorMessage());
		 AfxMessageBox(errormessage);///显示错误信息
		 exit(0);
	} 

}

CClientInfoview::~CClientInfoview()
{
}

void CClientInfoview::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CClientInfoview)
	DDX_Control(pDX, IDC_DATA_TABLE_LIST, m_DataReport);
	DDX_Control(pDX, IDC_SELECT_TAB, m_MotherTab);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CClientInfoview, CFormView)
	//{{AFX_MSG_MAP(CClientInfoview)
	ON_WM_TIMER()
	ON_WM_SIZE()
	ON_NOTIFY(TCN_SELCHANGE, IDC_SELECT_TAB, OnSelchangeSelectTab)
	ON_COMMAND(IDR_COMPUTER_ADD, OnComputerAdd)
	ON_COMMAND(IDR_COMPUTER_DELETE, OnComputerDelete)
	ON_COMMAND(IDR_COMPUTER_INSTALL, OnComputerInstall)
	ON_COMMAND(IDR_COMPUTER_UNINSTALL, OnComputerUninstall)
	ON_COMMAND(IDR_COMPUTER_POPUP_EDIT, OnComputerPopupEdit)
	ON_COMMAND(IDR_CHANGEPARENG_, OnChangepareng)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CClientInfoview diagnostics

#ifdef _DEBUG
void CClientInfoview::AssertValid() const
{
	CFormView::AssertValid();
}

void CClientInfoview::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CClientInfoview message handlers

void CClientInfoview::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	
	CFormView::OnTimer(nIDEvent);
}

void CClientInfoview::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);
	
	// TODO: Add your message handler code here
	if(m_MotherTab.m_hWnd)
		m_MotherTab.SetWindowPos(this,0,0,cx,cy,SWP_SHOWWINDOW|SWP_NOZORDER );
	if(m_DataReport.m_hWnd)
//		m_DataReport.SetWindowPos(this,0,23,cx,cy,SWP_SHOWWINDOW|SWP_NOZORDER );
	m_DataReport.SetWindowPos(this,0,0,cx,cy,SWP_SHOWWINDOW|SWP_NOZORDER );
	
}

void CClientInfoview::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class

	m_DataReport.SetWindowPos(this,0,0,20,20,SWP_NOZORDER);
	m_DataReport.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//
	static struct
	{
		LPSTR pszText;
		int uiFormat;
		int width;
	}columns[]={
		_T("终端名称"),LVCFMT_LEFT,140,
		_T("Ip地址"),LVCFMT_CENTER,120,
		_T("操作系统"),LVCFMT_CENTER,140,
		_T("是否安装"),LVCFMT_CENTER,100, //是否安装杀毒软件
		_T("运行状态"),LVCFMT_CENTER,85, //是否运行杀毒软件
		_T("软件版本"),LVCFMT_CENTER,115, //杀毒软件版本
		_T("开机状态"),LVCFMT_CENTER,130, //是否开机
		_T("终端编号"),LVCFMT_CENTER,30 //终端编号
	};
	for(int i=0,j=110;i<sizeof(columns)/sizeof(columns[0]);i++)
		m_DataReport.InsertColumn(i,columns[i].pszText,columns[i].uiFormat,columns[i].width);
//	m_DataReport.SetItemState(7,);

	m_MotherTab.InsertItem( 0, _T("Tab1") );
	m_MotherTab.InsertItem( 1, _T("Tab2") );

//	m_MotherTab.InsertItem(
	
}

void CClientInfoview::OnSelchangeSelectTab(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	int sel = m_MotherTab.GetCurSel();

	switch(sel)
	{
	case 0:
		m_DataReport.ShowWindow( SW_SHOW );
		break;
	case 1:
		m_DataReport.ShowWindow( SW_HIDE );
		break;
	}
	*pResult = 0;
}


void CClientInfoview::ShowClient(int GroupID)
{
	_RecordsetPtr m_pTreeRecordset;    //用于创建一个查询记录集
	CString strSQL,strCurItem;
	strSQL.Format("select * FROM Computers where ComputerGroupId = %d",GroupID);
	_variant_t varSQLtcp(strSQL);
	m_DataReport.DeleteAllItems();
	CString tempstr;

	try
	{
		HRESULT hTRes;
	    hTRes = m_pTreeRecordset.CreateInstance(_T("ADODB.Recordset"));
		if (SUCCEEDED(hTRes))
		{
	        hTRes = m_pTreeRecordset->Open(varSQLtcp,
			         _variant_t((IDispatch *)m_db,true),
					 adOpenStatic,adLockOptimistic,adCmdText);
            if(SUCCEEDED(hTRes))
	        {
				TRACE(_T("连接成功!\n"));
			//------------------------------------------
				if (!(m_pTreeRecordset->adoEOF))
				{
					m_pTreeRecordset->MoveFirst();
					for(int i=0;i<m_pTreeRecordset->GetRecordCount(); i++)
//					while (!(m_pTreeRecordset->adoEOF))
					{
						m_DataReport.InsertItem(LVIF_TEXT|LVIF_STATE, i, 
//							"S", LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED, 0, 0);
							"S", LVIS_FOCUSED, LVIS_FOCUSED, 0, 0);
						tempstr=m_pTreeRecordset->GetCollect("ComputerName").bstrVal;
						m_DataReport.SetItemText(i,0,tempstr);
						tempstr=m_pTreeRecordset->GetCollect("IpAddress").bstrVal;
						m_DataReport.SetItemText(i,1,tempstr);
						tempstr=m_pTreeRecordset->GetCollect("OsType").bstrVal;
						m_DataReport.SetItemText(i,2,tempstr);
						if(m_pTreeRecordset->GetCollect("isInstallKill").boolVal)
							m_DataReport.SetItemText(i,3,"T");

						if(m_pTreeRecordset->GetCollect("isRunKill").boolVal)
							m_DataReport.SetItemText(i,4,"T");
						tempstr=m_pTreeRecordset->GetCollect("KillVersion").bstrVal;
						m_DataReport.SetItemText(i,5,tempstr);
						if(m_pTreeRecordset->GetCollect("isRunComputer").boolVal)
							m_DataReport.SetItemText(i,6,"T");
						tempstr.Format("%d",m_pTreeRecordset->GetCollect("ComputerId").iVal);
						m_DataReport.SetItemText(i,7,tempstr);

//						m_DataReport.SetIcon();
						if (!(m_pTreeRecordset->adoEOF))
							m_pTreeRecordset->MoveNext();
					}		
				}
		//---------------------------------------
			}
		}
	}
	catch(...)
	{
		return;
	}
}

void CClientInfoview::OnComputerAdd() 
{
	// TODO: Add your command handler code here
	CComputerAddDlg dlg;
	if(dlg.DoModal()==IDOK)
	{
		CString sqlStr;
//		sqlStr="insert into computers(ComputerId,ComputerGroupId,ComputerName,IpAddress,MacAddress,OsType,ServerPack,IEVersion,Langu,CpuType,CpuFreq,Memory,DiskSize,FreeDiskSize,KillVersion,isInstallKill,isRunKill,isRunComputer,isRegister,Cmd_Install,Cmd_Uninstall,IpAddressNum) ";
//		sqlStr+="values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
		sqlStr="insert into computers(ComputerGroupId,ComputerName,IpAddress,MacAddress,OsType,ServerPack,IEVersion,Langu,CpuType,CpuFreq,Memory,DiskSize,FreeDiskSize,KillVersion,isInstallKill,isRunKill,isRunComputer,isRegister,Cmd_Install,Cmd_Uninstall,IpAddressNum) ";
		sqlStr+="values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
		_CommandPtr Cmd1;
		_ParameterPtr Param1,Param2,Param3,Param4,Param5,Param6,Param7,Param8,Param9,Param10,Param11,Param12,Param13,Param14,Param15,Param16,Param17,Param18,Param19,Param20,Param21,Param22;
		try
		{
			Cmd1.CreateInstance( __uuidof( Command ) );
			Cmd1->ActiveConnection = m_db;
			Cmd1->CommandText = sqlStr.AllocSysString();
			VARIANT v;
			v.vt=VT_I2;
/*
			v.iVal=dlg.m_ComputerId;
			Param1 = Cmd1->CreateParameter("ComputerId",adInteger,adParamInput,-1,v );
*/

			CMainFrame * pMain=(CMainFrame *)AfxGetMainWnd();
			v.iVal=pMain->m_ClientTreeview->GetCurrentGroupId();

			Param2 = Cmd1->CreateParameter("ComputerGroupId",adInteger,adParamInput,-1,v );
			Param3 = Cmd1->CreateParameter("ComputerName",adBSTR,adParamInput,-1,dlg.m_ComputerName.AllocSysString() );
			Param4 = Cmd1->CreateParameter("IpAddress",adBSTR,adParamInput,-1,dlg.m_IpAddress.AllocSysString() );
			v.vt=VT_UI4;
			v.ulVal=inet_addr(dlg.m_IpAddress.GetBuffer(0));
			Param22=Cmd1->CreateParameter("IpAddressNum",adInteger,adParamInput,-1,v );
			Param5 = Cmd1->CreateParameter("MacAddress",adBSTR,adParamInput,-1,dlg.m_MacAddress.AllocSysString() );
			Param6 = Cmd1->CreateParameter("OsType",adBSTR,adParamInput,-1,dlg.m_OsType.AllocSysString() );
			Param7 = Cmd1->CreateParameter("ServerPack",adBSTR,adParamInput,-1,dlg.m_ServerPack.AllocSysString() );
			Param8 = Cmd1->CreateParameter("IEVersion",adBSTR,adParamInput,-1,dlg.m_IEVersion.AllocSysString() );
			Param9 = Cmd1->CreateParameter("Langu",adBSTR,adParamInput,-1,dlg.m_Langu.AllocSysString() );
			Param10 = Cmd1->CreateParameter("CpuType",adBSTR,adParamInput,-1,dlg.m_CpuType.AllocSysString() );
			Param11 = Cmd1->CreateParameter("CpuFreq",adBSTR,adParamInput,-1,dlg.m_CpuFreq.AllocSysString() );
			Param12 = Cmd1->CreateParameter("Memory",adBSTR,adParamInput,-1,dlg.m_Memory.AllocSysString() );
			Param13 = Cmd1->CreateParameter("DiskSize",adBSTR,adParamInput,-1,dlg.m_DiskSize.AllocSysString() );
			Param14 = Cmd1->CreateParameter("FreeDiskSize",adBSTR,adParamInput,-1,dlg.m_FreeDiskSize.AllocSysString() );
			Param15 = Cmd1->CreateParameter("KillVersion",adBSTR,adParamInput,-1,dlg.m_KillVersion.AllocSysString() );
		
			v.vt=VT_BOOL;
			v.boolVal=(int)dlg.m_isInstallKill;
			Param16 = Cmd1->CreateParameter("isInstallKill",adBoolean,adParamInput,-1,v );
			v.boolVal=(int)dlg.m_isRunKill;
			Param17 = Cmd1->CreateParameter("isRunKill",adBoolean,adParamInput,-1,v );
			v.boolVal=(int)dlg.m_isRunComputer;
			Param18 = Cmd1->CreateParameter("isRunComputer",adBoolean,adParamInput,-1,v );
			v.boolVal=(int)dlg.m_isRegister;
			Param19 = Cmd1->CreateParameter("isRegister",adBoolean,adParamInput,-1,v );
			v.boolVal=(int)dlg.m_Cmd_Install;
			Param20 = Cmd1->CreateParameter("Cmd_Install",adBoolean,adParamInput,-1,v );
			v.boolVal=(int)dlg.m_Cmd_Uninstall;
			Param21 = Cmd1->CreateParameter("Cmd_Uninstall",adBoolean,adParamInput,-1,v );

//			Cmd1->Parameters->Append( Param1 );
			Cmd1->Parameters->Append( Param2 );
			Cmd1->Parameters->Append( Param3 );
			Cmd1->Parameters->Append( Param4 );
			Cmd1->Parameters->Append( Param5 );
			Cmd1->Parameters->Append( Param6 );
			Cmd1->Parameters->Append( Param7 );
			Cmd1->Parameters->Append( Param8 );
			Cmd1->Parameters->Append( Param9 );
			Cmd1->Parameters->Append( Param10 );
			Cmd1->Parameters->Append( Param11 );
			Cmd1->Parameters->Append( Param12 );
			Cmd1->Parameters->Append( Param13 );
			Cmd1->Parameters->Append( Param14 );
			Cmd1->Parameters->Append( Param15 );
			Cmd1->Parameters->Append( Param16 );
			Cmd1->Parameters->Append( Param17 );
			Cmd1->Parameters->Append( Param18 );
			Cmd1->Parameters->Append( Param19 );
			Cmd1->Parameters->Append( Param20 );
			Cmd1->Parameters->Append( Param21 );
			Cmd1->Parameters->Append( Param22 );
			Cmd1->Execute( NULL, NULL, adCmdText );
		}
		catch(...)
		{
			AfxMessageBox("新添加记录失败,IP地址数据冲突或者有些必要的信息没有输入");
			return ;
		}

	}
	ReFresh();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -