新建的MFC对话框应用程序 ID是IDOK的按钮是如何映射到OnOK()函数 当为这个按钮添加一个自己写的消息映射的时候,原来映射到OnOK()又是如何屏蔽的添加一个自己写的消息映射的时候,回车按钮又是怎么映射到自己写的这个函数的

解决方案 »

  1.   

    创建一个最原始的MFC程序,一下就看出来了。
      

  2.   

    1.CDialog有ON_COMMAND(IDOK,);
    2.MFC的消息路由策略是子类到基类回溯;
    3.DoModal调用IsDialogMessage会处理按键ENTER,发出WM_COMMAND(IDOK
      

  3.   

    先谢谢你前两条懂了  第三条能不能说的详细点  enter 和  IDOK 怎么联系上的
      

  4.   

    默认按下Enter后激活的控件是可以自定的。打开对话框资源,选中一个控件:比如一个Button,然后上面有一个属性是Default Button,如果选择True,那么这个按键就是按下Enter后激活的按键。至于和IDOK的联系,IDOK是系统默认的一个Button控件ID,如果一个控件和这个ID绑定,当这个IDOK的控件被按下,则激活OnOk这个函数。
      

  5.   

    换句话说,之所以按下Enter就激活了IDOK的按钮,是因为这个按钮被设置了属性Default Button为True
      

  6.   


    原来在这里啊 怪不得消息预处理函数里只有ESC  和 crt+break的键处理 原来enter的处理机制不一样
    3Q