win7的系统,拖动和遮盖都没有WM_PAINT 消息,但是改变窗口大小就有WM_PAINT 消息,我记得课堂上老师说的都有WM_PAINT才对,是系统的问题么?上课的是XP系统

解决方案 »

  1.   

    我记得拖动窗口,消息队列会阻塞,做游戏时,为此我还专门开一个线程来渲染避免拖动窗口时画面卡住。
    遮盖,多“古老”的事情了,应该是是Vista新的“桌面组合”导致每个窗口都有独立的缓存所以无需再渲染。
    Win7可以在系统设置里面关了再试试, Win10的这个设置选项都被移除了。不过用了D2D之后都不用懒得响应WM_PAINT 消息了。用CPU渲染不复杂的场景比GDI又快又好有方便.
      

  2.   

    关闭Aero,开启Win7 Basic主题就有了。
    因为aero不会在每个窗口被遮住的时候删除DC中的数据
      

  3.   

    你要画图还是写在onpaint里面。你管他有没有消息。反正能拖就是了。能刷新显示就是了、不知道你具体要实现什么?
      

  4.   

    拖动窗口,窗口内容如果不改变,是不会有WM_PAINT消息的。在XP上也不会有。另外,窗口有个属性:WS_LAYERED,如果是Layered窗口,那么它是缓存模式的,内容不改变时,不会收到WM_PAINT,即使被其它窗口挡住再移开也不会,因为内容并没有改变。