读书人

请教多个函数去响应同一个消息会不会有

发布时间: 2012-01-26 19:40:46 作者: rapoo

请问多个函数去响应同一个消息会不会有什么问题?
请问多个函数去响应同一个消息会不会有什么问题?我的代码中有两个类都有函数来响应同一个消息。

[解决办法]
有两个类响应同一个消息,MFC中写法是有,但是不可能真正起作用,比如你在CView 类和CMainFrame类都响应一个菜单消息,但是真正起作用的是CView类中的函数。
[解决办法]
一般消息函数的返回值决定了是否继续传递该消息。
[解决办法]
不能同时响应,只要有先后顺序就可以了。
[解决办法]
我经常用不同的类响应相同的消息,是否有影响那要看你的逻辑如何处理,比如传到A类是计算,根据计算结果决定要不要继续往下传递该消息,A再传给B类是存储.
至于次序要看你首先把消息传给谁.消息链传递次序你要清楚.
[解决办法]
MFC框加的消息路由……
Sunxin VC视频上有讲解,关于其他的……

我觉得,如果没有某个机制,让消息一直传递下去,那么只会有一个响应。
比如SDK中,创建callback函数什么的,都只指定一个函数,不过如果在case中,你倒是可以:fun1();fun2();……的去调用……
[解决办法]
如果是在MFC中做的话,那么响应的顺序应该是CVIEW->CDOC->CFRAMWND->CWINAPP在一个类中处理了一个消息,那么下一个类中将不会响应消息了,
[解决办法]
我用的不是基于MFC框架的,所有的消息传递都是自己写的,终止消息传递,可以有多种方法,一是不在调用下一步消息传递函数,二是用消息函数的返回值判断.
[解决办法]
我觉得一定有一个保存着所有响应某一消息的list,而消息有很多种,所以要有N个这样的list(不知道是不是复杂化了……)。
响应的时候顺次执行list内项所指代码,或者还需要一个标志变量flag,根据它的值,来设定执行顺序,或当一代码执行完毕后是否继续响应……
[解决办法]
MFC相应命令消息有一定的顺序:视类-〉文档类-〉框架类-〉应用程序类。 当前面的类有相应的响应函数时即响应,不再向后传递

读书人网 >VC/MFC

热点推荐