消息响应的实现

Microsoft777 2008-05-01 12:43:42
在 MFC 下
我建立了一个基于对话框的工程
并为此对话框添加了几个控件
对于这些控件的消息响应
我是让对话框去处理
还是让控件自己去处理
如果让对话框去处理
那么显得头重脚轻,对话框的结构显得很庞大
如果让控件自己去处理
那么有一些很难实现 -- 呵呵,应该说我自己水平差
看看大家有什么好想法
谢谢
...全文
161 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
RocWay007 2008-07-20
  • 打赏
  • 举报
回复
当然是该谁处理就谁处理了。

如果要让按钮自己处理消息的话可以这样做:
1. 为按钮加入CButton对象
2. 从CButton派生一个新类CNewBtn,
3. 并将第一步中的那个对象类型改为CNewBtn。
4. 在CNewBtn中添加所需的消息处理函数
5. 设置CNewBtn的消息映射,如下所示
BEGIN_MESSAGE_MAP(CNewBtn, CButton)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
codediscuss 2008-07-18
  • 打赏
  • 举报
回复
Windows系统中,控件有事件时,控件的parent(也就是对话框)会收到消息,所以处理应该在对话款中,控件本身根本没机会处理。
在mfc框架中,有消息反射的概念(注意不是Windows的概念,是mfc特有的),parent遇到某些消息,会改发消息到原来的控件,让它有机会处理

--
如果在vc版问这个问题,回答的人会更多。
xlander 2008-07-07
  • 打赏
  • 举报
回复
控件自己内部可以解决的消息,比方说控制背景色,则由控件处理。
其他的消息,一般会涉及到对话框其他控件,所以放在对话框里解决比较合适。
caimps 2008-07-06
  • 打赏
  • 举报
回复
还是交给对话框处理才对
sitych 2008-07-04
  • 打赏
  • 举报
回复
一般由对话框处理。对话框工作量大是什么意思?难度担心来不及处理?
回6楼:
VC的消息响应和java是不同的,不能套用
狐帝 2008-05-28
  • 打赏
  • 举报
回复
这种情况可以用观察者模式实现。我不熟悉MFC,不知道MFC的控件是否支持观察者模式。如果支持的话,这些控件应该都允许挂接派生自共用Observor类或者Listener类的子类实例。把每个控件的处理代码放到Observer类的子类中,有子类进行实际的处理。
Microsoft777 2008-05-02
  • 打赏
  • 举报
回复
自己顶一下!
我是风 2008-05-02
  • 打赏
  • 举报
回复
让对话框去处理
iu_81 2008-05-01
  • 打赏
  • 举报
回复
一般都是对话框处理
有些消息也是控件特有的
clhposs 2008-05-01
  • 打赏
  • 举报
回复
一个没学过MFC的人飘过
Microsoft777 2008-05-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 iu_81 的回复:]
一般都是对话框处理
有些消息也是控件特有的
[/Quote]

您的意思是能对话框处理
就对话框处理
实在不行了
才由控件自行处理
您的依据是什么呢
不过我感觉对话框工作量太大了

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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