C ++ WIN32 API绘图 - 屏幕未更新

时间:2013-08-30 11:30:59

标签: c++ paint win32gui

我有一个游戏循环,它可以调用draw()函数,然后更新屏幕。以下代码有效:

void draw(){
    Paintcache = GetDC(windows[0]);
    rect.left = 0;rect.top=0;rect.right=1280;rect.bottom=720;
    FillRect(Paintcache,&rect,COLOR_WHITE); 
    drawPlayers();
    drawEntities();
    ReleaseDC(windows[0],Paintcache);
}

因为(据我所知)不使用任何缓存,我想确保我先在第二个hdc上绘制所有内容,然后将其复制到主窗口。我尝试过几个方面,包括下面的代码示例,但这不起作用。

HDC cDC = GetDC(windows[0]);    
Paintcache = BeginPaint(windows[0],&ps);

rect.left = 0;rect.top=0;rect.right=1280;rect.bottom=720;
FillRect(Paintcache,&rect,COLOR_WHITE); 
drawPlayers();
drawEntities();


BitBlt(cDC,0,0,1280,720,Paintcache,0,0,SRCCOPY);
ReleaseDC(windows[0],cDC);
EndPaint(windows[0],&ps);

第一次调用它(在启动时,在WM_PAINT中)它可以工作,之后,任何新调用都不再更新屏幕。我也尝试使用以下代码发送WM_PAINT而不是直接调用draw(),但这也没有用。

SendMessage(windows[0],WM_PAINT,NULL,NULL);

0 个答案:

没有答案