我想创建一个模态对话框:
CReplyMessage dlg; 
dlg.DoModal(); 可结果是得到了非模态对话框的效果,不知道问题在哪。想请教的是: 哪些操作会导致 模态对话框失效, 谢谢!

解决方案 »

  1.   

    (1) 在哪里调用的,它的相对父窗口是什么
    (2) CReplyMessage从哪里来的,是不是CDialog继承的,有没有改写什么另外,告诉lz一个秘密,所谓模态对话框,无非是做了2个操作:
    将窗口设置为调用窗口的子窗口
    将调用窗口禁用
      

  2.   


    (1)点击一个按钮触发该事件
    (2)CReplyMessage类继承了CSkinDialog类,后者才继承了CDialong,CSkinDiaglong类中添加了一些函数,主要为派生类添加图片,修改界面什么的。 CReplyMessage类重写的函数有:OnCreate(LPCREATESTRUCT lpCreateStruct)  (作用:添加button,限定界面的大小);OnEraseBkgnd(CDC* pDC) (作用:添加背景图片,)(3)谢谢(4)刚刚新建了个MFC自动创建的类,CTest, 
    CTest dlg; dlg.Domodal();  点击按钮,出现的仍然是非模态对话框。是否就可以判断 是父窗体出现的问题?
      

  3.   

    如果LZ点击一个按钮触发事件后使用模态方式调用的对话框是非模态对话框,建议LZ检查一下你所谓“点击一个按钮”的那个“按钮”所在的对话框的形态,如果是非模态调用的,那么其子对话框不管你采取什么样的调用方式都将看到非模态对话框的效果~
      

  4.   

    楼主可以试着在按钮的单击消息函数中MessageBox()一下,如果弹出的消息框没有什么问题(模态对话框)的话,那么就可以确定楼主在代码的组织或者是编写上出现问题。或者将模态与非模态的概念.....了,呵呵~~
      

  5.   

    试着在按钮的单击消息函数中MessageBox()一下
      

  6.   

    尝试过了  ,MessageBox仍是非模态的