调用CView* pView=(CView*)m_wndSplitter.GetPane(0,1)出错误

afairycell 2011-09-13 02:25:29
一直都是没事的,今天突然在切换窗口时弹出这个错误。
0x78fdef48 (mfc100d.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0xcdce52bd 时发生访问冲突
其他的切换就没问题,就是这里突然调用不了,求指教。。
...全文
523 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2011-10-08
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
afairycell 2011-09-13
  • 打赏
  • 举报
回复
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext *pContext)
{
if (!m_wndSplitter.CreateStatic(this,1,2))
{
return FALSE;
}
CRect rect;
GetClientRect(rect);

if (!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CTreeList),CSize(180,100),pContext)
||!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CDefault),CSize(100,100),pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
CView* pView=(CView*)m_wndSplitter.GetPane(0,0);
((CTreeList *)pView)->takeM(this);
return TRUE;
}

恶汗,贴错了。。
dushun1000 2011-09-13
  • 打赏
  • 举报
回复
单个语句应该是没问题的,可能响应上不对吧

窗口划分是写在OnCreateClient中的,贴OnCreate有什么用啊
afairycell 2011-09-13
  • 打赏
  • 举报
回复
不会错的吧,一直这么用,就是改着改着突然出现这个错误,神奇了,我跳过那步直接收数据解决了问题,但是还是很想知道原因,有人和我出现过同样错误吗?
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("未能创建状态栏\n");
return -1; // 未能创建
}
// TODO: 如果不需要工具栏可停靠,则删除这三行
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
// EnableDocking(CBRS_ALIGN_ANY);
// DockControlBar(&m_wndToolBar);
// 获取窗口的菜单句柄
//SetMenu(NULL);
return 0;
}
zjjhglem 2011-09-13
  • 打赏
  • 举报
回复
是这条语句错了,还是在那个整个函数中错了?

LZ贴下createclient()的代码吧
oyljerry 2011-09-13
  • 打赏
  • 举报
回复
这个时候调用的时候先看m_wndSplitter是否正确.才能调用后面的GetPane

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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