PostMessage与PostThreadMessage的区别

消息队列是属于线程的,Post消息就是把消息放到目标线程的消息队列中。

这两者的区别在于:

PostMessage 通过指定目标窗口句柄来确定目标线程,通常情况下由窗口过程来处理消息;

PostThreadMessage 直接指定目标线程ID来确定目标线程,没有目标窗口,只能在消息循环中直接根据消息类型做相应的处理。

在程序设计的选择方面,如果是UI线程,则应使用PostMessage;如果是工作线程,则应使用PostThreadMessage,不要为了接收消息而创建窗口。



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 04:55:35

PostMessage与PostThreadMessage的区别的相关文章

PostMessage和SendMessage的区别

1, PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数.而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数. 2, 如果在同一个线程内,PostMessage发送消息时,消息要先放入线程的消息队列,然后通过消息循环Dispatch到目标窗口.SendMessage发送消息时,系统直接调用目标窗口的消息处理程序,并将结果返回,SendMessage在同一线程中发送消息并不入线程消息队列. 3,Po

PostMessage与SendMessage的区别

PostMessage只负责将消息放到消息队列中,不确定何时及是否处理 SendMessage要等到受到消息处理的返回码(DWord类型)后才继续 PostMessage执行后马上返回 SendMessage必须等到消息被处理后才会返回. 下面通过一个小例子来说明下这2个方法进行参数传递的不同点: //Win32 API 类 using System; using System.Runtime.InteropServices; namespace TestHwnd { public class

深入解析SendMessage、PostMessage

本文将使用C++语言,在MFC框架的配合下给出PostMessage.SendMessage等的使用方式与使用不当造成的后果(讨论均针对自定义的消息进行).如有什么错误,欢迎指正. 写过Windows程序的同学都知道PostMessage.SendMessage的区别,PostMessage函数调用发送之后,立即返回,不等待消息处理完成.而SendMessage则让调用的线程处于阻塞(BLOCk)状态,直到消息处理完成. 正由于这两个函数的区别导致了如下想法: 想法1:PostMessage立即

PostMessage与SendMessage各自的问题

深入解析SendMessage.PostMessage 本文将使用C++语言,在MFC框架的配合下给出PostMessage.SendMessage等的使用方式与使用不当造成的后果(讨论均针对自定义的消息进行).如有什么错误,欢迎指正. 写过Windows程序的同学都知道PostMessage.SendMessage的区别,PostMessage函数调用发送之后,立即返回,不等待消息处理完成.而SendMessage则让调用的线程处于阻塞(BLOCk)状态,直到消息处理完成. 正由于这两个函数的

【转】《windows核心编程》读书笔记

这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLastError可能用于描述成功的原因(CreatEvent)

深度解析VC中的消息传递机制

摘要:Windows编程和Dos编程,一个很大的区别就是,Windows编程是事件驱动,消息传递的.所以,要学好Windows编程,必须 对消息机制有一个清楚的认识,本文希望能够对消息的传递做一个全面的分析. 一.什么是消息? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定 义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键 都会使Windows发送一个

win 消息

Windows消息机制概述 消息是指什么?     消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序.    消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息.例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标.这个

深信服02

一,六道选择题 (可以多选) 1 char *p = "hello world"; p存储在()指向 //堆栈 char p[] = "hello world"; p存储在()指向 全局变量 //数据段 static变量 //数据段 分别在哪个地方? 1数据段 2代码段 3堆 4堆栈 (此题可以配合同文件夹下的char.cpp) ·(二.例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区

delphi.thread.同步

注意:此文只是讲线程间的同步,其它同步不涉及. 线程同步是个好话题,因为写线程经常会遇到,所以就写写自己知道的东西. D里面,同步(特指线程同步)从线程的角度来分,有几种情况: 1:主线程与工作线程的同步 2:工作线程与主线程的同步 3:工作线程之间的同步. 同步,嗯,直白点讲,或可以说成是:A线程怎么通知B线程去做某某事,或者说某事需要:如何控制某一时间段内,A能做,B不能做(互斥). 所以,手段很重要,也就有了API,也就有了方法: 1:lock(CriticalSection) 2:Eve