加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C++图形化动态显示内存占用率的工具

发布时间:2020-12-16 07:42:58 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #include "math.h"#define Pi 3.1415927void CMfcSdiSampleView::OnDraw(CDC* pDC){ CMfcSdiSampleDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); i

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#include "math.h"
#define Pi 3.1415927

void CMfcSdiSampleView::OnDraw(CDC* pDC)
{
    CMfcSdiSampleDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;

    // TODO: add draw code for native data here
    CRect rect;
    GetClientRect(&rect);
    int radius=800;
    pDC->SetMapMode(MM_ISOTROPIC);
    pDC->SetWindowExt(radius+100,radius+100);
    pDC->SetViewportExt(rect.right/2,-rect.bottom/2);
    pDC->SetViewportOrg(rect.right/2,rect.bottom/2);

    //获取内容状态信息
    MEMORYSTATUS mem;
    ::GlobalMemoryStatus(&mem);
    SIZE_T MemTotal=mem.dwTotalPhys;
    SIZE_T MemAvail=mem.dwAvailPhys;
    double dFree=(double)(Pi*2*MemAvail/MemTotal);
    double dUsed=(double)Pi*2-dFree;
    int x=-(int)(sin(dUsed)*radius);
    int y= (int)(cos(dUsed)*radius);

    CPen pen1,pen2,*oldpen;
    CBrush brush1,brush2,*oldbrush;
    //绘制已用
    pen1.CreatePen(PS_SOLID,50,RGB(255,0));
    brush1.CreateSolidBrush(RGB(255,0));
    oldpen=pDC->SelectObject(&pen1);
    oldbrush=pDC->SelectObject(&brush1);
    pDC->Pie(-radius,radius,-radius,x,y);
    pDC->SelectObject(oldpen);
    pDC->SelectObject(oldbrush);
    //绘制未用
    brush2.CreateSolidBrush(RGB(0,160,255));
    pen2.CreatePen(PS_SOLID,RGB(0,255));
    oldpen=pDC->SelectObject(&pen2);
    oldbrush=pDC->SelectObject(&brush2);
    pDC->Pie(-radius,y,radius);
    pDC->SelectObject(oldpen);
    pDC->SelectObject(oldbrush);

    pDC->SetBkMode(TRANSPARENT);
    CString str;
    str.Format(_T("Total: %dKB"),MemTotal/1024); //物理总内存
    pDC->TextOut(300,300,str);
    str.Format(_T("Available: %dKB"),MemAvail/1024); //剩余内存
    pDC->TextOut(300,200,str);
}

void CMfcSdiSampleView::OnTimer(UINT_PTR nIDEvent)
{
    // TODO: Add your message handler code here and/or call default
    Invalidate();
    CView::OnTimer(nIDEvent);
}

int CMfcSdiSampleView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CView::OnCreate(lpCreateStruct) == -1)
        return -1;

    // TODO:  Add your specialized creation code here
    SetTimer(1,1000,NULL);
    return 0;
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读