回 帖 发 新 帖 刷新版面

主题:[讨论]如何立即刷新窗口

我注册了一个窗口类,并创建了该窗口类的窗口(当作控件使用),这个控件主要是完成当鼠标按下,移动,鼠标松开,鼠标移出该窗口时该窗口背景图片的切换, 
我用SetWindowlong GWL_USERDATA的方法给窗口标注状态,当鼠标按下,移动,松开,移出窗体时,我就改变窗口的状态,并立即刷新。 
我对该窗口的WM_PAINT做了如下处理,即根据GetWindowLong GWL_USERDATA获得的窗口状态贴上不同的图。 

您认为我这样设计是否合理? 
我立即刷新使用的是charles petzold在windows程序设计一书上提到的: 
::InvalidateWindow(hwnd,NULL,TRUE); 
::UpdateWindow(hwnd); 
但我发现并不象书中所说的那样,根本没有发生刷新,我在调用UpdateWindow时跟踪了一下,没有进行WM_PAINT消息的处理! 

回复列表 (共2个回复)

沙发

我不太确定,有InvalidateWindow这个函数吗?
不过你可以用::RedrawWindow()函数来重绘整个窗口,也可以先用InvalidateRect()函数便某个区域无效来触发WM_PAINT消息。

板凳

刷新可调用:Invalidate();

我来回复

您尚未登录,请登录后再回复。点此登录或注册