我认为原因在于,你的View被创建后,系统向View发了WM_CTLCOLOR消息,但此时,你的ListBox还没有完成创建工作,而你又多在你的这个函数中使用ListBox的对象,所以出现程序运行时出错。所以,我认为你应该想办法保证在你的View完成Create前把你的ListBox创建了。你可以试试在View的PreCreateWindow()中完成ListBox的创建工作。

解决方案 »

  1.   

    你说的有道理,我原来是在CMyView::OnDraw下创建m_Listbox的,现在改在CMyView::CMyView下创建,出现了错误.代码如下:        
             LPVOID lpMsgBuf;//存储错误信息
    if(m_Listbox.Create(WS_CHILD|WS_VISIBLE|LBS_STANDARD, 
    CRect(10,10,200,200), this, 1001)==0)
    {
    int ErrorCode = GetLastError();
    FormatMessage( 
    FORMAT_MESSAGE_ALLOCATE_BUFFER | 
    FORMAT_MESSAGE_FROM_SYSTEM | 
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,ErrorCode,
    MAKELANGID(LANG_NEUTRAL,               SUBLANG_DEFAULT), // Default language
    (LPTSTR) &lpMsgBuf,
    0,NULL );
    }
             //Listbox的创建老是通不过,提示的错误信息是"操作成功完成"
    AfxMessageBox((LPCTSTR)lpMsgBuf);
    LocalFree( lpMsgBuf );
             //m_Listbox为空,ASSERT通不过
             ASSERT(m_Listbox);
    m_Listbox.InsertString(0,_T("asdf"));
    谢谢Semigod(),你是第一个回答我的问题的人,你再看看为什么CListbox的create通不过