版权声明:原创作品请注明出处: Ma_Hong_Kai CSDN https://blog.csdn.net/Ma_Hong_Kai/article/details/82964560
是否阻塞 | 比喻 | 发送目的地 | 返回值 | |
---|---|---|---|---|
SendMessage | 是(等消息处理完再返回) | 快递员,邮件需要客户签名确认(同步) | 一个窗口或多个窗口 | 其他程序处理消息后的返回值 |
PostMessage | 否(不等待消息处理完成,直接返回) | 邮局,我发了就行(异步) | 函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里 | 函数执行是否正确 |
由于上述的区别,因此在使用的时候,由于消息是否返回,会导致界面的一些问题。由于我们此处有大量的磁盘操作,前辈使用的是PostMessage导致进度条有问题。(猜测,因此不会影响功能,看起来是会影响,当然最好的是磁盘处理的不在界面操作,这块就需要仔细考虑了,等待进一步核实)
是否阻塞 | 消息来源 | 操作消息 | |
---|---|---|---|
GetMessage | 阻塞函数(系统无消息,等待下一条) | 系统获取 | 获取后移除 |
PeekMesssge | 非阻塞函数(查看的方式从系统中获取消息,无消息时,返回FALSE,继续执行后续代码) | 与参数hWnd标识的窗口相联系的消息或被lsChild确定为其子窗口相联系的消息,并且该消息要在由参数wMsgFiterMin和wMsgFiherMax确定的范围内 | 可选择是否删除 |
参考:
C++中SendMessage与PostMessage的区别
GetMessage百度百科 (和postmessage配合使用,获取消息)
PeekMessage百度百科(和postmessage配合使用,检查消息)