在CView类中建议一个对话框的指针:
CMyDlg * pdlg;
然后在OninitialUpdate()函数中创建此对话框:
pDlg = new CMyDlg();
pDlg->Create(IDD_MyDlg, this); //到这一步就编译不通过
出现错误 unhandle error  0x00000c5这样的提示。在view 类中的其他不是初始化的函数中都可以运行, 但是就是在初始化的函数中不能运行,例如 oninintialupdate() onshowwindow() oncreate() precreatewindow() 等等函数中都不能运行, 不知道是什么原因阿?我的视图类是基于formview的。运行时的错误是: windows产生了错误即将关闭,发送错误报告的对话框。我重新建立了一个工程,按照上面的步骤去做,结果就不会出现错误。
所以我想肯定是在修改代码的时候有什么地方改动了。
 现在分析的结果就是 : 视图类在自己的构造函数中没有创建,所以在CMyView中加载任何对话框都会出错。后来经过DEBUG调试,终于发现了这个问题, 从CMyApp的inintal开始我就发现 CMyApp的this指针没有被赋值, 所以到了CMyview类中同样会导致View类的this指针也为空。  debug中显示的就是?????问号。 我很想知道怎么进一步调试, 为什么这个this指针没有被得到呢?  虽然this 指针没有得到,但是在视图类不加载其它对话框的时候程序还能正常运行,请问是怎么回事呢?
我对单文档的运行原理还不是很清楚,它是从哪里开始执行获得当前应用程序的指针的呢?我这个工程已经做了很久了,拿以前保存的老版本运行时发现一切正常, 现在我不可能再从老版本开始修改了。万分着急啊。 请高手救救我们公司吧。

解决方案 »

  1.   

    这问题还真没碰过.呵呵.能把源码给我一份吗?
    [email protected]
      

  2.   

    我水平也不行.恐怕分析不了什么实质的东西.
    你说从CMyApp的inintal开始. CMyApp的this指针没有被赋值.
    能具体说说吗?我还是不太懂.
      

  3.   

    你想要什么效果呢?只是想创建一个无模式的对话框么?那很容易啊,拿到MainFrm里去创建不就行了
      

  4.   

    哥们,你这个问题是不是在Create之后才new的???经验来说,多半是由于指针无效引起的...
      

  5.   

    最好指针初始化一下
    CMyDlg * pdlg=NULL;
    然后在OninitialUpdate()函数中创建此对话框:
    if (pdlg)
    {
      pDlg = new CMyDlg();
      pDlg->Create(IDD_MyDlg, this); //到这一步就编译不通过
    }
      

  6.   

    指针已经初始化过了, 绝对不会有错误的,我的前一个程序不会出现这个问题。  这个程序不知道改动了那里导致这样的问题。我是从 AfxWinMain() 开始调试的。 和别的正常程序对照,从这里开始就指针不能获得, 而另外一个程序就可以。 我不知道是什么原因导致的阿?
    不要给我回答那些初级错误,我是不会犯那些错误的。
      

  7.   

    那看一下是否在CMyDlg的oninitdialog中是否有问题。。比如更新控件之类的
      

  8.   

    CMyDlg中是否有控件或COM之类的东西?WinAPP中CoInitial应在最前调用(以下签名由MyCSDN回复工具生成)
    -----------------------------------------------
    MyCSDN 免费版 - http://community.csdn.net/Expert/TopicView1.asp?id=4608614
      

  9.   

    考虑重新编译一次(以下签名由MyCSDN回复工具生成)
    -----------------------------------------------
    MyCSDN 免费版 - http://community.csdn.net/Expert/TopicView1.asp?id=4608614
      

  10.   

    WinApp的this为空,肯定调试器出问题了,否则你程序能跑起来才怪。把Debug目录ncb什么的全删掉,重新编译再说(以下签名由MyCSDN回复工具生成)
    -----------------------------------------------
    MyCSDN 免费版 - http://community.csdn.net/Expert/TopicView1.asp?id=4608614
      

  11.   

    我是从 AfxWinMain() 开始调试的。 和别的正常程序对照,从这里开始就指针不能获得.CWinApp* pApp = AfxGetApp();是说这句就得不到指针吗?