GDI+ 双缓存 和 刷新桌面(F5)

GDI+双缓存

    POINT currentPoint;
    GetCursorPos(&currentPoint);
    HWND hWnd = ::GetDesktopWindow();
    int nWidth = GetSystemMetrics(SM_CXSCREEN);
    int nHeight = GetSystemMetrics(SM_CYSCREEN);
    RECT r;
    GetWindowRect(hWnd, &r);
    Bitmap bmp(nWidth, nHeight);
    Graphics mem_graphic(&bmp);
    mem_graphic.SetSmoothingMode(Gdiplus::SmoothingModeHighQuality);
    static bool bChange = false;
    Pen p(bChange ? Color(0, 255, 0) : Color(255, 0, 0));
    bChange = !bChange;
    Rect rt(currentPoint.x - 10, currentPoint.y - 10, 20, 20);
    mem_graphic.DrawEllipse(&p, rt);
    mem_graphic.DrawLine(&p,rt.X, currentPoint.y, rt.X + rt.Width, currentPoint.y);
    mem_graphic.DrawLine(&p,currentPoint.x, rt.Y, currentPoint.x , rt.Y + rt.Height);
    Rect rt_small(currentPoint.x - 5, currentPoint.y - 5, 10, 10);
    mem_graphic.DrawEllipse(&p, rt_small);

    HDC hDC= ::GetDC(hWnd);
    Graphics graphics(hDC);
    CachedBitmap cachedBmp(&bmp,&graphics);   //important
    graphics.DrawCachedBitmap(&cachedBmp,0,0);

刷新桌面(F5)

        ::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST | SHCNF_FLUSH, 0, 0);

 

转载于:https://www.cnblogs.com/john-h/p/6094716.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值