50.å
åå ç¨ç饼å¾
/*
#include "math.h"
#define Pi 3.1415927
#define Ri 800
private:
DWORD MemTotal,MemFree;
MEMORYSTATUS mem;
*/
::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
SetTimer(1,1000,NULL);
return 0;
}
void GetMemory(PCSTR singal,double m_memory,CString * str)
{
char m_ch='K';
m_memory/=1024;
if(m_memory>1024)
{
m_memory/=1024;
m_ch='M';
}
str->Format("%s%.2f%c%s",singal,m_memory,m_ch,"B");
}
::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
Invalidate();
CView::OnTimer(nIDEvent);
}
::OnDraw(CDC* pDC)
{
//CDeployDocDoc* pDoc = GetDocument();
//ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CString str;
int x,y;
double dFree,dUse;
CRect rect;
CPen Pen1,Pen2,*oldpen;
CBrush Brush1,Brush2,*oldbrush;
Pen1.CreatePen(PS_SOLID,50,RGB(255,0,0));
Brush1.CreateSolidBrush(RGB(255,0,0));
oldpen=pDC->SelectObject(&Pen1);
oldbrush=pDC->SelectObject(&Brush1);
::GlobalMemoryStatus(&mem);
MemTotal=mem.dwTotalPhys;
MemFree=mem.dwAvailPhys;
GetClientRect(&rect);
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(Ri+100,Ri+100);
pDC->SetViewportExt(rect.right/2,-rect.bottom/2);
pDC->SetViewportOrg(rect.right/2,rect.bottom/2);
dFree=(double)(Pi*2*MemFree/MemTotal);
dUse=(double)Pi*2-dFree;
x=-(int)(sin(dUse)*Ri);
y=(int)(cos(dUse)*Ri);
pDC->Pie(-Ri,Ri,Ri,-Ri,0,Ri,x,y);
pDC->SelectObject(oldpen);
pDC->SelectObject(oldbrush);
Brush2.CreateSolidBrush(RGB(0,160,255));
Pen2.CreatePen(PS_SOLID,50,RGB(0,160,255));
oldpen=pDC->SelectObject(&Pen2);
oldbrush=pDC->SelectObject(&Brush2);
pDC->Pie(-Ri,Ri,Ri,-Ri,x,y,0,Ri);
pDC->SelectObject(oldpen);
pDC->SelectObject(oldbrush);
GetMemory(_T("ç©çæ»å
å:"),MemTotal,&str); //ç©çæ»å
å
pDC->TextOut(300,300,str);
GetMemory(_T("å©ä½å
å:"),MemFree,&str); //å©ä½å
å
pDC->TextOut(300,200,str);
}
åèèµæï¼ç¾åº¦æåºï¼MFCå¿«æ·èååæ§ä»¶æä½å¤§å
¨