MFC如何在自定义类中添加消息响应

qulu2009 2010-08-11 11:01:35
如题所示,我创建了一个基于mfc的对话框项目,然后自己写了一个类,动态创建了一个按钮CButton,然后我想在自己写的那个类里面写上消息响应函数,可是结果没有任何反应,倒是在项目自动生成的**Dlg类中写消息响应函数有反映的。不知道能不能在自己的类中能不能写呢?请高手指教阿...
...全文
663 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-09-08
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
夜雨清狂 2010-08-13
  • 打赏
  • 举报
回复
楼主应该用 事件响应吧! 消息响应是容器自生对自生消息的响应,事件才是容器对控件消息的响应.控件发出事件消息让容器来响应.你这里的容器就是对话框XXXDlg.事件响应和消息响应是不同的吧.虽然事件和消息表面上看起来差不多,但它们来源是不同的.很明显事件是EN_开头,消息是WM_开头. 不知道楼主是不是,这个没怎懂??
码侬 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qulu2009 的回复:]
引用 3 楼 sunnyloves 的回复:

继承下来 然后.h里写afx_msg void XXX(void);和DECLARE_MAP_MESSAGE
。cpp里写那个ON_COMMAND宏


可能我自己没说清楚,我写的类继承自CWnd,在类中有个Create()函数,在里面创建CStatic,CEdit等等控件,我如果想在自己的类中写某个控件,比如说CEdit的消息响应,行不……
[/Quote]

消息响应是针对窗口的,你自定义的窗口需要自己写一下消息映射,才能够响应消息。注意自己的窗口类不要忘了消息映射的声明:头文件DECLARE_MESSAGE_MAP()

CStatic,CEdit等等控件,MFC已经为你定义好了消息映射,你不用写任何映射代码就可以响应消息。

muzizongheng 2010-08-13
  • 打赏
  • 举报
回复
你的id给的对不?
qulu2009 2010-08-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 carlclouder 的回复:]

楼主应该用 事件响应吧! 消息响应是容器自生对自生消息的响应,事件才是容器对控件消息的响应.控件发出事件消息让容器来响应.你这里的容器就是对话框XXXDlg.事件响应和消息响应是不同的吧.虽然事件和消息表面上看起来差不多,但它们来源是不同的.很明显事件是EN_开头,消息是WM_开头. 不知道楼主是不是,这个没怎懂??
[/Quote]

恩。。。对的,我要的应该是事件响应,用的也是EN_开头的,但是在自己写的类里写事件响应就是么反应啊?如何实现呢?
羽毛乱发 2010-08-11
  • 打赏
  • 举报
回复
自定义消息,是针对窗口的,否则,貌似不行哦

::sendmessage(...........)
Eleven 2010-08-11
  • 打赏
  • 举报
回复
你是怎么写的呢?
senlinzhiwang 2010-08-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sunnyloves 的回复:]
继承下来 然后.h里写afx_msg void XXX(void);和DECLARE_MAP_MESSAGE
。cpp里写那个ON_COMMAND宏
[/Quote]
就这样做了。
洗洗睡去 2010-08-11
  • 打赏
  • 举报
回复
继承下来 然后.h里写afx_msg void XXX(void);和DECLARE_MAP_MESSAGE
。cpp里写那个ON_COMMAND宏
黑泡泡选手 2010-08-11
  • 打赏
  • 举报
回复
自己写类继承自CButton,增加消息响应,然后在XXXDlg中动态创建,不就行了麽?
hurryboylqs 2010-08-11
  • 打赏
  • 举报
回复
消息是针对窗口类的 你自定义的类是否是窗口类?
qulu2009 2010-08-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wang_zheguilai 的回复:]

引用 3 楼 sunnyloves 的回复:
继承下来 然后.h里写afx_msg void XXX(void);和DECLARE_MAP_MESSAGE
。cpp里写那个ON_COMMAND宏

就这样做了。
[/Quote]


可能我自己没说清楚,我写的类继承自CWnd,在类中有个Create()函数,在里面创建CStatic,CEdit等等控件,我如果想在自己的类中写某个控件,比如说CEdit的消息响应,行不行呢...我试过在XXXDlg中增加消息是可以的...
qulu2009 2010-08-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sunnyloves 的回复:]

继承下来 然后.h里写afx_msg void XXX(void);和DECLARE_MAP_MESSAGE
。cpp里写那个ON_COMMAND宏
[/Quote]

可能我自己没说清楚,我写的类继承自CWnd,在类中有个Create()函数,在里面创建CStatic,CEdit等等控件,我如果想在自己的类中写某个控件,比如说CEdit的消息响应,行不行呢...我试过在XXXDlg中增加消息是可以的...
qulu2009 2010-08-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 worcy_kiddy 的回复:]

自己写类继承自CButton,增加消息响应,然后在XXXDlg中动态创建,不就行了麽?
[/Quote]
可能我自己没说清楚,我写的类继承自CWnd,在类中有个Create()函数,在里面创建CStatic,CEdit等等控件,我如果想在自己的类中写某个控件,比如说CEdit的消息响应,行不行呢...我试过在XXXDlg中增加消息是可以的...

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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