c ++重绘窗口的一部分

时间:2010-08-26 04:39:33

标签: c++ visual-c++ winapi window

我想要重新绘制窗口的一部分而不是整个窗口。我不知道该怎么做。即时通讯使用win32请不要mfc ........
提前谢谢


// create rect structure
RECT rect2;
rect2.left=0;
rect2.top=0;
rect2.right=225;
rect2.bottom=300;
// calling invalidateRect when left mouse button is donw
case WM_LBUTTONDOWN:
    InvalidateRect(hWnd, &rect2, false);
    break;

4 个答案:

答案 0 :(得分:2)

在InvalidateRect()方法中传递要重新绘制的窗口部分的矩形。请阅读here了解详情。

答案 1 :(得分:2)

这是游戏引擎吗?它似乎是因为您担心完全重绘时的cpu使用情况。

如果是,那么我建议对后台缓冲区图像进行blitting,跟踪后台缓冲区的哪些部分已经改变,并在渲染完成后仅将该部分复制到屏幕上。这称为双缓冲,并且还会处理您可能看到的闪烁问题。

答案 2 :(得分:0)

RedrawWindow出了什么问题?

答案 3 :(得分:0)

正如其他答案所指出的那样;处理WM_PAINT时,您需要获取更新矩形/区域并相应地绘制/ blit。

见:
+ The WM_PAINT Message
+ Retrieving the Update Region
+ Invalidating and Validating the Update Region
+ Synchronous and Asynchronous Drawing