zoukankan      html  css  js  c++  java
  • 【Demo 0044】带皮肤的窗体

    我们常常看到许多软件如QQ, 360, 金山词霸等都非常的漂亮,看不到我们通常看到的Window窗体和控件。 本节我们学习一下,当然技术上也是老话重谈,有点点技术就是双重缓冲的解决切换闪烁的问题.

    一、关键代码

        1. 载入一个背影到内存(确保窗体与背影大小一致)

    CREATESTRUCT cs = *(CREATESTRUCT*)lParam;
    hBmpBK = LoadBitmap(cs.hInstance, MAKEINTRESOURCE(IDB_BACKGROUND));
    BITMAP bmp;
    GetObject(hBmpBK, sizeof(BITMAP), (LPVOID)&bmp);
    MoveWindow(hWnd, 0, 0, bmp.bmWidth, bmp.bmHeight, FALSE);

        2.  双缓冲绘图(一个作图缓冲, 作完图再绘到显示缓冲上)

    case WM_PAINT:
    {
        RECT rtClient;
        GetClientRect(hWnd, &rtClient);

        PAINTSTRUCT ps;
        HDC hDC        = BeginPaint(hWnd, &ps);    
        HDC hMemDC = CreateCompatibleDC(hDC);
        HBITMAP hBitmap = CreateCompatibleBitmap(hDC, rtClient.right - rtClient.left, rtClient.bottom - rtClient.top);
        SelectObject(hMemDC, hBitmap);    
        BitBlt(hDC, 0, 0, rtClient.right - rtClient.left, rtClient.bottom - rtClient.top, hMemDC, 0, 0, SRCCOPY);
        DeleteObject(hMemDC);        
        DeleteObject(hBitmap);
        EndPaint(hWnd, &ps);

        return 0;
    }

    二、程序效果

        image

    演示代码

  • 相关阅读:
    JSONObject对象和JSONArray对象的使用
    toString和getString的区别
    Pytorch 实验中非常有效的代码段
    TeXworks 高效使用指南
    linux 设置新用户
    ICML-21 待读的 Paper
    2019年12月19日记戴老师的讲座
    matplotlib 调整图片的 font size
    IJCAI 投稿 Type-3 字体
    matplotlib 中 figsize 和 dpi 之间的关系
  • 原文地址:https://www.cnblogs.com/ztercel/p/2167853.html
Copyright © 2011-2022 走看看