我在一个MFC程序中建立一个对话框,让它弹出后用户无法取消它(除非点击“确定”按扭)。
包括
1、取消ESC键的操作。
2、取消对话框右上角的小叉。
3、把“取消”按扭变灰(不可用)。我知道可以直接修改资源文件,达到2和3的目的,但我需要的是在程序中判断是不是需要让用户不能取消对话框,所以需要用代码来实现2和3。
请大家教教我,谢谢了。(鞠躬)

解决方案 »

  1.   

    1的话重载PreTranslateMessage2,3
    好像是
    ModifyStyle
    ModifyStyleEx
      

  2.   

    BOOL CRoomGuideDialog1::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_ESCAPE)  return TRUE;
    if(pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN) return TRUE; 
    else 
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  3.   

    继承virtual void OnCancel();
    函数不做任何处理GetDlgItem(IDCANCEL)->EnableWindow(FALSE);
      

  4.   

    1、重载PreTranslateMessage
    2、modifystyle
    3、getdlgitem、enablewindow
      

  5.   

    问题解决了,谢谢大家。
    但是PreTranslateMessage无法捕获ATL键,ALT+F4还是可以关闭 对话框,
    不过还是给分了,谢谢大家。