C++重绘窗口的一部分

标签 c++ visual-c++ winapi gdi+

我知道如何重绘整个窗口,但我不知道如何重绘一小块窗口,就像我使用 gdi+ 绘制一个正方形,而不是我想更改它的坐标,所以我想重绘正方形而不是整个窗口 < br/> 有什么想法吗?


我也试过这个

RECT rect2;
rect2.left=0;
rect2.top=100;
rect2.right=225;
rect2.bottom=300;
InvadiateRect(hwnd, &rect2, false);

它仍然重绘整个窗口

最佳答案

执行此操作的一种方法是使用一个足够大的矩形调用 InvalidateRect(),以覆盖两个您移动的正方形的新旧位置。然后,Windows 将调用您的 WM_PAINT 处理程序来重新绘制发生变化的屏幕区域。

UnionRect()函数有助于计算此重绘矩形。

关于C++重绘窗口的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3562051/

相关文章:

c - C 中释放内存后堆损坏

c++ - MSVC++ 6.0 devshl.dll 错误

c++ - 使用Cuda Ubuntu 16/04构建C++ OpenCV 4

c++ - 非法操作stringstream << stringstream with c++11

c++ - 出于测试目的故意让 C++ 程序运行得更慢?

c++ - 如何使用 std::string 用两个字符替换所有出现的一个字符?

c++ - 看似很好的 delete[] 程序崩溃

winapi - GetTickCount() 实际测量什么?

.net - Windows API根据未使用的变量名称导致不同的结果?

c++ - 如何添加透明 PNG 作为工具栏图标?