补充一下,这个listctrl是在一个CPropertyPage对话框中
主程序是SDI

解决方案 »

  1.   

    首先看你用InserItem()时是否已经构造了该窗体。在别的地方试试看。
      

  2.   

    检查一下在你插入时这个属性框有没有构造出来,一般情况下是对话框的OninitDialog函数中把列表插入进去。
      

  3.   

    问题是——CPropertyPage中别的控件都能正常工作,listctrl可以显示出来,唯独不能添加新item,这是怎么回事?
    insert时发生ASSERT(::IsWindow(m_hWnd));的无效错误
      

  4.   

    你在哪个函数里添加新item的?
    好好想一下,你在添加的时候你的listctrl是否已经初始化,是否已经生成了。
      

  5.   

    sheet = new CPropertySheet();
    CTablePage page; LVCOLUMN col;
    col.mask = LVCF_FMT | LVCF_TEXT;
    col.pszText = _T("Table name");
    col.fmt = LVCFMT_LEFT;
    page.m_FieldList.InsertColumn(0, &col);//这儿就已经出错了         page.m_FieldList.InsertItem(0,"thename");
    //这儿的InsertItem()也出同样的错误
             sheet->AddPage(&page);
             sheet->Create();
    //如果去掉那两个Insert函数,这个sheet(CPorpertySheet类)能够正常工作,除了那个listctrl
      

  6.   

    你在CTablePage 类的OnInitDialog()函数中调用
       CPropertyPage::OnInitDialog();
       page.m_FieldList.InsertColumn(0, &col);       
      page.m_FieldList.InsertItem(0,"thename");
     试试看!        
      

  7.   

    CTablePage是从CPropertyPage派生的,怎么重载OnInitDialog()?
      

  8.   

    大概是m_hWnd没值,在你用m_hWnd时(地方),可能拥有m_hWnd的CWnd类(或派生类)还没create呢。
      

  9.   

     也就是page 或者m_FieldList还没有Create,尤其是page令人怀疑
    用xiaofk(darknight) 的方法,可以避免了
    在类向导,CTablePage找到WM_ONINITDIALOG...
     
     
      

  10.   

    我找了所有的Windows Message,没有如上所说的WM_ONINITDIALOG
    怎么办?
      

  11.   

    m_hWnd无效???那为什么别的控件(文本编辑框)能正常显示?
      

  12.   

    >page.m_FieldList.InsertColumn(0, &col);//这儿就已经出错了
    你应该在page的OnInitDialog(WM_INITDIALOG)函数中完成初始化。在这里page还没有被创建出来,当然会出错。
      

  13.   

    在CTablePage类 的message里没有WM_INITDIALOG?