为什么有的类有某消息,而 有的mfc类没有该消息?这是什么缘故?
第二个问题:如果不添加某消息,是不是就不会调用该消息对应的消息响应函数啊?对于,第二个问题,我持否定意见,比如对于Dialog,它就没有WM_INITDIALOG这个消息可以让用户来添加,但是确实是有这个消息, 谁发送的,当初始化的时候就发送了这个消息,并且 去调用OnInitDialog函数第三个问题:为什么 想把一个对话框屏蔽ESC和回车键,可以把CDialog::OnCancel函数留空,什么都不做,就可以屏蔽?为什么会是这个函数???而不是其他函数。。

解决方案 »

  1.   

    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( );
     
      

  2.   

    抱歉, 我打字打错了,   第二个问题,应该是肯定的WM_INITDIALOG是不需要用户添加,但是确实存在。。
    从这个例子是不是可以得出一个结论:   没有添加消息, 但是依然有可能会去 调用这个消息对应的消息响应函数。但是 这种消息比较特殊, 姑且叫内部的消息吧
      

  3.   

    第一个问题,正是我郁闷的,
    是不是一种规定 导致: 有的mfc 类可以添加某些消息, 有的则不能?我很天真的认为,既然是windows消息,那么为什么 不可以让每个类都有资格去响应它,做出一些列动作呢呢?
      

  4.   

    第三个问题,我很二, 一直以为 如果去掉对话框上的确定和取消按钮,那么OnOK OnCancel函数就无效了。。
    简单的把这两个函数当做 按钮响应的函数, 其实是错误的,他们是CDialog的成员函数
    按照 但是这两个函数并非 消息响应函数, 没有什么消息对应着。。
    好奇怪,当用户按了ESC的时候,为什么会去调用OnCancel呢??
      

  5.   

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

  6.   

    你给男人发送WM_干菊花,男人响应了,你给女人发送WM_干阴Dao,女人内部响应你觉得男人有必要响应WM_干阴Dao的消息吗?
      

  7.   

    那是因为OnOk和OnCancel是虚函数,事实上在基类中已经相应了。如果你重载他,你就可以处理。如果你的OnCancel调用了基类的OnCancel,程序就会退出。
      

  8.   

    这个是mfc框架帮助你添加好的消息响应,消息本身并不特殊
      

  9.   

    ...........无语这么说吧,如果想让所有的mfc类, 可以相应所有消息,是不是就意味着,要改动整个框架了?当然 ,正如你所说的,没有必要 让所有类相应所有的消息。我只不过是 心存疑问
      

  10.   

    你好,你的意思是,  消息是向导添加的,只不过 距离:类A 不相应 wm_xx 这个消息,它没有相应的相应函数,向导就不让你添上这个消息,如果强行手动添加,那么是不是她也不会相应?比如:强行在CMyDialog中添加  对话框不能相应的消息
      

  11.   

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