程序还没进入OnInitDialog函数,在构造函数CScaleDlg::CScaleDlg(CWnd* pParent /*=NULL*/)那就死了,看了网上的一些方法,都是检查OnInitDialog函数,但是现在在OnInitDialog函数之前就死了,哪位大侠帮忙分析一下啊?

解决方案 »

  1.   

    是否有activex或com控件,没注册?
    是否资源文件没找到?
      

  2.   

    这个是开头
    BOOL CXXXXXApp::InitInstance()断点打在InitInstance()这里另外你代码里面有什么其他引用,可以报告下
      

  3.   

    没有任何引用,是一个空白对话框,只有默认的OK和Cancel两个按钮
      

  4.   

    主程序是.C文件,不支持MFC的对话框,为此又新建一个.cpp文件,在.cpp文件里写的以下代码:extern "C" BOOL OpenTableDlg()
    {
    CScaleDlg dlgForScale;
    dlgForScale.DoModal();
    return TRUE;
    },然后在.c文件里调用OpenTableDlg函数。但是到dlgForScale.DoModal()就弹出断言错误了
      

  5.   

    竟然在.c里面玩MFC的东西,汗。
    换个思路吧,直接在代码中用System来启动这个程序不就OK了么?
      

  6.   

    断言的地方找到了:
    _AFXWIN_INLINE HINSTANCE AFXAPI AfxGetInstanceHandle()
    { ASSERT(afxCurrentInstanceHandle != NULL);
    return afxCurrentInstanceHandle; }
      

  7.   

    你用到了mfc的东西,却没有链接dll。
    在项目属性里面,设置一下,动态(静态)链接到dll。
      

  8.   


    System就一句话,就能达到你的效果了。后面跟DOS命令啊,在MFC里面启动你的Dialog就可以了
      

  9.   

    这个真的不懂,况且现在开发的是CAD中的一个项目,只能点击菜单启动这个命令,不能用其他的方法
      

  10.   


    呵呵,让我想起曾经也是傻傻分不清。把弹框的函数OpenTableDlg放在dll里面,导出来。dll是mfc的dll。
      

  11.   

    检查OnInitDialog()
    及该对话框里相关的映射
      

  12.   

    一般都是后期的语言规范中引用前期的,你在c的主程序里用DoModal().......
    这种做法很不平常,所以源程序在编译链接时很容易混乱。如果不是太繁琐,还是将主程序改为C++/MFC为好