把对话属性中的默认Cancel去掉。
大概就是这个属性吧,如果不是,你再找找,差不远

解决方案 »

  1.   

    get message
    swicth(message ){
        case WM_KEYDOWN:
        if (message.wparam == 27)
           return;
        break;
        default:
    }
      

  2.   

    //你需要相应消息
    //如此简单
    BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg) 
    {
    //hitting the F5 key, force a refresh of the whole tree
    if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
    {//VK_ESCAPE 1B ESC key  
    //OnRun();
    return TRUE;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  3.   

    重载PreTranslateMessage函数,在此函数中处理WM_KEYDOWN
    BOOL CDoscoDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class

    if( pMsg->message == WM_KEYDOWN)
        {
                    
             

    if(  pMsg->wParam == VK_ESCAPE )
    {

    ::TranslateMessage(pMsg);
                ::DispatchMessage(pMsg);
                return TRUE;   
    }

    return CDialog::PreTranslateMessage(pMsg);
    }
      

  4.   

    我觉得不用象以上各位所说那样麻烦:
    对话框不是有cancel按钮吗?对应消息处理函数是OnCancel(),在OnCancel()中把那唯一的一句注释掉就行了,如下:
    void CYourDialog::OnCancel() 
    {
    // TODO: Add extra cleanup here

    //CDialog::OnCancel();//注释掉!!
    }
      

  5.   

    beegee(提头游于市--别怕,是我自己的猪头)你这样不就连cancle按钮都没有用了吗?还是应该用PreTranslateMessage的
      

  6.   

    beegee的才是最好的方法,偶一直这么用的.
    修改了OnCancel()之后,可以再把cancel按钮的ID改成IDC_CANCEL,
    可以再次映射(注意再次映射时应更改wizard提供的缺省函数名,比如
    改成OnCancelClick ), 这样就可以继续用Cancel按钮了.这里还有个问题,修改了OnCancel以后,嘿嘿,"X"按钮和Alt-F4都不管用了.
    要解决这个问题,还需要修改OnSysCommand映射.