建立一个Dialog Based工程主对话框类CTestADODlg. OnBtnQuery()是CTestADODlg中按钮"查询"的消息处理函数.CDataShowDlg是由class Wizard生成的类,含有列表框,且定义了void Querydb
()函数,CListCtrl m_listShow; 问题是:按下"查询"触发OnBtnQuery(),在OnBtnQuery()中调用定义
CDataShowDlg dlg; 然后dlg.Querydb()进入Querydb()函数,当执行到m_listShow.DeleteAllItems()的时候就弹出对话框提示出错,查看afxcmn.inl中148行.还有三个选项"终止""重试""忽略".这个问题怎么解决啊?

解决方案 »

  1.   

    是不是哪里调用了 SetItemData ?
      

  2.   

    就选“重试”撒!
    然后call stack
      

  3.   

    CDataShowDlg dlg;
    dlg.DoModal();
      

  4.   

    对了 CDataShowDlg 还没有创建界面,肯定出错啦
      

  5.   

    楼上的有理,可以这样解决,不用模式对话框,用非模式的
    // .h
    CDataShowDlg *m_pDataShowDlg;// .cppm_pDataShowDlg = NULL;// 初始化m_pDataShowDlg = new CDataShowDlg;
    m_pDataShowDlg.Create(CDataShowDlg::IDD);
    //在Create代码执行之后就可以调用m_listShow.DeleteAllItems()
    m_pDataShowDlg.ShowWindow(SW_SHOW);在CDataShowDlg::OnDestroy()中销毁对象
    if ( m_pDataShowDlg != NULL )
    {
        m_pDataShowDlg->DestroyWindow();
        delete m_pDataShowDlg;
        m_pDataShowDlg = NULL;
      

  6.   

    同意ls的说法,因为Create之后调用了OnInitDialog函数,这时控件也形成可以对
    它们进行各种操作!