我使用类似例子:
    CString StrMac,tmpstr;
......
    m_Mac_ListBox.AddString((LPCTSTR)StrMac);
}结果core掉了是挂在这个函数中:
void CListBox::DrawItem(LPDRAWITEMSTRUCT)
{ ASSERT(FALSE); }请问啥原因????

解决方案 »

  1.   

    m_Mac_ListBox.AddString((LPCTSTR)StrMac); 哪里调用的
      

  2.   

    m_Mac_ListBox 是否是正确的对象,是否绑定
      

  3.   

    是不是不小心加了owner-draw风格?去掉或者重载CListBox::DrawItem
      

  4.   

    m_Mac_ListBox 如果是绑定的控件 可以直接这样添加项;但是添加项要放到父窗口创建以后的地方。例如,不能放在构造函数,而应该放在Initialdialog里面。
    如果m_Mac_ListBox是动态生成的,也就是:
    CListBox m_Mac_ListBox;
    那么还需要使用Creat函数
    m_Mac_ListBox.Creat(.....pParantWnd, ID ) //这里要制定父窗口 同时要有一个资源ID与之相对应。
    楼主的问题可能就处在没有Creat上。
      

  5.   

    如果你指定了ownerdraw 你必须自己重载drawitem 因为基类的drawitem只有一句话
    { ASSERT(FALSE); }
      

  6.   

    我在
    void 父窗口Dlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        ......
        DDX_Control(pDX, listbox的ID, m_Mac_ListBox)}关联了m_Mac_ListBox还不行?DDX_Control也应该可以的吧?使用create函数是否是在父dlg的OnInitDialog()中进行???谢谢.
      

  7.   

    I DON'T KNOWN WHY.我把listbox删掉再重新创建一次
    让DDX_Control(pDX, listbox的ID, m_Mac_ListBox)} 
    由系统自己生成就OK了
    估计还是没有注册上的缘故 感谢各位了。******