如何响应视图里面的成员类的消息(我在线上等待回答) 我认为原因在于,你的View被创建后,系统向View发了WM_CTLCOLOR消息,但此时,你的ListBox还没有完成创建工作,而你又多在你的这个函数中使用ListBox的对象,所以出现程序运行时出错。所以,我认为你应该想办法保证在你的View完成Create前把你的ListBox创建了。你可以试试在View的PreCreateWindow()中完成ListBox的创建工作。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你说的有道理,我原来是在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通不过 ListControl背景怎么设置为透明? 每隔5秒,怎么判断以下两个整数是否相等。 windows API的MapFileOfView的使用 settimer 和 线程有区别吗! 双星可散分,有双裤衩散分的么? 怎么调用存储过程 用 POST 提交表单时 中文字符被转换为 %CE%DE%CA%C2% 的形式 它的转换规则是什么??? COM的使用方法问题 关于CRichEditView关闭时如何去掉其保存对话框 为什么一个页面不能有两个CMSComm控件? vc中的控件数组问题? 如何判断LPTSTR类型的字符的前两个字符是否是"\\\\"?
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通不过