做了一个步长较多的for在OnPaint,运行起来似乎假死了,想到一个问题,是不是应该在for的期间检查一下消息的,好让窗口挪动等事情也能执行?
窗口会出现假死的缘由是否就是这样导致?
如果想让窗口半路处理一下只与本窗口有关的消息,应该怎么写?

解决方案 »

  1.   

    在循环里添加消息处理即可
    MSG msg;
        if(PeekMessage(&msg, m_hWnd,  0, 0, PM_REMOVE)) 
        { 
            TranslateMessage(&msg); 
            DispatchMessage(&msg); 
        }不过楼主在OnPaint里处理这么数据似乎有些不合理啊,这样重绘的效率也太低了,建议楼主先计算好所有要画的数据,然后再OnPaint
      

  2.   


    就是一个动画,类似俄罗斯方块那样,似乎也只能在OnPaint里表现活动了...
      

  3.   


    把俄罗斯方块的计算部分,放在其它地方,计算完成后,显示(绘图)部分放在OnPaint
      

  4.   

    如果楼主一定要这样做,则:for(....)
    {
    ............其它代码半路上................
    PostMessage...................// 不要用SendMessage............其它代码
    }
      

  5.   

    感觉楼主解决问题的方向错了,你的问题在于界面假死,即使在for循环中处理了消息,但是还是无法解决界面假死的问题。解决此问题可以考虑将计算和画图分开处理的方法,如果还是存在界面刷新比较慢的问题,建议楼主可以考虑运用双缓冲技术解决此问题!
      

  6.   


    你的OnPaint只需要画界面就可以了
    活动在其他地方计算,计算好后发送一个wm_parint消息让系统重画即可
      

  7.   


    不能在Onpaint中表现活动的。