美文网首页
windows线程与窗口之间的关系?

windows线程与窗口之间的关系?

作者: 太平小小草 | 来源:发表于2019-04-29 01:46 被阅读0次

    1,一个进程至少拥有一个线程,称为主线程,如果一个线程创建了窗口,拥有GUI资源,那么也称该线程为GUI线程,否则就为工作线程。窗口是由线程创建的,创建窗口的线程就拥有该窗口。这种线程拥有关系的概念对窗口有重要的意义:建立窗口的线程必须是为窗口处理所有消息的线程。为了使这个概念更加明确具体,可以想像一个线程建立了一个窗口,然后就结束了。

          在这种情况下,窗口不会收到一个WM_DESTROY或WM_NCDESTROY消息,因为线程已经结束,不可能被用来使窗口接收和处理这些消息。每个线程,如果它至少建立了一个窗口,都由系统对它分配一个消息队列。这个队列用于窗口消息的派送(dispatch)。为了使窗口接收这些消息,线程必须有它自己的消息循环,消息循环一般如下:

    MSG msg;
    while( GetMessage(&msg, NULL, 0, 0) )
    {
    TranslateMessage (&msg);
    DispatchMessage (&msg);
    }
    

          应用程序不断的从消息队列中获取消息,然后系统通过DispatchMessage函数分派消息到相应窗口的窗口过程,使得消息得到处理。当获取到WM_QUIT消息时,GetMessage返回0,循环结束。

    相关文章

      网友评论

          本文标题:windows线程与窗口之间的关系?

          本文链接:https://www.haomeiwen.com/subject/ypjcbqtx.html