zoukankan      html  css  js  c++  java
  • SendMessage、PostMessage、PostThreadMessage

    SendMessage()是阻塞型的函数,把消息发送给消息队列后,在消息没有响应完之前这个函数是不会返回的,返回值和消息处理函数是有直接关系的,消息处理函数返回什么,SendMessage就返回什么参数。
    而PostMessage()是非阻塞型函数,把消息抛出去(与指定窗口创建的线程相关联的消息队列里)之后就返回,不管消息是否响应,返回的是发送的成功和失败,一般是很少失败,除非窗口不存在。
    PostThreadMessage() 没有目标窗口,直接指定目标线程ID来确定目标线程,只能在消息循环中直接根据消息类型做相应的处理。

    注意:
    跨线程或者跨进程发送消息时推荐使用PostMessage(),因为它不阻塞。
    如果是UI线程,则应使用PostMessage;如果是工作线程,则应使用PostThreadMessage,不要为了接收消息而创建窗口。
    系统只对系统级的消息(0 ~ WM_USER-1)进行封送处理。发送自定义消息(>= WM_USER)到另一个进程,需要自己对消息进行封送处理。
    如果发送一个范围低于WM_USER的消息给异步消息函数(PostMessage、 SendNotifyMessage 或 SendMessageCallback),它的消息参数不能包含指针。否则,操作将失败。函数将在接收线程处理消息之前返回,发送者将在内存被使用之前释放。
    请不要使用 PostMessage 函数投递 WM_QUIT 消息;应该使用 PostQuitMessage 函数代替。

  • 相关阅读:
    由PhysicalFileProvider构建的物理文件系统
    Net Core WebApi单元测试
    多个项目使用NET Core
    ReactNative
    定制样式插入到ueditor
    ES6的Class
    Redis存储Session
    二叉 查找树 排序树 搜索树
    SignalR实现实时日志监控
    KNN(k-nearest neighbor的缩写)又叫最近邻算法
  • 原文地址:https://www.cnblogs.com/wesson2019-blog/p/13725535.html
Copyright © 2011-2022 走看看