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才能返回到调用程序

  • 相关阅读:
    根据痛点分析制作软件
    大学生三大痛点及分析
    统计作业
    蜜迹(个人项目设计)
    一款有趣的影子游戏《Shadowmatic-投影寻真》
    Java项目实战_疫情地图可视化_day03
    Java项目实战_疫情地图可视化_day02
    Java项目实战_疫情地图可视化_day01
    《敏捷软件开发原则,模式与实践》阅读笔记三
    《敏捷软件开发原则,模式与实践》阅读笔记二
  • 原文地址:https://www.cnblogs.com/tianlangshu/p/1989429.html
Copyright © 2011-2022 走看看