2 jujiawu1024 jujiawu1024 于 2016.04.11 15:31 提问

MFC怎么让线程像窗体一样获得传入的消息?

MFC中的线程可以像消息那样传递参数么?如果发送消息到线程,有多个线程运行,那么谁接收这个消息呢?

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.17 03:47
已采纳

线程可以通过信号量共享数据,注意要对UI线程上锁,否则会有同步的问题。

CSDNXIAOD
CSDNXIAOD   2016.04.11 15:42

MFC中的线程与消息
MFC CMainFrame 获得所有子窗体(一)
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

oyljerry
oyljerry   Ds   Rxr 2016.04.11 16:48

首先要那个线程有消息队列,然后就是发送消息的时候,需要指定对应的接收线程

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
MFC实现类似QQ消息弹出框置顶但不抢用户输入焦点
实现类似QQ消息弹出框右下角置顶显示,但在弹出的同时不会激活程序该程序的主窗口,同时也不抢夺用户的输入焦点
不知道在MFC中如何从线程工作函数中向窗口发送消息?用好一个指针就够了
实现从一个窗口向另一个窗口发送消息,使用过下面两种方法 /*方法一:通过用SDK的标准API来查找其他对话框窗口返回句柄,并且发送信息 HWND hWnd;  //通过SDK的FindWindow函数得到目标窗口的句柄,TriTest为目标串口的Caption的值  if(!(hWnd = ::FindWindow(NULL,"TriTest")))     AfxMessageBox(
在MFC中从一个线程工作函数中向窗口发送消息以及窗口到窗口消息传送方法
前一段时间使用MFC写程序的时候,为了实现从一个窗口向另一个窗口发送消息,使用过下面两种方法 /*方法一:通过用SDK的标准API来查找其他对话框窗口返回句柄,并且发送信息 HWND hWnd;  //通过SDK的FindWindow函数得到目标窗口的句柄,TriTest为目标窗口的Caption的值  if(!(hWnd = ::FindWindow(NULL,"TriTes
右下角弹出消息窗体原代码
像QQ消息一样的右下角弹出消息窗体原代码
MFC 窗口获取焦点
CWnd* CWnd::SetFocus(); 如果调用某窗口的SetFocus()成员函数,该窗口就可以取得输入焦点,该函数返回前一个拥有输入焦点的窗口。 如果某个窗口的输入焦点被抢走,Windows系统就会发出WM_KILLFOCUS消息给这个失去输入焦点的窗口,同时还会告诉该窗口下一个取得输入焦点的窗口的指针。而获得输入焦点的窗口则会收到WM_SETFOCUS消息。 消息响应函数分别为
MFC线程间发送消息
MFC线程消息分为几类: 1.线程消息: 2.窗口消息:传递消息用到 SendMessage(),PostMessage(),PostThreadMessage ()三个函数,详细请参看: http://blog.csdn.net/HolaMirai/article/details/46346091具体代码请到下面地址下载: http://download.csdn.net/detail/ho
MFC下的多线程和自定义消息收发
不仅在MFC的程序中,其他设计库如qt,也会存在运行时界面卡死的问题,导致这个问题的原因是内部存在多次循环,界面更新函数处理不过来,消息队列阻塞。为解决这一问题,多线程是首选。也有通过在单线程循环中PeekMessage来解决界面卡死问题,试了一下,效果也很明显,但这个方法只是备选方案,最终的解决之道还是要走多线程。 网络上关于MFC线程的文章很多,也很全,权威的要看MSDN的解释,不过MSDN
C#实现类似QQ的隐藏浮动窗体、消息闪动
功能简介   当语音客服系统登录成功进入主界面时,本聊天工具将会自动隐藏在左下角位置,当鼠标移动到左下角时,自动弹出,当鼠标移开聊天窗体时,自动隐藏。如果想让聊天窗体固定在桌面,只要拖动一下聊天窗口,让它不停留在边界位置就可以了。隐藏和悬浮方式类型QQ。 1. 系统主界面     当点击最小化按钮时, 在电脑右下角会显示任务图标,点击任务图标,将会在左下角位置弹出。   主界面
MFC(8) 如何在工作线程中创建窗口?
http://blog.csdn.net/optman/article/details/1021672 在前面我们研究了使用AFX_MANAGE_STATE(AfxGetStaticModuleState())进行DLL间的资源切换,以及工作线程中创建Windows消息循环的原理,以为就可以搞定一切类似问题了…但是请看以下代码   DWORD CTestMFCDlg::Thr
MFC程序中父窗体捕捉子窗体被点击的消息
只需要重载父窗体的OnCommand(WPARAM wParam, LPARAM lParam) 函数,而不需要重载子窗体的OnLButtonUp(UINT nFlags, CPoint point) 函数 典型地如下操作即可BOOL CDiaBoxDlg::OnCommand(WPARAM wParam, LPARAM lParam) {    // TODO: Add your special