MFC中多线程之间应用自定义消息通讯的问题

CXING000 2016-05-17 09:53:35
在建立基于对话框的MFC应用程序中用AfxBeginThread函数建立多个线程,线程之间的通讯应用自定义消息的方式,现在各线程的消息映射和消息响应都已经建立好了,问题是:在其中一个线程中有三个不同的消息,主线程给这个线程发送消息时,如何通过建立线程消息循环来响应这三个不同的消息
...全文
214 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
灰灰君呀 2016-05-20
  • 打赏
  • 举报
回复
引用 5 楼 CXING000 的回复:
[quote=引用 3 楼 VisualEleven 的回复:]
线程函数中可以添加消息循环。
UINT __cdecl ThreadProc(LPVOID lParam)
{
MSG msg;
while(GetMessage(&msg, NULL, 0, 0))
{
switch(msg.message)
{
case MSG_XXX:
break;
...
default:
break;
}
}
return 0;
}

我尝试过这样建立线程循环,但在测试的时候,程序一直在while中循环并没有调用消息响应函数,原因可能出在哪里?[/quote]

发消息时,线程ID发错了吧.
Eleven 2016-05-18
  • 打赏
  • 举报
回复
线程函数中可以添加消息循环。
UINT __cdecl ThreadProc(LPVOID lParam)
{
 MSG msg;
 while(GetMessage(&msg, NULL, 0, 0))
 {
 switch(msg.message)
 {
   case MSG_XXX:
   break;
 ...
 default:
 break;
 }
 }
 return 0;
}
笨笨仔 2016-05-18
  • 打赏
  • 举报
回复
将你的消息写到循环中,例如:

BEGIN_MESSAGE_MAP(CCommThread, CWinThread)
	ON_THREAD_MESSAGE(WM_COMMDATA_MESSAGE,OnCommMessag)					// 收到要交换数据的消息

	ON_THREAD_MESSAGE(WM_RS_CONTRL_MESSAGE,OnRsControlMessag)			// 收到控制消息
END_MESSAGE_MAP()
zgl7903 2016-05-18
  • 打赏
  • 举报
回复
如果是define定义的, 可以使用 ON_MESSAGE 映射, 也可以重载WindowProc 区分处理, 如果是RegisterWindowMessage 注册的消息, 可以重载WindowProc 区分处理,
Eleven 2016-05-18
  • 打赏
  • 举报
回复
引用 5 楼 CXING000 的回复:
[quote=引用 3 楼 VisualEleven 的回复:] 线程函数中可以添加消息循环。
UINT __cdecl ThreadProc(LPVOID lParam)
{
 MSG msg;
 while(GetMessage(&msg, NULL, 0, 0))
 {
 switch(msg.message)
 {
   case MSG_XXX:
   break;
 ...
 default:
 break;
 }
 }
 return 0;
}
我尝试过这样建立线程循环,但在测试的时候,程序一直在while中循环并没有调用消息响应函数,原因可能出在哪里?[/quote] 可能你的线程根本就没有收到消息? CWinThread->PostThreadMessage()这样发消息给线程
CXING000 2016-05-18
  • 打赏
  • 举报
回复
引用 3 楼 VisualEleven 的回复:
线程函数中可以添加消息循环。
UINT __cdecl ThreadProc(LPVOID lParam)
{
 MSG msg;
 while(GetMessage(&msg, NULL, 0, 0))
 {
 switch(msg.message)
 {
   case MSG_XXX:
   break;
 ...
 default:
 break;
 }
 }
 return 0;
}
我尝试过这样建立线程循环,但在测试的时候,程序一直在while中循环并没有调用消息响应函数,原因可能出在哪里?
赵4老师 2016-05-18
  • 打赏
  • 举报
回复
Multiple Threads in the User Interface http://msdn.microsoft.com/zh-cn/library/ms810439.aspx

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧