我有一个SDI程序,视图为class CNetExamView : public CFormView
程序中有一个对话框类:class CExamEnd : public CBaseDig
void CExamEnd::OnOK() 
{
    CNetExamView mysubtime;
    mysubtime.MyEndExam ();
}MyEndExam() 函数是对视图背景操作的代码
{
    CDC* pDC;
    pDC = GetDlgItem(IDC_STATIC2)->GetDC();
    ShowDataEnd(pDC,"  " ,-45);}程序运行,就内存错误,我想是不是我单击CexamEnd对话框Ok时,此对话框还没有结束
,而执行视图中myendexam()对视图类中控件的操作,程序不能找到,而报错,但我不知道
怎么修改,请大侠指教。

解决方案 »

  1.   

    CNetExamView mysubtime;构造一个视图错误。你在对话框中向视图发送自定义消息,SendMessage在视图中ONMESSAGE宏关联消息和处理函数。
    ///////
    如果对话框是动态创建的,可以在构造函数中加CView* pview参数。在视图中 C**Dlg *pdlg = new C**Dlg(this);对话框中用这个指针调用view中的函数。要强制转换成你的视图类型CNetExamView*。
      

  2.   

    补充一下,视图接受到消息处理时,可以调用MyEndExam ();也就是要视图自己来处理,对话框通知就可以了。
      

  3.   

    改变一下思路,在CNetExamView中调用对话框:
    CExamEnd dlg;
    if (dlg.DoModal() == IDOK)
    {
        MyEndExam ();
    }