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

📄 miniframe.cpp

📁 一个操作系统资源监测器的需求、设计与实现
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MINIFRAME.cpp : implementation file
//

#include "stdafx.h"
#include "PMonitor.h"
#include "MINIFRAME.h"
#include "Parameter.h"
#include "SysInfo.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

///////////////
#define CPU_USAGE 0
#define MEMORY_USAGE 1
#define NETWORK_INPUT_USAGE 2
#define NETWORK_OUTPUT_USAGE 3

/////////////////////////////////////////////////////////////////////////////
// CMINIFRAME dialog

CMINIFRAME::CMINIFRAME(CWnd* pParent /*=NULL*/)
	: CDialog(CMINIFRAME::IDD, pParent)
{
	//
	//{{AFX_DATA_INIT(CMINIFRAME)
	//}}AFX_DATA_INIT
}


void CMINIFRAME::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMINIFRAME)
	DDX_Control(pDX, IDC_CTRL, m_control);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMINIFRAME, CDialog)
	//{{AFX_MSG_MAP(CMINIFRAME)
	ON_WM_PAINT()
	ON_WM_TIMER()
	ON_WM_CLOSE()
	ON_BN_CLICKED(IDC_CTRL, OnCtrl)
	ON_WM_MOUSEMOVE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMINIFRAME message handlers

//自定义全局变量
int cx=0,cy=0,dh=0;
CString cpu_inf="",memory_inf="",input_inf="",output_inf="";
int count=0;
int selobj[4]={-1,-1,-1,-1};

CSysInfo *sys=new CSysInfo();

BOOL CMINIFRAME::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	//获取预警信息
	this->GetLevelInfo();

	//确定监测对象
	if(objFlag[0])  //CPU
	{
		selobj[count]=CPU_USAGE;

		this->SetTimer(count,this->COLCYC*1000,NULL);

		count++;
	}

	if(objFlag[1])  //内存
	{
		selobj[count]=MEMORY_USAGE;

		this->SetTimer(count,this->COLCYC*1000,NULL);

		count++;
	}

	if(objFlag[2])  //网络流入量
	{
		selobj[count]=NETWORK_INPUT_USAGE;

		this->SetTimer(count,this->COLCYC*1000,NULL);

		count++;
	}

	if(objFlag[3])  //网络流出量
	{
		selobj[count]=NETWORK_OUTPUT_USAGE;

		this->SetTimer(count,this->COLCYC*1000,NULL);

		count++;
	}

	//确定窗口的大小和位置
	this->SetWindowPos(&(wndTopMost),600,0,56+40*count,36,SWP_SHOWWINDOW);

	//设定放大控制键
	
	bitmap.LoadBitmap(IDB_MAXARROW);
	this->m_control.SetBitmap((HBITMAP)bitmap.m_hObject);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CMINIFRAME::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	CWnd *pWnd=this->GetDlgItem(IDC_PLATFORM);
	pWnd->UpdateWindow();
	CRect rc;
	pWnd->GetWindowRect(&rc);
	CDC *pDC=pWnd->GetWindowDC();
	pDC->FillSolidRect(0,0,rc.Width(),rc.Height(),RGB(106,150,244));

	this->GetClientRect(rc);
	dc.FillSolidRect(0,0,rc.Width(),rc.Height(),RGB(106,150,244));
	
	// Do not call CDialog::OnPaint() for painting messages
}

void CMINIFRAME::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	switch(nIDEvent)
	{
	case 0:
		this->DrawDynInfo(selobj[0],0);
		break;
	case 1:
		this->DrawDynInfo(selobj[1],1);
		break;
	case 2:
		this->DrawDynInfo(selobj[2],2);
		break;
	case 3:
		this->DrawDynInfo(selobj[3],3);
	}
	
	CDialog::OnTimer(nIDEvent);
}

void CMINIFRAME::PassData(int *flag,int colCyc)
{
	this->objFlag=flag;
	this->COLCYC=colCyc;
}

void CMINIFRAME::GetLevelInfo()
{
	CString fstr,str;
	int start,pos;

	CParameter * param=new CParameter();

	//CPU
	fstr=param->getCStringValue("FRAME1");
	if(fstr=="")
	{
		level[0][0]=10;
		level[0][1]=50;
		level[0][2]=80;
		level[0][3]=90;
		level[0][4]=100;

		color[0][0]=255;
		color[0][1]=16744703;
		color[0][2]=16744576;
		color[0][3]=65280;
		color[0][4]=12632256;
	}
	else
	{
		start=fstr.Find("Level1",0);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		if(str=="Sel")
		{
			pos++;
			start=fstr.Find(" ",pos);
			str=fstr.Mid(pos,start-pos);
			color[0][4]=atoi(str);

			level[0][4]=100;
		}

		start=fstr.Find("Level2",pos);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		if(str=="Sel")
		{
			pos++;
			start=fstr.Find(" ",pos);
			str=fstr.Mid(pos,start-pos);
			color[0][3]=atoi(str);

			start++;
			pos=fstr.Find(" ",start);
			str=fstr.Mid(start,pos-start);
			level[0][3]=atoi(str);
		}

		start=fstr.Find("Level3",pos);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		if(str=="Sel")
		{
			pos++;
			start=fstr.Find(" ",pos);
			str=fstr.Mid(pos,start-pos);
			color[0][2]=atoi(str);

			start++;
			pos=fstr.Find(" ",start);
			str=fstr.Mid(start,pos-start);
			level[0][2]=atoi(str);
		}

		start=fstr.Find("Level4",pos);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		if(str=="Sel")
		{
			pos++;
			start=fstr.Find(" ",pos);
			str=fstr.Mid(pos,start-pos);
			color[0][1]=atoi(str);

			start++;
			pos=fstr.Find(" ",start);
			str=fstr.Mid(start,pos-start);
			level[0][1]=atoi(str);
		}

		start=fstr.Find("Level5",pos);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		color[0][0]=atoi(str);

		pos++;
		start=fstr.Find("<",start);
		str=fstr.Mid(pos,start-pos);
		level[0][0]=atoi(str);
	}

	//内存
	fstr=param->getCStringValue("FRAME2");
	if(fstr=="")
	{
		level[1][0]=10;
		level[1][1]=50;
		level[1][2]=80;
		level[1][3]=90;
		level[1][4]=100;

		color[1][0]=255;
		color[1][1]=16744703;
		color[1][2]=16744576;
		color[1][3]=65280;
		color[1][4]=12632256;
	}
	else
	{
		start=fstr.Find("Level1",0);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		if(str=="Sel")
		{
			pos++;
			start=fstr.Find(" ",pos);
			str=fstr.Mid(pos,start-pos);
			color[1][4]=atoi(str);

			level[1][4]=100;
		}

		start=fstr.Find("Level2",pos);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		if(str=="Sel")
		{
			pos++;
			start=fstr.Find(" ",pos);
			str=fstr.Mid(pos,start-pos);
			color[1][3]=atoi(str);

			start++;
			pos=fstr.Find(" ",start);
			str=fstr.Mid(start,pos-start);
			level[1][3]=atoi(str);
		}

		start=fstr.Find("Level3",pos);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		if(str=="Sel")
		{
			pos++;
			start=fstr.Find(" ",pos);
			str=fstr.Mid(pos,start-pos);
			color[1][2]=atoi(str);

			start++;
			pos=fstr.Find(" ",start);
			str=fstr.Mid(start,pos-start);
			level[1][2]=atoi(str);
		}

		start=fstr.Find("Level4",pos);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		if(str=="Sel")
		{
			pos++;
			start=fstr.Find(" ",pos);
			str=fstr.Mid(pos,start-pos);
			color[1][1]=atoi(str);

			start++;
			pos=fstr.Find(" ",start);
			str=fstr.Mid(start,pos-start);
			level[1][1]=atoi(str);
		}

		start=fstr.Find("Level5",pos);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		color[1][0]=atoi(str);

		pos++;
		start=fstr.Find("<",start);
		str=fstr.Mid(pos,start-pos);
		level[1][0]=atoi(str);
	}

	//网络流入量
	fstr=param->getCStringValue("FRAME3");
	if(fstr=="")
	{
		level[2][0]=10;
		level[2][1]=50;
		level[2][2]=80;
		level[2][3]=90;
		level[2][4]=100;

		color[2][0]=255;
		color[2][1]=16744703;
		color[2][2]=16744576;
		color[2][3]=65280;
		color[2][4]=12632256;
	}
	else
	{
		start=fstr.Find("Level1",0);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		if(str=="Sel")
		{
			pos++;
			start=fstr.Find(" ",pos);
			str=fstr.Mid(pos,start-pos);
			color[2][4]=atoi(str);

			level[2][4]=100;
		}

		start=fstr.Find("Level2",pos);
		start+=7;
		pos=fstr.Find(" ",start);
		str=fstr.Mid(start,pos-start);
		if(str=="Sel")
		{
			pos++;

⌨️ 快捷键说明

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