求解 MFC 中断
efbbc 2009-11-13 02:33:07 void OutputString( TCHAR *lpFmt, ... )
{
TCHAR buff[1024];
va_list arglist;
va_start( arglist, lpFmt );
_vsntprintf_s( buff, sizeof buff, lpFmt, arglist );
va_end( arglist );
AfxGetMainWnd()->GetDlgItem(IDC_STATUS)->SetWindowText(buff);
CListCtrl *pListCtrl = (CListCtrl *)AfxGetMainWnd()->GetDlgItem(IDC_LIST);
int nItem = pListCtrl->GetSelectionMark();
if (nItem != -1)
{
pListCtrl->SetItemText(nItem, 4, buff);
return;
}
OutputDebugString(buff);
}
运行到这里就中断了。
AfxGetMainWnd()->GetDlgItem(IDC_STATUS)->SetWindowText(buff);
CListCtrl *pListCtrl = (CListCtrl *)AfxGetMainWnd()->GetDlgItem(IDC_LIST);
中断代码
中的 0x78aaadcc (mfc90ud.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突
中断代码行
C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\src\mfc\winocc.cpp
CWnd* CWnd::GetDlgItem(int nID) const
{
ASSERT(::IsWindow(m_hWnd));//中断到这行
if (m_pCtrlCont == NULL)
return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID));
else
return m_pCtrlCont->GetDlgItem(nID);
}
调用 行
OutputString(_T("RasSetEntryProperties %s failed error=%d\n"), pszEntryName, dwResult);