首页 > 编程语言 > 详细

多线程间消息通讯

时间:2020-04-19 09:51:35      阅读:57      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

 

自定义windows消息

#define MY_MSG  (WM_USER+1)

//为了防止用户自定义消息ID与系统消息ID冲突,用户只能定义WM_USER(0x0400)以后的ID使用

 

 

 

PostThreadMessage    将一个队列消息放入(寄送)到指定线程的消息队列里,不等待线程处理消息就返回

BOOL PostThreadMessage(
DWORD   idThread, //接收消息的线程标识符  
UINT     Msg,     //指定被寄送的消息
WPARAM   wParam,  /附加的消息特定信息
LPARAM   IParam  //附加的消息特定信息
);
//线程没有消息队列,此函数将失败

 

目标线程通过GetMessage()方法来接收消息,若无消息则阻塞

BOOL GetMessage(
LPMSG lpMsg,  //接收消息的线程ID
HWND hWnd,    //取得消息的窗口的句柄,为NULL时获取所属线程的消息
UINT wMsgFilterMin,//指定被检索的最小消息值的整数。
UINT wMsgFilterMax  //指定被检索的最大消息值的整数
);

 

 

PeekMessage 为一个消息检查线程消息队列,并将该消息(如果存在)放于指定的结构(窥探消息队列中的消息)

BOOL PeekMessage(
LPMSG IpMsg,     //接收消息的线程ID
HWND hWnd,       //取得消息的窗口句柄,为NULL时获取所属线程的消息
UINT wMSGfilterMin,//指定被检索的最小消息值的整数
UINT wMsgFilterMax,//指定被检索的最大消息值的整数
UINT wRemoveMsg   
);
wRemoveMsg   可取下列值
PM_NOREMOVE PeekMessage处理后,消息不从队列里除掉。
PM_REMOVE PeekMessage处理后,消息从队列里除掉。
PM_NOYIELD 此标志使系统不释放等待调用程序空闲的线程。可将PM_NOYIELD随意组合到PM_NOREMOVE或PM_REMOVE
技术分享图片

 

 

 

多线程间消息通讯

原文:https://www.cnblogs.com/liu6666/p/12730192.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!