我想要重新绘制窗口的一部分而不是整个窗口。我不知道该怎么做。即时通讯使用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;
答案 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