在初学window编程的时候,我遇到了一个这样的问题。
编写一段输出一个窗口的程序:
ShowWindow (hwnd, iCmdShow) ;
        
    UpdateWindow (hwnd) ;
        
   
        
    while (GetMessage (&msg, NULL, 0, 0))
        
    {
        
            TranslateMessage (&msg) ;
        
          DispatchMessage (&msg) ;
        
    }
但是当我把updatewindows()解释掉的时候,窗口没有变化呀,是不是这个函数是可有可无的呢?

解决方案 »

  1.   

    但是应该是我的程序从winmain进去之后,只走一边updatewindow然后就进入消息循环,以后就是一直循环消息直到结束,别的动作比如说刷新会自己发出wm_paint消息,和这个updatewindow应该没有关系呀。
    难道这个函数的作用不是发出第一个wm_paint消息让窗口消息处理函数输出文字吗,那按理说解释掉这个函数后编译执行的函数应该没有文字输出才对呀,为什么不是呢?
    请各位高手解释,本人刚刚学,陷进去了!谢谢!
      

  2.   

    别的动作比如说刷新会自己发出wm_paint消息,和这个updatewindow应该没有关系呀。wm_paint 是一个低优先级消息,一般要等到消息队列中没有其他消息时才被处理,
    而 updatewindow 则指示立即处理wm_paint消息。
      

  3.   

    就算updatewindow可以优先处理wm_paint消息,但是依据程序流程来看,updatewindow只会 在winmain的消息循环之前执行一次呀,以后程序就一直在循环里面了,别的动作发出的wm_paint消息想优先处理也执行不到updatewindow这里来呀!
    谢谢,非常感谢!
      

  4.   

    如果你不画什么东西, 没有数据需要更新(客户区是空的), 那 UpdateWindow 就不干活了.