gpt4 book ai didi

C++ win32 api双缓冲示例帮助请

转载 作者:太空宇宙 更新时间:2023-11-04 14:02:47 25 4
gpt4 key购买 nike

所以,我知道人们在不同的帖子上谈论双缓冲,但每当我尝试它时,我都会黑屏!这是因为我看到的示例(我需要示例)不像我那样编程 - 就像使用不同的库一样。我暂时只用。无论如何,这里是初始程序片段,它闪烁得很厉害:

void drawRed (HDC hdc)
{
HDC hdcMemory;
hdcMemory = CreateCompatibleDC(hdc);

while (1==1){

SelectObject(hdcMemory, redmask);
BitBlt(hdc, 132, 132, 128, 128, hdcMemory, 0, 0, SRCAND);

SelectObject(hdcMemory, red);
BitBlt(hdc, 132, 132, 128, 128, hdcMemory, 0, 0, SRCPAINT);
}

DeleteDC(hdcMemory);
}

我查看并尝试了这个:

void drawRed (HDC hdc)
{
HDC hDC = GetDC(hnd);

HDC hdcMemory;
hdcMemory = CreateCompatibleDC(hdc);

HDC memDC = CreateCompatibleDC(hDC);
HBITMAP hMemBmp = CreateCompatibleBitmap(hDC,100,100);
HBITMAP hOldBmp = (HBITMAP)SelectObject(memDC,hMemBmp);

SelectObject(hdcMemory, hbmMem);
BitBlt(hDC, -100, -100, 128, 128, memDC, 0, 0, SRCAND);

SelectObject(hdcMemory, red);
BitBlt(hDC, -100, -100, 128, 128, memDC, 0, 0, SRCPAINT);

SelectObject(hdcMemory, red);
BitBlt(hDC, 132, 132, 128, 128, memDC, 0, 0, SRCCOPY);

DeleteDC(hdcMemory);
}

这只是显示一个黑框。我不知道我应该怎么做,所以你能不能把原来的代码块改成双缓冲的?谢谢!

我用的是dev-c++ ide。

最佳答案

对于 MFC,您可以使用 Keith Rule 的 CMemDC 类。有关于此类的好文章和示例 - http://www.codeproject.com/Articles/33/Flicker-Free-Drawing-In-MFC

MFC 功能包中包含的类似类 - http://msdn.microsoft.com/en-us/library/cc308997.aspx

关于C++ win32 api双缓冲示例帮助请,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18454265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com