0xC000041D: 用户回调期间遇到未经处理的异常 在分割视图后连接数据库读取数据发生 错误

mho 2017-05-26 05:45:54
新人发帖求助,才开始出MFC各种问题都不太清楚,现在遇到这样一个问题向大家请教:
void CAccessViewTree::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;

*pResult = 0;
//获得被选择项
CTreeCtrl* pCtrl = &GetTreeCtrl();
HTREEITEM hSelItem = pCtrl->GetSelectedItem();
m_hHitItem = hSelItem;

//如果没有项被选择,则将右边的列表视图清空
CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
if (hSelItem == NULL)
{

pFrame->m_pUsersView->ShowUsers("");
return;
}

//判断选择项在树中的位置
HTREEITEM hParentItem = pCtrl->GetParentItem(hSelItem);
CString strSql, strStudentName, strBuildingNum, strRoomNum, strBedNum;
if (hParentItem == NULL)
{ //UWB ID
CString strStudentName = pCtrl->GetItemText(hSelItem);
strSql.Format("select * from UWB where UWBNum = '%s'", strStudentName);

pFrame->m_pUsersView->ShowUsers(strSql); ///位置
return;
}

我做了一个分割视图下连接数据库的程序,在Tree上选择后可以调用CLISTVIEW类的ShouUsers()读取信息,但是总是在红色标记出发生错误,请问这个是怎么回事?
...全文
1000 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mho 2017-05-28
  • 打赏
  • 举报
回复
感谢大家的回复,我的问题我再仔细描述一下,我现在想要实现一个单视图和一个分割视图的程序,单视图用来opengl显示,分割视图优treeview和listview可以从数据库里读数据显示出来,为了分割视图我新建了一个CSplitterFrame 继承自CFrameWnd,用 CSplitterFrame::OnCreateClient分割了视图,在CFrameWnd::OnCreateClient下new了新的CSplitterFrame 来显示,但是调试时发现tree可以读数据库数据,而用tree选择list下信息时调用 void CAccessViewTree::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; *pResult = 0; //获得被选择项 CTreeCtrl* pCtrl = &GetTreeCtrl(); HTREEITEM hSelItem = pCtrl->GetSelectedItem(); m_hHitItem = hSelItem; //如果没有项被选择,则将右边的列表视图清空 CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; if (hSelItem == NULL) { if (!pFrame) return; //pFrame->SwitchToView(USERSVIEW); pFrame->m_pUsersView->ShowUsers(""); return; } //判断选择项在树中的位置 HTREEITEM hParentItem = pCtrl->GetParentItem(hSelItem); CString strSql, strStudentName, strBuildingNum, strRoomNum, strBedNum; if (hParentItem == NULL) { //UWB ID CString strStudentName = pCtrl->GetItemText(hSelItem); strSql.Format("select * from UWB where UWBNum = '%s'", strStudentName); //pFrame->SwitchToView(USERSVIEW); pFrame->m_pUsersView->ShowUsers(strSql); ///位置 return; } 发生中断,我是新手第一次利用MFC该程序,所以不太清楚问题出现在哪里,请各位指教!再一次感谢大家回复。
mho 2017-05-28
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
你的pFrame->m_pUsersView-中 要保证pFrame,和m_pUsersView都是合法的指针,用if判断一下
版主好,我想问问就是自己重新写了一个分割视图的框架类class CSplitterFrame :public CFrameWnd,然后在 CMainFrame的OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)下new 了一个m_pSFrame = new CSplitterFrame;作为分割框架的实现,那我CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;这句是不是正确的?
mho 2017-05-28
  • 打赏
  • 举报
回复
引用 3 楼 woshi_hujunjun 的回复:
打个断点,查看一下pFrame 和 m_pUsersView的值不就清楚了
我为了分割窗口,建了一个class CSplitterFrame :public CFrameWnd,然后在BOOL CSplitterFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)分割了窗口,再在主框架BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)下new了一个这个类 m_pSFrame = new CSplitterFrame; m_pSFrame->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW&~WS_BORDER, CFrameWnd::rectDefault, this, NULL, 0, pContext); m_pSFrame->ShowWindow(SW_HIDE); pContext->m_pNewViewClass = (CRuntimeClass*)m_pSFrame; 希望达到一个分割视图和单视图并列在菜单栏的一个实现,但是发现从数据库里只有treeview连上了数据库,listview调用showusers时就发生在这里的中断,请问你明白这是哪里的错误吗?我查了4天了还是没结果。。有点蒙蔽。。
赵4老师 2017-05-27
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
woshi_hujunjun 2017-05-27
  • 打赏
  • 举报
回复
打个断点,查看一下pFrame 和 m_pUsersView的值不就清楚了
oyljerry 2017-05-26
  • 打赏
  • 举报
回复
你的pFrame->m_pUsersView-中 要保证pFrame,和m_pUsersView都是合法的指针,用if判断一下
三岁、就很帅 2017-05-26
  • 打赏
  • 举报
回复
CMainFrame* pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; if (hSelItem == NULL) { if(!pFrame) return; pFrame->m_pUsersView->ShowUsers(""); return; }

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧