📄 pmonitordlg.cpp
字号:
// PMonitorDlg.cpp : implementation file
//
#include "stdafx.h"
#include "PMonitor.h"
#include "PMonitorDlg.h"
#include "stdio.h"
#include "MINIFRAME.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
///////////////
#define HOST_MAIN 0
#define PROCESS_INFO 1
#define HOST_PERFORMANCE 2
#define NETWORK_FLOW 3
//动态生成的控件的ID
#define IDC_DISK1 50
#define IDC_TITLE10 51
#define IDC_TITLE11 52
#define IDC_TITLE12 53
#define IDC_TITLE13 54
#define IDC_TITLE14 55
#define IDC_TITLE15 56
#define IDC_TITLE16 57
#define IDC_TITLE17 58
#define IDC_TITLE18 59
#define IDC_DISK2 60
#define IDC_TITLE20 61
#define IDC_TITLE21 62
#define IDC_TITLE22 63
#define IDC_TITLE23 64
#define IDC_TITLE24 65
#define IDC_TITLE25 66
#define IDC_TITLE26 67
#define IDC_TITLE27 68
#define IDC_TITLE28 69
#define IDC_DISK3 70
#define IDC_TITLE30 71
#define IDC_TITLE31 72
#define IDC_TITLE32 73
#define IDC_TITLE33 74
#define IDC_TITLE34 75
#define IDC_TITLE35 76
#define IDC_TITLE36 77
#define IDC_TITLE37 78
#define IDC_TITLE38 79
#define IDC_DISK4 80
#define IDC_TITLE40 81
#define IDC_TITLE41 82
#define IDC_TITLE42 83
#define IDC_TITLE43 84
#define IDC_TITLE44 85
#define IDC_TITLE45 86
#define IDC_TITLE46 87
#define IDC_TITLE47 88
#define IDC_TITLE48 89
#define IDC_DISK5 90
#define IDC_TITLE50 91
#define IDC_TITLE51 92
#define IDC_TITLE52 93
#define IDC_TITLE53 94
#define IDC_TITLE54 95
#define IDC_TITLE55 96
#define IDC_TITLE56 97
#define IDC_TITLE57 98
#define IDC_TITLE58 99
#define IDC_DISK6 110
#define IDC_TITLE60 111
#define IDC_TITLE61 112
#define IDC_TITLE62 113
#define IDC_TITLE63 114
#define IDC_TITLE64 115
#define IDC_TITLE65 116
#define IDC_TITLE66 117
#define IDC_TITLE67 118
#define IDC_TITLE68 119
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPMonitorDlg dialog
CPMonitorDlg::CPMonitorDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPMonitorDlg::IDD, pParent)
{
//自定义变量
param=new CParameter();
sys=new CSysInfo();
this->pInfo=NULL;
//{{AFX_DATA_INIT(CPMonitorDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CPMonitorDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPMonitorDlg)
DDX_Control(pDX, IDC_MFRAME8, m_frame8);
DDX_Control(pDX, IDC_MFRAME7, m_frame7);
DDX_Control(pDX, IDC_MFRAME6, m_frame6);
DDX_Control(pDX, IDC_MFrame5, m_frame5);
DDX_Control(pDX, IDC_DYNPLOY4, m_ploy4);
DDX_Control(pDX, IDC_DYNPLOY3, m_ploy3);
DDX_Control(pDX, IDC_DYNCOL4, m_col4);
DDX_Control(pDX, IDC_DYNCOL3, m_col3);
DDX_Control(pDX, IDC_MFRAME4, m_frame4);
DDX_Control(pDX, IDC_MFRAME3, m_frame3);
DDX_Control(pDX, IDC_MFRAME2, m_frame2);
DDX_Control(pDX, IDC_MFrame1, m_frame1);
DDX_Control(pDX, IDC_DYNPLOY2, m_ploy2);
DDX_Control(pDX, IDC_DYNPLOY1, m_ploy1);
DDX_Control(pDX, IDC_DYNCOL2, m_col2);
DDX_Control(pDX, IDC_DYNCOL1, m_col1);
DDX_Control(pDX, IDOK, m_finish);
DDX_Control(pDX, IDC_PROLIST, m_list);
DDX_Control(pDX, IDC_DISKPIC6, m_dused6);
DDX_Control(pDX, IDC_DISKPIC5, m_dused5);
DDX_Control(pDX, IDC_DISKPIC4, m_dused4);
DDX_Control(pDX, IDC_DISKPIC3, m_dused3);
DDX_Control(pDX, IDC_DISKPIC2, m_dused2);
DDX_Control(pDX, IDC_DISKPIC1, m_dused1);
DDX_Control(pDX, IDC_Main, m_main);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPMonitorDlg, CDialog)
//{{AFX_MSG_MAP(CPMonitorDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_NOTIFY(TCN_SELCHANGE, IDC_Main, OnSelchangeMain)
ON_WM_TIMER()
ON_COMMAND(ID_PARAM_MANAGE, OnParamManage)
ON_COMMAND(ID_MIN_UP, OnMinUp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPMonitorDlg message handlers
//自定义的全局变量
//常量
int COLCYC=0;
int SYSINFO_CYC=3600; //一小时
//变量
int tag[]={0,0,0};
int index=0;
int diskvalue[6][2]={{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}};
//CFile *file=new CFile();
BOOL cflag=FALSE;
BOOL mflag=FALSE;
BOOL niflag=FALSE;
BOOL noflag=FALSE;
int cpu_count=0;
int memory_count=0;
int input_count=0;
int output_count=0;
int level[4][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};
COLORREF color[4][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};
CPoint *cpoint=new CPoint[101];
CPoint *mpoint=new CPoint[101];
CPoint *ipoint=new CPoint[101];
CPoint *opoint=new CPoint[101];
int pervalue[4][101];
BOOL CPMonitorDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
//file->Open("d:\\record.txt",CFile::modeNoTruncate|CFile::modeReadWrite,NULL);
//获取采集数据周期
COLCYC=param->getIntegerValue("ColCyc");
//确定Tag页
//添加Tag页
TC_ITEM tItem;
tItem.mask = TCIF_TEXT;
tItem.pszText = "系统资源";
tItem.cchTextMax = strlen(tItem.pszText);
m_main.InsertItem(0, &tItem);
//设定时钟
this->SetTimer(1,SYSINFO_CYC*1000,NULL);
int tid=1;
CString fstr=param->getCStringValue("PROCESS");
if(fstr!="UnSel")
{
TC_ITEM tItem;
tItem.mask = TCIF_TEXT;
tItem.pszText = "进程";
tItem.cchTextMax = strlen(tItem.pszText);
m_main.InsertItem(tid, &tItem);
tag[tid-1]=PROCESS_INFO;
tid++;
//设定时钟
this->SetTimer(2,60*COLCYC*1000,NULL);
}
fstr=param->getCStringValue("Memory");
if(fstr!="UnSel")
{
TC_ITEM tItem;
tItem.mask = TCIF_TEXT;
tItem.pszText = "性能";
tItem.cchTextMax = strlen(tItem.pszText);
m_main.InsertItem(tid, &tItem);
tag[tid-1]=HOST_PERFORMANCE;
tid++;
mflag=TRUE;
//设定时钟
this->SetTimer(4,COLCYC*1000,NULL);
fstr=param->getCStringValue("CPU");
if(fstr!="UnSel")
{
cflag=TRUE;
//设定时钟
this->SetTimer(3,COLCYC*1000,NULL);
}
}
else
{
fstr=param->getCStringValue("CPU");
if(fstr!="UnSel")
{
TC_ITEM tItem;
tItem.mask = TCIF_TEXT;
tItem.pszText = "性能";
tItem.cchTextMax = strlen(tItem.pszText);
m_main.InsertItem(tid, &tItem);
tag[tid-1]=HOST_PERFORMANCE;
tid++;
cflag=TRUE;
//设定时钟
this->SetTimer(3,COLCYC*1000,NULL);
}
}
fstr=param->getCStringValue("NetIN");
if(fstr!="UnSel")
{
TC_ITEM tItem;
tItem.mask = TCIF_TEXT;
tItem.pszText = "网络流量";
tItem.cchTextMax = strlen(tItem.pszText);
m_main.InsertItem(tid, &tItem);
tag[tid-1]=NETWORK_FLOW;
tid++;
niflag=TRUE;
//设定时钟
this->SetTimer(5,COLCYC*1000,NULL);
fstr=param->getCStringValue("NetOUT");
if(fstr!="UnSel")
{
noflag=TRUE;
//设定时钟
this->SetTimer(6,COLCYC*1000,NULL);
}
}
else
{
fstr=param->getCStringValue("NetOUT");
if(fstr!="UnSel")
{
TC_ITEM tItem;
tItem.mask = TCIF_TEXT;
tItem.pszText = "网络流量";
tItem.cchTextMax = strlen(tItem.pszText);
m_main.InsertItem(tid, &tItem);
tag[tid-1]=NETWORK_FLOW;
tid++;
noflag=TRUE;
//设定时钟
this->SetTimer(6,COLCYC*1000,NULL);
}
}
//初始化显示Tag页“系统资源”内的信息
CDiskInfo *diskInfo;
diskInfo=&sys->getDiskInfo();
int id=0;
CString str;
CRect *rc;
while(diskInfo!=NULL)
{
if(diskInfo->getDiskSize()>0&&diskInfo->getDiskName()!="Virtual Memory")
{
if((index%2)==0)
{
id=index/2;
switch(id)
{
case 0:
disk1=new CButton();
rc=new CRect(23,42,223,220);
disk1->Create(diskInfo->getDiskName(),BS_GROUPBOX,*rc,this,IDC_DISK1);
disk1->ShowWindow(SW_SHOW);
m_dused1.SetWindowPos(&(wndBottom),95,61,64,105,SWP_SHOWWINDOW);
m_dused1.ShowWindow(SW_SHOW);
diskvalue[index][0]=diskInfo->getDiskSize();
diskvalue[index][1]=diskInfo->getDUsedSize();
dtitle1=new CStatic();
rc=new CRect(25,178,62,196);
dtitle1->Create("容量:",SS_CENTER,*rc,this,IDC_TITLE11);
dtitle1->ShowWindow(SW_SHOW);
dvalue1=new CStatic();
rc=new CRect(67,178,109,196);
str.Format("%d",diskInfo->getDiskSize());
dvalue1->Create(str+"(G)",SS_CENTER,*rc,this,IDC_TITLE12);
dvalue1->ShowWindow(SW_SHOW);
ctitle1=new CStatic();
rc=new CRect(120,178,180,196);
ctitle1->Create("使用容量:",SS_CENTER,*rc,this,IDC_TITLE13);
ctitle1->ShowWindow(SW_SHOW);
cvalue1=new CStatic();
rc=new CRect(181,178,217,196);
str.Format("%d",diskInfo->getDUsedSize());
cvalue1->Create(str+"(G)",SS_CENTER,*rc,this,IDC_TITLE14);
cvalue1->ShowWindow(SW_SHOW);
cntitle1=new CStatic();
rc=new CRect(25,198,75,216);
cntitle1->Create("簇大小:",SS_CENTER,*rc,this,IDC_TITLE15);
cntitle1->ShowWindow(SW_SHOW);
cnvalue1=new CStatic();
rc=new CRect(76,198,116,216);
str.Format("%d",diskInfo->getClusterSize());
cnvalue1->Create(str,SS_CENTER,*rc,this,IDC_TITLE16);
cnvalue1->ShowWindow(SW_SHOW);
cutitle1=new CStatic();
rc=new CRect(120,198,172,216);
cutitle1->Create("簇个数:",SS_CENTER,*rc,this,IDC_TITLE17);
cutitle1->ShowWindow(SW_SHOW);
cuvalue1=new CStatic();
rc=new CRect(174,198,215,216);
str.Format("%d",diskInfo->getClusterNum());
cuvalue1->Create(str,SS_CENTER,*rc,this,IDC_TITLE18);
cuvalue1->ShowWindow(SW_SHOW);
break;
case 1:
disk3=new CButton();
rc=new CRect(23,191+42,223,191+220);
disk3->Create(diskInfo->getDiskName(),BS_GROUPBOX,*rc,this,IDC_DISK3);
disk3->ShowWindow(SW_SHOW);
m_dused3.SetWindowPos(&(wndBottom),95,191+61,64,105,SWP_SHOWWINDOW);
m_dused3.ShowWindow(SW_SHOW);
diskvalue[index][0]=diskInfo->getDiskSize();
diskvalue[index][1]=diskInfo->getDUsedSize();
dtitle3=new CStatic();
rc=new CRect(25,191+178,62,191+196);
dtitle3->Create("容量:",SS_CENTER,*rc,this,IDC_TITLE31);
dtitle3->ShowWindow(SW_SHOW);
dvalue3=new CStatic();
rc=new CRect(67,191+178,109,191+196);
str.Format("%d",diskInfo->getDiskSize());
dvalue3->Create(str+"(G)",SS_CENTER,*rc,this,IDC_TITLE32);
dvalue3->ShowWindow(SW_SHOW);
ctitle3=new CStatic();
rc=new CRect(120,191+178,180,191+196);
ctitle3->Create("使用容量:",SS_CENTER,*rc,this,IDC_TITLE33);
ctitle3->ShowWindow(SW_SHOW);
cvalue3=new CStatic();
rc=new CRect(181,191+178,217,191+196);
str.Format("%d",diskInfo->getDUsedSize());
cvalue3->Create(str+"(G)",SS_CENTER,*rc,this,IDC_TITLE34);
cvalue3->ShowWindow(SW_SHOW);
cntitle3=new CStatic();
rc=new CRect(25,191+198,75,191+216);
cntitle3->Create("簇大小:",SS_CENTER,*rc,this,IDC_TITLE35);
cntitle3->ShowWindow(SW_SHOW);
cnvalue3=new CStatic();
rc=new CRect(76,191+198,116,191+216);
str.Format("%d",diskInfo->getClusterSize());
cnvalue3->Create(str,SS_CENTER,*rc,this,IDC_TITLE36);
cnvalue3->ShowWindow(SW_SHOW);
cutitle3=new CStatic();
rc=new CRect(120,191+198,172,191+216);
cutitle3->Create("簇个数:",SS_CENTER,*rc,this,IDC_TITLE37);
cutitle3->ShowWindow(SW_SHOW);
cuvalue3=new CStatic();
rc=new CRect(174,191+198,215,191+216);
str.Format("%d",diskInfo->getClusterNum());
cuvalue3->Create(str,SS_CENTER,*rc,this,IDC_TITLE38);
cuvalue3->ShowWindow(SW_SHOW);
break;
case 2:
disk5=new CButton();
rc=new CRect(23,382+42,223,382+220);
disk5->Create(diskInfo->getDiskName(),BS_GROUPBOX,*rc,this,IDC_DISK5);
disk5->ShowWindow(SW_SHOW);
m_dused5.SetWindowPos(&(wndBottom),95,382+61,64,105,SWP_SHOWWINDOW);
m_dused5.ShowWindow(SW_SHOW);
diskvalue[index][0]=diskInfo->getDiskSize();
diskvalue[index][1]=diskInfo->getDUsedSize();
dtitle5=new CStatic();
rc=new CRect(25,382+178,62,382+196);
dtitle5->Create("容量:",SS_CENTER,*rc,this,IDC_TITLE51);
dtitle5->ShowWindow(SW_SHOW);
dvalue5=new CStatic();
rc=new CRect(67,382+178,109,382+196);
str.Format("%d",diskInfo->getDiskSize());
dvalue5->Create(str+"(G)",SS_CENTER,*rc,this,IDC_TITLE52);
dvalue5->ShowWindow(SW_SHOW);
ctitle5=new CStatic();
rc=new CRect(120,382+178,180,382+196);
ctitle5->Create("使用容量:",SS_CENTER,*rc,this,IDC_TITLE53);
ctitle5->ShowWindow(SW_SHOW);
cvalue5=new CStatic();
rc=new CRect(181,382+178,217,382+196);
str.Format("%d",diskInfo->getDUsedSize());
cvalue5->Create(str+"(G)",SS_CENTER,*rc,this,IDC_TITLE54);
cvalue5->ShowWindow(SW_SHOW);
cntitle5=new CStatic();
rc=new CRect(25,382+198,75,382+216);
cntitle5->Create("簇大小:",SS_CENTER,*rc,this,IDC_TITLE55);
cntitle5->ShowWindow(SW_SHOW);
cnvalue5=new CStatic();
rc=new CRect(76,382+198,116,382+216);
str.Format("%d",diskInfo->getClusterSize());
cnvalue5->Create(str,SS_CENTER,*rc,this,IDC_TITLE56);
cnvalue5->ShowWindow(SW_SHOW);
cutitle5=new CStatic();
rc=new CRect(120,382+198,172,382+216);
cutitle5->Create("簇个数:",SS_CENTER,*rc,this,IDC_TITLE57);
cutitle5->ShowWindow(SW_SHOW);
cuvalue5=new CStatic();
rc=new CRect(174,382+198,215,382+216);
str.Format("%d",diskInfo->getClusterNum());
cuvalue5->Create(str,SS_CENTER,*rc,this,IDC_TITLE58);
cuvalue5->ShowWindow(SW_SHOW);
}
}
else
{
id=index/2;
switch(id)
{
case 0:
disk2=new CButton();
rc=new CRect(210+23,42,210+223,220);
disk2->Create(diskInfo->getDiskName(),BS_GROUPBOX,*rc,this,IDC_DISK2);
disk2->ShowWindow(SW_SHOW);
m_dused2.SetWindowPos(&(wndBottom),210+95,61,64,105,SWP_SHOWWINDOW);
m_dused2.ShowWindow(SW_SHOW);
diskvalue[index][0]=diskInfo->getDiskSize();
diskvalue[index][1]=diskInfo->getDUsedSize();
dtitle2=new CStatic();
rc=new CRect(210+25,178,210+62,196);
dtitle2->Create("容量:",SS_CENTER,*rc,this,IDC_TITLE21);
dtitle2->ShowWindow(SW_SHOW);
dvalue2=new CStatic();
rc=new CRect(210+67,178,210+109,196);
str.Format("%d",diskInfo->getDiskSize());
dvalue2->Create(str+"(G)",SS_CENTER,*rc,this,IDC_TITLE22);
dvalue2->ShowWindow(SW_SHOW);
ctitle2=new CStatic();
rc=new CRect(210+120,178,210+180,196);
ctitle2->Create("使用容量:",SS_CENTER,*rc,this,IDC_TITLE23);
ctitle2->ShowWindow(SW_SHOW);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -