zoukankan      html  css  js  c++  java
  • 线程 消息循环

    在win32平台中,每一个线程都拥有自己的消息队列。

    线程的消息来源有3个:

    外设    系统    其他线程

    线程可以发送消息到属于相同或不同进程的其他线程,发送的方式是Send或Post。

    在Win32平台中,一个很重要的概念是窗口并不拥有消息队列,窗口过程处理消息,消息来源于创建该窗口的线程。系统会把线程消息队列中的消息发给当前活动的窗口。

    PostMessage

    BOOL PostMessage(
      HWND hWnd,      // handle of destination window
      UINT Msg,       // message to post
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    );
    当线程调用这个函数时,系统确定哪一个线程建立了有hwnd参数标识的窗口,然后系统分配一块内存,将这个消息参数存储到这块内存中,并将这块内存链接到响应线程的投递消息队列中。

    PostMessage只是把消息放入队列,不管其他程序是否处理都返回,然后继续执行;

    PostQuitMessage(int nExitCode)

    该函数终止线程调用它的线程,但是,该函数实际上并不链接到一个消息到投递消息队列。

    PostThreadMessage

    该函数与PostMessage不同的是,该函数只投递消息到线程,而不指明发给线程创建的那一个窗口。

    SendMessage

    LRESULT SendMessage(
      HWND hWnd,      // handle of destination window
      UINT Msg,       // message to send
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    );

    SendMessage函数可以将消息直接发给一个窗口过程。只有等消息被处理之后,SendMessage才能返回到调用程序

  • 相关阅读:
    11个Linux基础面试问题
    OSI模型
    戴文的Linux内核专题:10配置内核(6)
    面向对象实验四(输入输出流)
    计算机程序的思维逻辑 (2)
    计算机程序的思维逻辑 (1)
    java基础3.0:Java常用API
    java基础2.0:Object、Class、克隆、异常编程
    java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
    Ajax工作原理(转)
  • 原文地址:https://www.cnblogs.com/tianlangshu/p/1989429.html
Copyright © 2011-2022 走看看