在另一个类访问CListView派生类
CMainFrame *pFrame=(CMainFrame*)(AfxGetApp()->m_pMainWnd);
CSignallingPassageView* pView=(CSignallingPassageView*)(pFrame->GetActiveView());
pView->UpDateATrunkChListCtrl(m_ATrkCh,m_nTotMaxCh);CSignallingPassageView类的UpDateATrunkChListCtrl函数如下:
void CSignallingPassageView::UpDateATrunkChListCtrl(TRUNK_STRUCT *pATrkCh,int nTotMaxCh)
{
CListCtrl& m_cListCtrl=this->GetListCtrl();
CString state;
char tmpstr[30];
int nIndex;
nIndex=0; for (int i=0;i<nTotMaxCh;i++)
{
if (pATrkCh[i].EnCalled)
{
switch (pATrkCh[i].Step)
{
case TRK_IDLE: state="Channel idle"; break;
case TRK_CALLIN: state="Incoming calls"; break;
case TRK_CALLOUTWAIT: state="Outgoing calls waiting"; break;
case TRK_CALLOUT: state="Outbound Telephone"; break;
default: state = "Undefined"; break;
}
AfxMessageBox(state);
m_cListCtrl.GetItemText( nIndex,1,tmpstr,29);
AfxMessageBox(tmpstr);
/*if (state!=tmpstr)
m_cListCtrl.SetItemText( nIndex,0,state.GetBuffer(30));
m_cListCtrl.GetItemText(nIndex,1,tmpstr,29);*/
nIndex = nIndex + 1;
}
}
}
到这里就指针错误了m_cListCtrl.GetItemText( nIndex,1,tmpstr,29);---------------------------
TelCallPlatform.exe - 应用程序错误
---------------------------
"0x5f410ade" 指令引用的 "0x00000020" 内存。该内存不能为 "read"。
要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定 取消
---------------------------各位给看看,这个问题搞得我头都大了,对MFC不是很熟,也努力在学习,大虾们看看咯。。
CMainFrame *pFrame=(CMainFrame*)(AfxGetApp()->m_pMainWnd);
CSignallingPassageView* pView=(CSignallingPassageView*)(pFrame->GetActiveView());
pView->UpDateATrunkChListCtrl(m_ATrkCh,m_nTotMaxCh);CSignallingPassageView类的UpDateATrunkChListCtrl函数如下:
void CSignallingPassageView::UpDateATrunkChListCtrl(TRUNK_STRUCT *pATrkCh,int nTotMaxCh)
{
CListCtrl& m_cListCtrl=this->GetListCtrl();
CString state;
char tmpstr[30];
int nIndex;
nIndex=0; for (int i=0;i<nTotMaxCh;i++)
{
if (pATrkCh[i].EnCalled)
{
switch (pATrkCh[i].Step)
{
case TRK_IDLE: state="Channel idle"; break;
case TRK_CALLIN: state="Incoming calls"; break;
case TRK_CALLOUTWAIT: state="Outgoing calls waiting"; break;
case TRK_CALLOUT: state="Outbound Telephone"; break;
default: state = "Undefined"; break;
}
AfxMessageBox(state);
m_cListCtrl.GetItemText( nIndex,1,tmpstr,29);
AfxMessageBox(tmpstr);
/*if (state!=tmpstr)
m_cListCtrl.SetItemText( nIndex,0,state.GetBuffer(30));
m_cListCtrl.GetItemText(nIndex,1,tmpstr,29);*/
nIndex = nIndex + 1;
}
}
}
到这里就指针错误了m_cListCtrl.GetItemText( nIndex,1,tmpstr,29);---------------------------
TelCallPlatform.exe - 应用程序错误
---------------------------
"0x5f410ade" 指令引用的 "0x00000020" 内存。该内存不能为 "read"。
要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定 取消
---------------------------各位给看看,这个问题搞得我头都大了,对MFC不是很熟,也努力在学习,大虾们看看咯。。
这个对象m_cListCtrl是否有效呢?你Debug下看一下就会很清楚了
你把29改成30看看
同时,建议你用sizeof(tmpstr)
要怎么访问才能是有效
可以在CListCtrl& m_cListCtrl=this->GetListCtrl();上面放个断点
然后在cpp文件DoDataExchange里面添加DDX_Control(pDX, IDC_LIST?, m_cListCtrl);