MFC如何刷新图像控件区域?

来源:百度知道 编辑:UC知道 时间:2024/09/27 13:16:15
我想做一个重力小球,初期就是一个球,从固定点落下,然后在重力作用下,逐渐停在地面上。而现在遇到一个问题,就是怎么样才能刷新小球运动所在的图像控件区域,也就是,让小球在一个矩形区域跳来跳去,而其他区域不重绘刷新,我在OnTimer函数中这样写:
(m_rec已经捕获了IDC_SHOWWID控件的大小)
HWND hWnd = GetDlgItem(IDC_SHOWWID)->GetSafeHwnd();
::InvalidateRect(hWnd,&m_rec,TRUE);
为什么结果会不对呢?小球没有动,但调试一下会知道,小球实际上是在动的。
另外,我改成invalidaterect(&m_rec),实现的结果,只是从客户区(0,0)开始,大小为m_rec大小的区域~~很郁闷啊!各位大虾施以援手吧!!!

没有代码,所以不大明白你的意思.其实最普遍的刷新方法应该是用双缓冲,这样刷新时不会闪烁.
你不妨试试InvalidateRect(hWnd,&m_rec,TRUE);直接调用,不用全局符号.
如果不行,那就不要刷新,在OnTimer (_) 里画所有的东西,即先画背景(也就是先画一个这个区域的矩形) ,再画小球,这样肯定行.