saiyaman5 2012年03月06日
CListCtrl "Stack overflow"异常
不知道有没有人遇到过
CListCtrl无派生,与控件绑定,插入一些数据之后,用鼠标双击列表头中两列之间的空隙,列会自动调整列的宽度以适应数据的长度,这时会弹出 "0x5d17a6b3 处未处理的异常: 0xC00000FD: Stack overflow"的错误
光标会定位到 TYPE* pData = (TYPE*)CThreadLocalObject::GetData(&CreateObject); 这里,但只要点击继续,程序还可以运行下去。之后再双击列时就不会再有这样的错误了。

插入数据的多少都一样,去掉一些主要的风格还是一样,但一个程序中用了多个CListCtrl,只有少量不会有错误。
错误定位到下面这个类里。位于afxtls_.h文件

template<class TYPE>
class CThreadLocal : public CThreadLocalObject
{
// Attributes
public:
AFX_INLINE TYPE* GetData()
{
TYPE* pData = (TYPE*)CThreadLocalObject::GetData(&CreateObject);
ENSURE(pData != NULL);
return pData;
}
AFX_INLINE TYPE* GetDataNA()
{
TYPE* pData = (TYPE*)CThreadLocalObject::GetDataNA();
return pData;
}
AFX_INLINE operator TYPE*()
{
return GetData();
}
AFX_INLINE TYPE* operator->()
{
return GetData();
}

// Implementation
public:
static CNoTrackObject* AFXAPI CreateObject()
{ return new TYPE; }
};
...全文
60 点赞 收藏 4
写回复
4 条回复

还没有回复,快来抢沙发~

发动态
发帖子
界面
创建于2007-09-28

7972

社区成员

11.5w+

社区内容

VC/MFC 界面
社区公告
暂无公告