如题目我在主窗口的一个按钮响应函数里
CMydialog dlg;
dlg.m_mylist.InsertItem(LVIF_TEXT|LVIF_STATE, j, 
str1, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED, 0, 0);         dlg.m_mylist.SetItemText(j,1,casName[0]);
 dlg.m_mylist.SetItemText(j,2,casName[1]);dlg.DoModal;编译通过后点该按钮出错!
同样,使用GetItemText也出错

解决方案 »

  1.   

    当然会出错
    对话框没创建的时候控制窗口会有断言错误出现
    你应该去看看http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfcnotes_tn026.asp
      

  2.   

    对话框的初始化工作在OnInitDialog里完成就OK啦。
    VC里每一个功能的实现都需要找到正确的位置。
      

  3.   

    CMydialog dlg;
    dlg.DoModal;
    dlg.m_mylist.InsertItem(LVIF_TEXT|LVIF_STATE, j, 
    str1, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED, 0, 0);         dlg.m_mylist.SetItemText(j,1,casName[0]);
     dlg.m_mylist.SetItemText(j,2,casName[1]);dlg.DoModal;先显示,然后再操作。。不然你的窗口还不存在你操作什么?DoModal才是初始化窗口。
      

  4.   

    初始化列表框的代码最好写在窗口的 OnInitDlg 中,需要的参数可以在 DoModal 之前传入窗口的变量中,窗口显示后程序的控制权就交给窗口了,可用指针把结果传回主程序
      

  5.   

    这种情况用无模式对话框好点,需要时 ShowWindow(SW_SHOW);,不需要时 ShowWindow(SW_HIDE);