我创建了一个基于对话框的MFC程序,在这个对话框中建了个tab control控件,然后用这个tab控件把另外两个对话框显示出来
,当然这两个对话框都是子窗口了,当我想在这个子对话框中创建一个list control控件时,程序就不能运行了,一运行就提示“警告 终止 忽略”,后来发现是因为我用control控件映射变量了,也就是说只要CListCtrl   m_List;程序就不能运行了。
这是为什么啊?怎么解决?

解决方案 »

  1.   

    和这个没有关系啊,不过对于子窗口在Tab中显示的区域你得设置下
    另外还得用Create函数创建窗口显示
      

  2.   

    就提示“警告 终止 忽略”,///////点机重试, 去看看是哪个错了, 我怀疑是你的OnInitDialog没有调用, 以至于listctrl变量句柄为空。 
      

  3.   

    主对话框的OnInitDialog()函数中
            m_mm1.Create   (IDD_DIALOG1,&m_tabctrl); 
    m_mm2.Create   (IDD_DIALOG2,&m_tabctrl); 
    m_mm3.Create   (IDD_DIALOG3,&m_tabctrl); 
    m_mm1,m_mm2,m_mm3是子对话框的对象,主对话框的OnSelchangeTab函数中,我用SetWindowPos把子对话框都显示出来了,
    我刚才忘说了一个很重要现象,就是子对话框中的其它控件都正常显示,唯独list control控件不能映射变量。不映射变量就可以运行,并能看见控件。但只要一映射变量,就不能运行了
      

  4.   

    我又发现了,不是list control控件不能映射变量,而是子对话框中控件映射变量不能超过3个,我的子对话框中有很多控件,其中3个已经映射了变量,其它的不管什么控件,只要映射第4个变量,程序就不能运行了。报错  “终止 重试 忽略”。
    而且我感觉子对话框的OnInitDialog函数确实没调用。这是为什么啊?
      

  5.   

    我调试了一下,发现程序
    BOOL CLibmanApp::InitInstance()
    {
    CLibmanDlg dlg;
    m_pMainWnd = &dlg;//运行到这里就出错了
    int nResponse = dlg.DoModal();
    。。
    }
    CLibmanDlg是我的主对话框类。
      

  6.   

    给每一个子对话框都实例化一个对象,比如 CXXXDlg m_New1; m_New1 = NEW CXXXDlg(&m_CtrlTab);
    然后Create、SetWindowPos