rt

解决方案 »

  1.   

    重载你的对话框中的PreTranslateMessage函数,在函数中如下处理
    BOOL CMyDlg::PreTranslateMessage(MSG* pMsg) 

    if(pMsg->message == WM_KEYDOWN) {
    if(pMsg->wParam == 0x0d) {
     
    return TRUE;
                       }

    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  2.   

    重载OnOK OnCancel 
    然后里面什么也不作
      

  3.   

    基于对话框的应用程序如何屏蔽按ESC键关闭窗口在BOOL C***Dlg::PreTranslateMessage(MSG* pMsg)中
    if (pMsg->message == WM_KEYDOWN)
    {
        if (pMsg->wParam == VK_ESCAPE) //Esc键不退出程序
    return TRUE;
    }
      

  4.   

    屏蔽关闭
    CMenu *pSystemMenu=GetSystemMenu(FALSE);
    pSystemMenu->DeleteMenu(8,MF_BYPOSITION);
    pSystemMenu->DeleteMenu(7,MF_BYPOSITION);
    pSystemMenu->DeleteMenu(5,MF_BYPOSITION);
    pSystemMenu->DeleteMenu(4,MF_BYPOSITION);
    pSystemMenu->DeleteMenu(3,MF_BYPOSITION);
    pSystemMenu->DeleteMenu(2,MF_BYPOSITION);//好象是它,你试一下.
      

  5.   

    处理WM_SYSCOMMAND消息,就是OnSysCommand(UINT nID, LPARAM lParam ); 
    判断当nID为SC_CLOSE的时候,就是点了关闭按钮,直接返回就行了至于按回车的时候不响应OnOK(),正常的,IDOK的按钮应该是Default Button,把这个属性去掉就行了,不用去处理消息,太麻烦了
      

  6.   

    只是想暂时禁用,按楼上的方法,加个BOOL变量判断也行,但还是觉得把关闭按钮变灰更好
    第二个问题,去掉Default Button是不行的,其实我把OK按钮都删掉了,否则就让它回车响应OnOK也没事的
      

  7.   

    重载ok函数就行了,因为焦点默认在ok上
      

  8.   

    禁用关闭按钮可以在OnInitDialog 中 加入下面代码:
    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
       pSysMenu->DeleteMenu(SC_CLOSE,MF_BYCOMMAND);
    }
    重载对话框的OnOK函数,可以屏蔽回车键
    void CMyDlg::OnOK()
    {
    }