相关疑难解决方法(0)

双缓冲?Win32 c ++

我正在尝试实现双缓冲但它似乎不起作用,即图形仍然闪烁.

每次鼠标移动时都会调用WM_PAINT.(WM_MOUSEMOVE)

粘贴WM_PAINT如下:

case WM_PAINT:
        {
            hdc = BeginPaint(hWnd, &ps);
            // TODO: Add any drawing code here...
            RECT rect;
            GetClientRect(hWnd, &rect);
            int width=rect.right;
            int height=rect.bottom;

            HDC backbuffDC = CreateCompatibleDC(hdc);

            HBITMAP backbuffer = CreateCompatibleBitmap( hdc, width, height);

            int savedDC = SaveDC(backbuffDC);
            SelectObject( backbuffDC, backbuffer );
            HBRUSH hBrush = CreateSolidBrush(RGB(255,255,255));
            FillRect(backbuffDC,&rect,hBrush);
            DeleteObject(hBrush);


            if(fileImport)
            {
                importFile(backbuffDC);
            }

            if(renderWiredCube)
            {
                wireframeCube(backbuffDC);
            }

            if(renderColoredCube)
            {
                renderColorCube(backbuffDC);

            }

            BitBlt(hdc,0,0,width,height,backbuffDC,0,0,SRCCOPY);
            RestoreDC(backbuffDC,savedDC);

            DeleteObject(backbuffer);
            DeleteDC(backbuffDC);

            EndPaint(hWnd, &ps);
        }
Run Code Online (Sandbox Code Playgroud)

c++ gdi win32gui

7
推荐指数
1
解决办法
7410
查看次数

WinAPI双缓冲

默认的winAPI应用程序没有双缓冲.相反,它确实能够确保只绘制需要绘制的内容,并使其具有无缝外观.但是,当您调整窗口大小时,需要重新绘制整个窗口,这会导致控件,选项卡上的背景以及选项卡的白色之间出现闪烁.

所以我的问题是,在我的应用程序中支持双缓冲的最简单方法是什么?

c++ winapi double-buffering

4
推荐指数
2
解决办法
5044
查看次数

标签 统计

c++ ×2

double-buffering ×1

gdi ×1

win32gui ×1

winapi ×1