关于MFC的消息机制的问题。

这有两个函数voidCXXXDlg::A(){.....}和voidCXXXDlg::B(){.....}然后添加消息宏映射ON_MESSAGE(DEBUGA,A)和ON... 这有两个函数 void CXXXDlg::A(){.....} 和 void CXXXDlg::B(){.....} 然后添加消息宏映射 ON_MESSAGE(DEBUGA,A) 和 ON_MESSAGE(DEBUGBB, B) 然后另外一个程序用套接字发来一段字符串,我想问一下,MFC凭什么来区分到底是调用A函数还是B函数? 展开
 我来答
TLast_Ghost
2015-02-08 · TA获得超过1542个赞
知道小有建树答主
回答量:649
采纳率:20%
帮助的人:527万
展开全部
凭借接受的消息的Message参数,是DEBUGA就掉A,是DEBUGB就掉B,大致原理是APP有个消息处理循环,平时闲着没事只干一件事,把外部发送的Message,处理后发送给窗口调用窗口过程,没消息就闲着蛋疼挂起。。。一旦有消息就解释后调用DispatchMessage 该函数内部会调用一个窗口过程函数(每个窗口都有,在创建窗口时就设置了,调用谁的是看参数HWND窗口句柄), 窗口过程函数的参数就是消息,总之他得到消息你想干啥就干啥,看见消息的Message参数为DEBUGA,他就调用A,看到是啥消息,就调用相应的回调,没有消息这个线程就是挂起的。。。。。大致代码
if(MSG.message==DEBUGA)
A();
IF(MSG.message==DEBUGB)
B();
这个代码是在你写宏ON_MESSAGE(DEBUGA,A)时,在编译过程中由框架为你自动生成的。你只要调用PostMessage
或SendMessage 最终这个消息就会引起窗口过程函数被调用,然后就根据消息间接调用你的回调函数。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式