windows为什么要有消息队列,和消息循环,直接把相应的消息发给对应的程序不行吗Windows消息机制

解决方案 »

  1.   

    “直接把相应的消息发给对应的程序”,我不知道你这话是什么意思,不然是发给谁了?假如你的意思是直接调用某个程序(进程/线程)的功能函数,那么存在两个问题:
    第一:该程序必须实现所有的函数(接口),即使它不需要这么多功能;而消息机制是由程序自己决定是否处理相应消息;
    第二:如果调用的函数出问题,系统就甭了;当然还有更好更先进的事件机制,但是从整个系统设计的考虑以及历史遗留问题,消息机制还是不错的,毕竟Windows诞生的年代已经远超现在很多编程者了。
      

  2.   


    消息众多,可能你感觉不到,如果你操作频繁,1s中会产生N个消息,然而对每种消息的处理不是瞬间都能完成的,你不搞个地方保存起来,那不就丢失了么?简单的理解,消息队列就是产生消息时push进去,然后一条一条的pop进行处理另外,消息也是有优先级的,我们可一个调整消息队列中消息的处理优先级,比如我们如果需要让窗口理解重绘,就可以通过UpdateWindow( )函数,而不是 Invalidate()
      

  3.   

    我就是想问一下windows消息机制的好处,为什么要用这样的机制,我直接在感知到用户的操作的时候把消息发给程序(程序里面有消息队列),这样有什么弊端。
      

  4.   

    SendMessage就是把消息发送到应用程序, 前提是知道这个应用程序的窗口句柄。