在VC6下MFC APPWizard exe  建立了对话框程序,一按OK,或者其他的按键程序就结束了。在InitInstance()函数中加了for(;;){};
也没有进入死循环。
WHY
 
我的思路是能不能在对话框上按键,但对话框不结束,继续显示,继续运行。

解决方案 »

  1.   

    处理对话框的PreTranslateMessage
    BOOL   C****Dlg::PreTranslateMessage(MSG*   pMsg)   

    if(   pMsg-> message   ==   WM_KEYDOWN   ) 
    //   按键处理 

    if(   pMsg-> wParam   ==   VK_RETURN   ) 
    //   回车键处理 
    { //   屏蔽回车 
    return   TRUE; } 

    }
      

  2.   

    双机OK键,在消息响应函数中注释掉 CDialog::OnOK
      

  3.   

    因为默认情况下,对话框的焦点在“OK”按钮上,所以按下键后,就相当于按了“OK”按钮。
    按ESC,就相当于按了“Cancel”按钮。1楼的方法就是可以的。
      

  4.   

    删除新创建的  确定 取消 按钮,然后再去拖CButton控件放好就行了。
      

  5.   

    一般回车键可以通过重载对话框的OnOK函数处理
    这个位置处理Esc和空格键
      

  6.   

    重载PreTranslateMessage OnOk或OnCancel 这几个方法就可以了,具体方法楼上几位都说了。
      

  7.   

    对话框消失是因为它新创建的那两个按钮实现了
    CDialog::OnOK;和CDialog::OnCancel(); 还有就是按了键盘的ESC或ENTER,前一种你双击button控件进行删了这两句就行,第二种你就用1楼的方法屏蔽就行了。
      

  8.   

    处理案件消息在PreTranslateMessage函数里面...可以拦截掉...当然你可以把 enter和esc用做它途...在其他的子控件里面处理...貌似消息反射的存在,所以前面的拦截不影响控件... 个人猜测...达人给个权威一点说法吧..
      

  9.   

    你要实现什么功能?
    试试在OnOK里调用UpdateData()
      

  10.   

    我要现实这样的功能建立一个对话框程序,要有,确定,撤销,和一个EDIT BOX。
    把撤销键改为计时器设置SETTIME,按了就开始每三秒ONTIME。EDIT BOX输入数字X,范围100至999。
    第一位是编号,后两位是时间分钟输入数字按确定后,编号NUM=X/100;TIME1=当时时间,TIME2=TIME1+X-NUM*100,定时时间;ONTIME函数里
    当系统时间==定时时间TIME2时,在对话框上显示“第NUM号,时间到了”。
    谢谢诸位,注释掉 CDialog::OnOK好象可以。