下面的代码调试时,会出现Data Abort的错误?麻烦各位大侠看下。
CMainFrame *pMainWnd = (CMainFrame *)AfxGetApp()->m_pMainWnd;
//g_pHandle为全局变量
CWnd *pWnd = pMainWnd->FormHandlePemenent(g_pHandle);
CString rString = L"";
CRuntimeClass *prt = NULL;
prt = pWnd->GetRuntimeClass();
rString = CString (prt->m_lpszClassName());
CString sClassName[3] = {
L"CDataBaseWindow", L"CLogWindow", L"COperationWindow"
};
int i;
int iWindowTypeIndex = 0;
for(i = 0; i < 3; i++)
{
if( 0 == rString.Compare(sClassName[i]) )
{
iWindowTypeIndex = i;
break;
}
}
switch(iWindowTypeIndex)
{
case 0:
((CDataBaseWindow *)pWnd)->OnDo();
break;
case 1:
((CLogWindow*)pWnd)->OnDo();
break;
case 2:
((COperationWindow*)pWnd)->OnDo();
break;
}
后面,根据调试信息Data Abort给出的地址信息,查找,发现这段代码if( 0 == rString.Compare(sClassName[i]) ) 有问题,还有switch处理部分的类型强制转换也有问题。为什么?请各位大侠指点。
[解决办法]
单步调试呢,看不到错误吗?
[解决办法]
先把有成为的代码屏蔽掉