到目前为止,我只复制/粘贴了 Microsoft 在这里的示例(但我删除了 #include )。
我试图弄清楚 OnPaint 是如何被连续调用的(因为有移动的物体),但它似乎不止一次被调用。
如何使用标准 Windows C++ 图形库(即 GDI+ 或其他标准 Windows API)来创建移动对象?我必须自己打电话给 OnPaint 吗?还是有一个简单的解决方法可以让它不断被调用?还是只是不可能?
OnPaint() 方法只会在 Windows 认为您的窗口需要重新绘制时运行。这通常只在您的窗口首次创建时发生一次。或者当您最小化并恢复窗口时。
要强制它多次运行并为某些东西设置动画,您必须告诉它需要重新绘制。最好的方法是使用计时器,它会给你一个动画时钟。将时间间隔设置为比 15.625 毫秒的倍数略小的数字。45 毫秒是一个不错的值,它每秒可以为您提供 21 次更新。假设你可以画得足够快。在 WM_TIMER 消息处理程序中调用 InvalidateRect()。或者 Invalidate() 如果您使用 Winforms。