
关于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函数?
展开
展开全部
凭借接受的消息的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 最终这个消息就会引起窗口过程函数被调用,然后就根据消息间接调用你的回调函数。。。
if(MSG.message==DEBUGA)
A();
IF(MSG.message==DEBUGB)
B();
这个代码是在你写宏ON_MESSAGE(DEBUGA,A)时,在编译过程中由框架为你自动生成的。你只要调用PostMessage
或SendMessage 最终这个消息就会引起窗口过程函数被调用,然后就根据消息间接调用你的回调函数。。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询