我想自己建一个函数void ShuaXin(),实现视图的更新!我的CMyView继承CListView();视图在初始化时调用的下面的函数,能正常运行!
void CMyView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CListCtrl &m_ListCtrl = GetListCtrl();
&list= &m_ListCtrl;
CCourseSet cSet;
cSet.Open();
CODBCFieldInfo field;
for(UINT i=0;i<cSet.m_nFields;i++)
{
cSet.GetODBCFieldInfo(i,field);
m_ListCtrl.InsertColumn(i,field.m_strName,LVCFMT_LEFT,100);
} int nItem=0;
CString str;
while(!cSet.IsEOF())
{
for(UINT i=0;i<cSet.m_nFields;i++)
{
cSet.GetFieldValue(i,str);
if(i==0)
m_ListCtrl.InsertItem(nItem,str);
else
m_ListCtrl.SetItemText(nItem,i,str);
}
nItem++;
cSet.MoveNext();
}
cSet.Close();
但我刷新时,模仿的上面的代码能编译通过,但更细时会出错,void ShuaXin()的代码如下:
void CMyView::ShuaXin()
{
CListView::OnInitialUpdate();
CListCtrl &m_ListCtrl = GetListCtrl();
m_ListCtrl.DeleteAllItems();
CCourseSet cSet;
cSet.Open();
int nItem=0;
CString str;
while(!cSet.IsEOF())
{
for(UINT i=0;i<cSet.m_nFields;i++)
{
cSet.GetFieldValue(i,str);
if(i==0)
m_ListCtrl.InsertItem(nItem,str);
else
m_ListCtrl.SetItemText(nItem,i,str);
}
nItem++;
cSet.MoveNext();
}
cSet.Close();
}
断点运行时卡到m_ListCtrl.DeleteAllItems()时出错,觉得是CListCtrl &m_ListCtrl = GetListCtrl()有错误,但不知道怎么修改!
void CMyView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CListCtrl &m_ListCtrl = GetListCtrl();
&list= &m_ListCtrl;
CCourseSet cSet;
cSet.Open();
CODBCFieldInfo field;
for(UINT i=0;i<cSet.m_nFields;i++)
{
cSet.GetODBCFieldInfo(i,field);
m_ListCtrl.InsertColumn(i,field.m_strName,LVCFMT_LEFT,100);
} int nItem=0;
CString str;
while(!cSet.IsEOF())
{
for(UINT i=0;i<cSet.m_nFields;i++)
{
cSet.GetFieldValue(i,str);
if(i==0)
m_ListCtrl.InsertItem(nItem,str);
else
m_ListCtrl.SetItemText(nItem,i,str);
}
nItem++;
cSet.MoveNext();
}
cSet.Close();
但我刷新时,模仿的上面的代码能编译通过,但更细时会出错,void ShuaXin()的代码如下:
void CMyView::ShuaXin()
{
CListView::OnInitialUpdate();
CListCtrl &m_ListCtrl = GetListCtrl();
m_ListCtrl.DeleteAllItems();
CCourseSet cSet;
cSet.Open();
int nItem=0;
CString str;
while(!cSet.IsEOF())
{
for(UINT i=0;i<cSet.m_nFields;i++)
{
cSet.GetFieldValue(i,str);
if(i==0)
m_ListCtrl.InsertItem(nItem,str);
else
m_ListCtrl.SetItemText(nItem,i,str);
}
nItem++;
cSet.MoveNext();
}
cSet.Close();
}
断点运行时卡到m_ListCtrl.DeleteAllItems()时出错,觉得是CListCtrl &m_ListCtrl = GetListCtrl()有错误,但不知道怎么修改!
For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts.
CListCtrl &m_ListCtrl = GetListCtrl(); //看看这个是否取到值、?
m_ListCtrl.DeleteAllItems();
CListCtrl &m_ListCtrl = GetListCtrl();
之后m_ListCtrl 是否有效?