我新学VC和MFC,就照着候先生的《深入浅出MFC》学习。
基本上比较顺利,不过当学到第八章调用对话框的时候就出问题了。
我照着例子把对话框画出来,然后doModel它。编译可以通过,但是只要执行这个操作程序就没有反映了。
我不知道什么原因,就随便新建了一个dialog(非常简单的那种),可是调用的时候还是不行。
后来我干脆就调用about对话框,但还是没有任何反映。
这种没有反映就像进入了死循环一样,占用CPU资源达到了90%以上。我初步怀疑是程序其他的框架问题,但是又不知道哪里出的问题,清高手指点
谢谢

解决方案 »

  1.   

    现在问题是,我调用aboutDlg也是没有反映。
    代码很简单
    void CScribbleDoc::OnPenWidths(){  //一个菜单项
         
         CPenWidthsDlg dlg;
         if(IDOK==dlg.DoModal()){
              //现在把里面的代码全都去掉了也不行
         }
    }
      

  2.   

    CScribbleDoc?怎么在CDocument里面调用啊,要在View里面调用DoModal()才行的。
      

  3.   

    同意楼上做法,VIEW ,DOC,FRAME之间的关系要搞清楚。每一个的主要作用及其什么时候该用哪个,也要搞清楚。有些书上讲的比较清楚。
      

  4.   

    不行  在view里面也是不行的void CScribbleView::OnPenWidths() 
    {
    // TODO: Add your command handler code here
    TestDlg dlg;
    if(dlg.DoModal()==IDOK){
    //fdsafasdf;
    }
    }几位,能给推荐个VIEW ,DOC,FRAME之间的关系要搞清楚的文章嘛?
      

  5.   

    感觉不是这方面的问题。你的工程放到其它机器上运行有问题么?
    不如发到[email protected]。:>
      

  6.   

    VIEW 管理视图界面,DOC管理数据,FRAME承载VIEW 和 DOC 
    我这里有本书,但是没法给你,呵呵
      

  7.   

    happyparrot(为何我买彩票从来不中奖?没钱怎么办阿?) 
     邮件已经发送 谢谢查收 hyg2008(蓝色雨) 
     你的书是什么名字啊?告诉我我自己搜下 谢谢
      

  8.   

    晕死我了。花了我不少时间,终于解决了。
    问题在这里:
    void CScribbleView::OnPaint() 
    {
    // CPaintDC dc(this); // device context for painting
    CClientDC dc(this);
    CClientDC* d = &dc;
      this->OnDraw(d);
    // TODO: Add your message handler code here

    // Do not call CEditView::OnPaint() for painting messages
    }
    应该改为:
    void CScribbleView::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting
      this->OnDraw(&dc);
    // TODO: Add your message handler code here

    // Do not call CEditView::OnPaint() for painting messages
    }
    在OnPaint中你怎么用ClientDC呢?MFC都已经帮你建好的dc你不用。
      

  9.   

    解释应该就是你重绘客户的时候,客户又调用主画布画,造成了死循环,不停地发送WM_PAINT消息导致的.哈哈