hur.cn - 华软网

 热门搜索

为什么有的类有某消息,而 有的mfc类没有该消息?

  作者:未知    来源:网络    更新时间:2011/10/8
为什么有的类有某消息,而 有的mfc类没有该消息?

这是什么缘故?


第二个问题:如果不添加某消息,是不是就不会调用该消息对应的消息响应函数啊?

对于,第二个问题,我持否定意见,比如对于Dialog,它就没有WM_INITDIALOG这个消息可以让用户来添加,

但是确实是有这个消息, 谁发送的,当初始化的时候就发送了这个消息,并且 去调用OnInitDialog函数



第三个问题:

为什么 想把一个对话框屏蔽ESC和回车键,可以把CDialog::OnCancel函数留空,什么都不做,就可以屏蔽?

为什么会是这个函数???

而不是其他函数。。




---华软 网友回答---
1. 看你用的是什么类
2. 会调用默认的消息处理,CDialog类的虚函数OnInitDialog是对WM_INITDIALOG消息的处理函数
3. 参考MSDN文档
The framework calls this method when the user clicks Cancel or presses the ESC key in a modal or modeless dialog box. 

virtual void OnCancel( );
 

---华软网友回复---
抱歉, 我打字打错了,   第二个问题,应该是肯定的

WM_INITDIALOG是不需要用户添加,但是确实存在。。。。。


从这个例子是不是可以得出一个结论:   没有添加消息, 但是依然有可能会去 调用这个消息对应的消息响应函数。。。。

但是 这种消息比较特殊, 姑且叫内部的消息吧




引用 1 楼 visualeleven 的回复:
1. 看你用的是什么类
2. 会调用默认的消息处理,CDialog类的虚函数OnInitDialog是对WM_INITDIALOG消息的处理函数
3. 参考MSDN文档
The framework calls this method when the user clicks Cancel or presses the ESC key in a modal or modeless dialog……

---华软网友回复---
第一个问题,正是我郁闷的,


是不是一种规定 导致: 有的mfc 类可以添加某些消息, 有的则不能?

我很天真的认为,既然是windows消息,那么为什么 不可以让每个类都有资格去响应它,做出一些列动作呢呢?



引用 1 楼 visualeleven 的回复:
1. 看你用的是什么类
2. 会调用默认的消息处理,CDialog类的虚函数OnInitDialog是对WM_INITDIALOG消息的处理函数
3. 参考MSDN文档
The framework calls this method when the user clicks Cancel or presses the ESC key in a modal or modeless dialog……

---华软网友回复---
第三个问题,我很二, 一直以为 如果去掉对话框上的确定和取消按钮,那么OnOK OnCancel函数就无效了。。
简单的把这两个函数当做 按钮响应的函数, 其实是错误的,他们是CDialog的成员函数


按照 但是这两个函数并非 消息响应函数, 没有什么消息对应着。。


好奇怪,当用户按了ESC的时候,为什么会去调用OnCancel呢??


---华软网友回复---
引用 3 楼 caddor2011 的回复:
第一个问题,正是我郁闷的,


是不是一种规定 导致: 有的mfc 类可以添加某些消息, 有的则不能?

我很天真的认为,既然是windows消息,那么为什么 不可以让每个类都有资格去响应它,做出一些列动作呢呢?



引用 1 楼 visualeleven 的回复:
1. 看你用的是什么类
2. 会调用默认的消息处理,CDialog类的虚函数OnInitDialog是对W……

从CCmdTarget派生的一些类都有消息处理的能力

---华软网友回复---
参考一下MSDN文档就知道了
---华软网友回复---
你给男人发送WM_干菊花,男人响应了,你给女人发送WM_干阴Dao,女人内部响应

你觉得男人有必要响应WM_干阴Dao的消息吗?
---华软网友回复---
那是因为OnOk和OnCancel是虚函数,事实上在基类中已经相应了。如果你重载他,你就可以处理。如果你的OnCancel调用了基类的OnCancel,程序就会退出。
---华软网友回复---
7楼的好剽悍
---华软网友回复---
这个是mfc框架帮助你添加好的消息响应,消息本身并不特殊
引用 2 楼 caddor2011 的回复:
抱歉, 我打字打错了, 第二个问题,应该是肯定的

WM_INITDIALOG是不需要用户添加,但是确实存在。。。。。


从这个例子是不是可以得出一个结论: 没有添加消息, 但是依然有可能会去 调用这个消息对应的消息响应函数。。。。

但是 这种消息比较特殊, 姑且叫内部的消息吧





引用 1 楼 visualeleven 的回复:
1. 看你用的是什么类
2……

---华软网友回复---
到处可见此高手,您可以申请版主了啊
引用 1 楼 visualeleven 的回复:
1. 看你用的是什么类
2. 会调用默认的消息处理,CDialog类的虚函数OnInitDialog是对WM_INITDIALOG消息的处理函数
3. 参考MSDN文档
The framework calls this method when the user clicks Cancel or presses the ESC key in a modal or modeless dialog……

---华软网友回复---
我靠,强悍~~~
引用 7 楼 tr0j4n 的回复:
你给男人发送WM_干菊花,男人响应了,你给女人发送WM_干阴Dao,女人内部响应

你觉得男人有必要响应WM_干阴Dao的消息吗?

---华软网友回复---
...........

无语

这么说吧,如果想让所有的mfc类, 可以相应所有消息,是不是就意味着,要改动整个框架了?

当然 ,正如你所说的,没有必要 让所有类相应所有的消息。。。。

我只不过是 心存疑问




引用 7 楼 tr0j4n 的回复:
你给男人发送WM_干菊花,男人响应了,你给女人发送WM_干阴Dao,女人内部响应

你觉得男人有必要响应WM_干阴Dao的消息吗?

---华软网友回复---
你好,

你的意思是,  消息是向导添加的,

只不过 距离:类A 不相应 wm_xx 这个消息,它没有相应的相应函数,

向导就不让你添上这个消息,

如果强行手动添加,那么是不是她也不会相应?

比如:强行在CMyDialog中添加  对话框不能相应的消息。。。




引用 10 楼 buyong 的回复:
这个是mfc框架帮助你添加好的消息响应,消息本身并不特殊

引用 2 楼 caddor2011 的回复:
抱歉, 我打字打错了, 第二个问题,应该是肯定的

WM_INITDIALOG是不需要用户添加,但是确实存在。。。。。


从这个例子是不是可以得出一个结论: 没有添加消息, 但是依然有可能会去 调用这个消息对应的消息响应函数。。。。

但是 这种消息比较特殊, 姑且叫内部……

---华软网友回复---
楼主主要还是不了解C++类的继承。

继承类是不显示基类的成员的,也就是说有很多在基类中实现了的代码,你在继承类中是看不到的。
但MFC的类基本都是继承类,因此有很多基类的成员或者函数或者方法,它们是怎么处理的?你在继承类中是看不到的。

看不到不代表它没有。
---华软网友回复---
学习了~~~
---华软网友回复---
up up
---华软网友回复---
up up      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。