Пример #1
0
void ondraw(HWND hwnd)
{
    DWORD tick = GetTickCount();

    PAINTSTRUCT ps;
    HDC hdc = BeginPaint(hwnd, &ps);            // 获取重绘消息的句柄数据

    SetBkColor(hdc, GetSysColor(COLOR_WINDOW)); // 设置背景色以便传到画布

    if (_canvas.beginPaint(hwnd, hdc)) {        // 开始在画布上绘制
        if (!_canvas.drawCachedBitmap()) {      // 显示上次保存的内容
            _canvas.clearWindow();              // 使用背景色清除显示
            TestCanvas::test(&_canvas, _tests); // 绘制测试图形
            if ((_tests & 0x400) == 0)          // not testDynCurves
                _canvas.saveCachedBitmap();     // 缓存显示的内容
        }
        dyndraw(&_canvas);                      // 绘制动态图形
        _canvas.endPaint();                     // 结束绘制
    }
    EndPaint(hwnd, &ps);
    tick = GetTickCount() - tick;
}