学了一段的window api编程但有一点不太明白     while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }这段函数的真正作用是什么?
我看了这段函数会处理一些键盘消息里的msg结构
     hwnd = CreateWindow (szAppName, TEXT ("Get System Metrics No. 1"),
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;
执行完之后就能在过程函数里捕捉到这个消息那我还要这个消息循环干什么用啊?典型的window消息都是这个样子的啊。
难道就是为了让程序跑个不停,而且能够处理消息吗?

解决方案 »

  1.   

    按说都用Windows操作系统很久了吧,自己应该有感受啊
    可以到网上多找找相关的文章,从前人不同的角度去理解,你就能了解全面了
      

  2.   


    还有其他的作用吗?
    我的理解是 鼠标键盘等消息产生之后回放入消息队列中而不是直接送到窗口过程 。消息循环的一个作用就是把这些消息取出并分发到响应的窗口过程函数里。有部分函数直接产生消息给窗口过程又部分是放到消息队列里等待消息循环处理。这也是sendmessage和postmessage的函数的部分区别。
    这些是我理解的我只是想看看大家还有没有其他的独特的想法。有些人不要在这里刷屏。回复连个屁用都没有。在这制造垃圾。不管你水平怎么样。但这样很让人鄙视的。
      

  3.   

    windows的界面程序就是消息驱动的,基本过程是系统以消息的形式把信息放入应用程序的
    线程消息队列,应用程序从线程队列取出消息,进行额外处理,然后再派送给系统,系统调用应用程序
    消息处理函数,处理函数结束后返回系统完成收尾工作。
    while (GetMessage (&msg, NULL, 0, 0))
       {
       TranslateMessage (&msg) ;//额外处理
       DispatchMessage (&msg) ;  //返回给系统
       }wm_create....
     消息处理
     return 1;//处理结束