📄 pmonitordlg.cpp
字号:
CRect rc2;
pWnd->GetWindowRect(&rc2);
pWnd->UpdateWindow();
int *info;
info=sys->getMemoryUsedInfo();
CString str;
str.Format("%d",info[0]);
this->DrawDynGraph(pDC1,pDC2,rc1,rc2,y,memory_count,info[1],1,str);
}
if(niflag)
{
int value=sys->getNetWorkInput();
int y=this->DrawDynBg(IDC_DYNCOL3,IDC_DYNPLOY3);
pWnd=this->GetDlgItem(IDC_DYNCOL3);
CDC *pDC1;
pDC1=pWnd->GetDC();
CRect rc1;
pWnd->GetWindowRect(&rc1);
pWnd->UpdateWindow();
pWnd=GetDlgItem(IDC_DYNPLOY3);
CDC *pDC2;
pDC2=pWnd->GetDC();
CRect rc2;
pWnd->GetWindowRect(&rc2);
pWnd->UpdateWindow();
CString str;
str.Format("%d",value);
int percent=(int)(((float)value/1000000)*100);
this->DrawDynGraph(pDC1,pDC2,rc1,rc2,y,input_count,percent,2,str);
}
if(noflag)
{
int value=sys->getNetWorkOutput();
int y=this->DrawDynBg(IDC_DYNCOL4,IDC_DYNPLOY4);
pWnd=this->GetDlgItem(IDC_DYNCOL4);
CDC *pDC1;
pDC1=pWnd->GetDC();
CRect rc1;
pWnd->GetWindowRect(&rc1);
pWnd->UpdateWindow();
pWnd=GetDlgItem(IDC_DYNPLOY4);
CDC *pDC2;
pDC2=pWnd->GetDC();
CRect rc2;
pWnd->GetWindowRect(&rc2);
pWnd->UpdateWindow();
CString str;
str.Format("%d",value);
int percent=(int)(((float)value/1000000)*100);
this->DrawDynGraph(pDC1,pDC2,rc1,rc2,y,output_count,percent,3,str);
}
return TRUE; // return TRUE unless you set the focus to a control
}
void CPMonitorDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CPMonitorDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
//新代码
CWnd *pWnd;
if(index>0)
{
pWnd=this->GetDlgItem(IDC_DISKPIC1);
pWnd->UpdateWindow();
this->DrawDiskInfo(diskvalue[0][0],diskvalue[0][1],IDC_DISKPIC1);
}
if(index>1)
{
pWnd=this->GetDlgItem(IDC_DISKPIC2);
pWnd->UpdateWindow();
this->DrawDiskInfo(diskvalue[1][0],diskvalue[1][1],IDC_DISKPIC2);
}
if(index>2)
{
pWnd=this->GetDlgItem(IDC_DISKPIC3);
pWnd->UpdateWindow();
this->DrawDiskInfo(diskvalue[2][0],diskvalue[2][1],IDC_DISKPIC3);
}
if(index>3)
{
pWnd=this->GetDlgItem(IDC_DISKPIC4);
pWnd->UpdateWindow();
this->DrawDiskInfo(diskvalue[3][0],diskvalue[3][1],IDC_DISKPIC4);
}
if(index>4)
{
pWnd=this->GetDlgItem(IDC_DISKPIC5);
pWnd->UpdateWindow();
this->DrawDiskInfo(diskvalue[4][0],diskvalue[4][1],IDC_DISKPIC5);
}
if(index>5)
{
pWnd=this->GetDlgItem(IDC_DISKPIC6);
pWnd->UpdateWindow();
this->DrawDiskInfo(diskvalue[5][0],diskvalue[5][1],IDC_DISKPIC6);
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CPMonitorDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CPMonitorDlg::OnSelchangeMain(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
if(m_main.GetCurSel()==0)
{
//显示部分
if(index>0)
{
disk1->ShowWindow(SW_SHOW);
m_dused1.ShowWindow(SW_SHOW);
dtitle1->ShowWindow(SW_SHOW);
dvalue1->ShowWindow(SW_SHOW);
ctitle1->ShowWindow(SW_SHOW);
cvalue1->ShowWindow(SW_SHOW);
cntitle1->ShowWindow(SW_SHOW);
cnvalue1->ShowWindow(SW_SHOW);
cutitle1->ShowWindow(SW_SHOW);
cuvalue1->ShowWindow(SW_SHOW);
}
if(index>1)
{
disk2->ShowWindow(SW_SHOW);
m_dused2.ShowWindow(SW_SHOW);
dtitle2->ShowWindow(SW_SHOW);
dvalue2->ShowWindow(SW_SHOW);
ctitle2->ShowWindow(SW_SHOW);
cvalue2->ShowWindow(SW_SHOW);
cntitle2->ShowWindow(SW_SHOW);
cnvalue2->ShowWindow(SW_SHOW);
cutitle2->ShowWindow(SW_SHOW);
cuvalue2->ShowWindow(SW_SHOW);
}
if(index>2)
{
disk3->ShowWindow(SW_SHOW);
m_dused3.ShowWindow(SW_SHOW);
dtitle3->ShowWindow(SW_SHOW);
dvalue3->ShowWindow(SW_SHOW);
ctitle3->ShowWindow(SW_SHOW);
cvalue3->ShowWindow(SW_SHOW);
cntitle3->ShowWindow(SW_SHOW);
cnvalue3->ShowWindow(SW_SHOW);
cutitle3->ShowWindow(SW_SHOW);
cuvalue3->ShowWindow(SW_SHOW);
}
if(index>3)
{
disk4->ShowWindow(SW_SHOW);
m_dused4.ShowWindow(SW_SHOW);
dtitle4->ShowWindow(SW_SHOW);
dvalue4->ShowWindow(SW_SHOW);
ctitle4->ShowWindow(SW_SHOW);
cvalue4->ShowWindow(SW_SHOW);
cntitle4->ShowWindow(SW_SHOW);
cnvalue4->ShowWindow(SW_SHOW);
cutitle4->ShowWindow(SW_SHOW);
cuvalue4->ShowWindow(SW_SHOW);
}
if(index>4)
{
disk5->ShowWindow(SW_SHOW);
m_dused5.ShowWindow(SW_SHOW);
dtitle5->ShowWindow(SW_SHOW);
dvalue5->ShowWindow(SW_SHOW);
ctitle5->ShowWindow(SW_SHOW);
cvalue5->ShowWindow(SW_SHOW);
cntitle5->ShowWindow(SW_SHOW);
cnvalue5->ShowWindow(SW_SHOW);
cutitle5->ShowWindow(SW_SHOW);
cuvalue5->ShowWindow(SW_SHOW);
}
if(index>5)
{
disk6->ShowWindow(SW_SHOW);
m_dused6.ShowWindow(SW_SHOW);
dtitle6->ShowWindow(SW_SHOW);
dvalue6->ShowWindow(SW_SHOW);
ctitle6->ShowWindow(SW_SHOW);
cvalue6->ShowWindow(SW_SHOW);
cntitle6->ShowWindow(SW_SHOW);
cnvalue6->ShowWindow(SW_SHOW);
cutitle6->ShowWindow(SW_SHOW);
cuvalue6->ShowWindow(SW_SHOW);
}
//不能显示部分
m_list.ShowWindow(SW_HIDE);
m_finish.ShowWindow(SW_HIDE);
m_frame1.ShowWindow(SW_HIDE);
m_frame2.ShowWindow(SW_HIDE);
m_frame3.ShowWindow(SW_HIDE);
m_frame4.ShowWindow(SW_HIDE);
m_frame5.ShowWindow(SW_HIDE);
m_frame6.ShowWindow(SW_HIDE);
m_frame7.ShowWindow(SW_HIDE);
m_frame8.ShowWindow(SW_HIDE);
m_col1.ShowWindow(SW_HIDE);
m_col2.ShowWindow(SW_HIDE);
m_col3.ShowWindow(SW_HIDE);
m_col4.ShowWindow(SW_HIDE);
m_ploy1.ShowWindow(SW_HIDE);
m_ploy2.ShowWindow(SW_HIDE);
m_ploy3.ShowWindow(SW_HIDE);
m_ploy4.ShowWindow(SW_HIDE);
}
else if(m_main.GetCurSel()==1)
{
this->ShowTag(0);
}
else if(m_main.GetCurSel()==2)
{
this->ShowTag(1);
}
else if(m_main.GetCurSel()==3)
{
this->ShowTag(2);
}
*pResult = 0;
}
void CPMonitorDlg::OnOK()
{
// TODO: Add extra validation here
int pid=m_list.GetSelectionMark();
}
void CPMonitorDlg::DrawDiskInfo(int total, int cur, UINT nID)
{
CWnd *pWnd=this->GetDlgItem(nID);
CDC *pDC=pWnd->GetDC();
CRect rc;
pWnd->GetWindowRect(&rc);
int width=rc.Width()-2;
int height=rc.Height()-2;
pDC->FillSolidRect(0,0,width,height,RGB(0,0,0));
int percent=(int)(100*((float)cur/total));
int x0=width/4;
int y0=5;
int dh=height-y0-5;
int dx=x0-1;
int dy=dh/25;
int y1=this->DrawDiskBg(pDC,x0,y0,dx,dy);
this->DrawDiskValue(pDC,x0,y1,dx,dy,percent/4);
this->DrawDiskText(pDC,x0,y1,dx,percent);
}
int CPMonitorDlg::DrawDiskBg(CDC *pDC,int x0,int y0,int dx,int dy)
{
int x1,y1;
for(int i=0;i<25;i++)
{
x1=x0;
y1=y0+3*i;
for(int j=0;j<(dx/2);j++)
{
pDC->FillSolidRect(x1+2*j,y1,1,1,RGB(22,81,59));
pDC->FillSolidRect(x1+2*j+1,y1+1,1,1,RGB(22,81,59));
}
x1=x0+2+dx;
for(j=0;j<(dx/2);j++)
{
pDC->FillSolidRect(x1+2*j,y1,1,1,RGB(22,81,59));
pDC->FillSolidRect(x1+2*j+1,y1+1,1,1,RGB(22,81,59));
}
}
pDC->FillSolidRect(x0,y1+3,dx,1,RGB(2,252,4));
pDC->FillSolidRect(x0+2+dx,y1+3,dx,1,RGB(2,252,4));
return y1;
}
void CPMonitorDlg::DrawDiskValue(CDC *pDC, int x0, int y1, int dx, int dy,int percent)
{
int x2,y2;
for(int i=0;i<percent;i++)
{
x2=x0;
y2=y1-3*i;
pDC->FillSolidRect(x2,y2,dx,2,RGB(2,252,4));
x2=x0+2+dx;
pDC->FillSolidRect(x2,y2,dx,2,RGB(2,252,4));
}
}
void CPMonitorDlg::DrawDiskText(CDC *pDC, int x0, int y1, int dx, int percent)
{
CString str;
str.Format("%d",percent);
str+="%";
CFont *ft=new CFont();
ft->CreateFont(0,5,0,0,FW_NORMAL,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"MyFont");
pDC->SelectObject(ft);
pDC->DrawText(str,new CRect(x0,y1+6,x0+2*dx+3,y1+24),DT_CENTER);
}
void CPMonitorDlg::ShowTag(int tid)
{
int i=0;
int length;
CString str;
CProcessInfo *p;
switch(tag[tid])
{
case PROCESS_INFO:
//显示部分
m_list.ShowWindow(SW_SHOW);
m_finish.ShowWindow(SW_SHOW);
pInfo=&sys->getProcessInfo();
p=pInfo;
while(p!=NULL)
{
str=p->getProcessName();
m_list.InsertItem(i,str);
str.Format("%d",p->getPCpuSize());
m_list.SetItemText(i,1,str);
str.Format("%d",p->getPMemorySize());
length=str.GetLength();
if(length>3)
{
str=str.Left(length-3)+","+str.Right(3);
}
m_list.SetItemText(i,2,str+" K");
p=p->next;
i++;
}
//不能显示部分
m_frame1.ShowWindow(SW_HIDE);
m_frame2.ShowWindow(SW_HIDE);
m_frame3.ShowWindow(SW_HIDE);
m_frame4.ShowWindow(SW_HIDE);
m_frame5.ShowWindow(SW_HIDE);
m_frame6.ShowWindow(SW_HIDE);
m_frame7.ShowWindow(SW_HIDE);
m_frame8.ShowWindow(SW_HIDE);
m_col1.ShowWindow(SW_HIDE);
m_col2.ShowWindow(SW_HIDE);
m_col3.ShowWindow(SW_HIDE);
m_col4.ShowWindow(SW_HIDE);
m_ploy1.ShowWindow(SW_HIDE);
m_ploy2.ShowWindow(SW_HIDE);
m_ploy3.ShowWindow(SW_HIDE);
m_ploy4.ShowWindow(SW_HIDE);
break;
case HOST_PERFORMANCE:
//不能显示部分
m_list.ShowWindow(SW_HIDE);
m_finish.ShowWindow(SW_HIDE);
m_frame5.ShowWindow(SW_HIDE);
m_frame6.ShowWindow(SW_HIDE);
m_frame7.ShowWindow(SW_HIDE);
m_frame8.ShowWindow(SW_HIDE);
m_col3.ShowWindow(SW_HIDE);
m_col4.ShowWindow(SW_HIDE);
m_ploy3.ShowWindow(SW_HIDE);
m_ploy4.ShowWindow(SW_HIDE);
//显示部分
m_frame1.ShowWindow(SW_SHOW);
m_frame2.ShowWindow(SW_SHOW);
m_col1.ShowWindow(SW_SHOW);
m_ploy1.ShowWindow(SW_SHOW);
if(cflag)
{
m_frame1.SetWindowText("CPU使用");
m_frame2.SetWindowText("CPU使用记录");
if(mflag)
{
m_frame3.ShowWindow(SW_SHOW);
m_frame4.ShowWindow(SW_SHOW);
m_col2.ShowWindow(SW_SHOW);
m_ploy2.ShowWindow(SW_SHOW);
m_frame3.SetWindowText("内存使用");
m_frame4.SetWindowText("内存使用记录");
}
}
else
{
m_frame1.SetWindowText("内存使用");
m_frame2.SetWindowText("内存使用记录");
}
break;
case NETWORK_FLOW:
//不能显示部分
m_list.ShowWindow(SW_HIDE);
m_finish.ShowWindow(SW_HIDE);
m_frame1.ShowWindow(SW_HIDE);
m_frame2.ShowWindow(SW_HIDE);
m_frame3.ShowWindow(SW_HIDE);
m_frame4.ShowWindow(SW_HIDE);
m_col1.ShowWindow(SW_HIDE);
m_col2.ShowWindow(SW_HIDE);
m_ploy1.ShowWindow(SW_HIDE);
m_ploy2.ShowWindow(SW_HIDE);
//显示部分
m_frame5.ShowWindow(SW_SHOW);
m_frame6.ShowWindow(SW_SHOW);
m_col3.ShowWindow(SW_SHOW);
m_ploy3.ShowWindow(SW_SHOW);
if(niflag)
{
m_frame5.SetWindowText("网络流入量");
m_frame6.SetWindowText("网络流入量记录");
if(noflag)
{
m_frame7.ShowWindow(SW_SHOW);
m_frame8.ShowWindow(SW_SHOW);
m_col4.ShowWindow(SW_SHOW);
m_ploy4.ShowWindow(SW_SHOW);
m_frame7.SetWindowText("网络流出量");
m_frame8.SetWindowText("网络流出量记录");
}
}
else
{
m_frame5.SetWindowText("网络流出量");
m_frame6.SetWindowText("网络流出量记录");
}
}
//不能显示部分
if(index>0)
{
disk1->ShowWindow(SW_HIDE);
m_dused1.ShowWindow(SW_HIDE);
dtitle1->ShowWindow(SW_HIDE);
dvalue1->ShowWindow(SW_HIDE);
ctitle1->ShowWindow(SW_HIDE);
cvalue1->ShowWindow(SW_HIDE);
cntitle1->ShowWindow(SW_HIDE);
cnvalue1->ShowWindow(SW_HIDE);
cutitle1->ShowWindow(SW_HIDE);
cuvalue1->ShowWindow(SW_HIDE);
}
if(index>1)
{
disk2->ShowWindow(SW_HIDE);
m_dused2.ShowWindow(SW_HIDE);
dtitle2->ShowWindow(SW_HIDE);
dvalue2->ShowWindow(SW_HIDE);
ctitle2->ShowWindow(SW_HIDE);
cvalue2->ShowWindow(SW_HIDE);
cntitle2->ShowWindow(SW_HIDE);
cnvalue2->ShowWindow(SW_HIDE);
cutitle2->ShowWindow(SW_HIDE);
cuvalue2->ShowWindow(SW_HIDE);
}
if(index>2)
{
disk3->ShowWindow(SW_HIDE);
m_dused3.ShowWindow(SW_HIDE);
dtitle3->ShowWindow(SW_HIDE);
dvalue3->ShowWindow(SW_HIDE);
ctitle3->ShowWindow(SW_HIDE);
cvalue3->ShowWindow(SW_HIDE);
cntitle3->ShowWindow(SW_HIDE);
cnvalue3->ShowWindow(SW_HIDE);
cutitle3->ShowWindow(SW_HIDE);
cuvalue3->ShowWindow(SW_HIDE);
}
if(index>3)
{
disk4->ShowWindow(SW_HIDE);
m_dused4.ShowWindow(SW_HIDE);
dtitle4->ShowWindow(SW_HIDE);
dvalue4->ShowWindow(SW_HIDE);
ctitle4->ShowWindow(SW_HIDE);
cvalue4->ShowWindow(SW_HIDE);
cntitle4->ShowWindow(SW_HIDE);
cnvalue4->ShowWindow(SW_HIDE);
cutitle4->ShowWindow(SW_HIDE);
cuvalue4->ShowWindow(SW_HIDE);
}
if(index>4)
{
disk5->ShowWindow(SW_HIDE);
m_dused5.ShowWindow(SW_HIDE);
dtitle5->ShowWindow(SW_HIDE);
dvalue5->ShowWindow(SW_HIDE);
ctitle5->ShowWindow(SW_HIDE);
cvalue5->ShowWindow(SW_HIDE);
cntitle5->ShowWindow(SW_HIDE);
cnvalue5->ShowWindow(SW_HIDE);
cutitle5->ShowWindow(SW_HIDE);
cuvalue5->ShowWindow(SW_HIDE);
}
if(index>5)
{
disk6->ShowWindow(SW_HIDE);
m_dused6.ShowWindow(SW_HIDE);
dtitle6->ShowWindow(SW_HIDE);
dvalue6->ShowWindow(SW_HIDE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -