OnInitialUpdate()为何被调用两次????高分求解!!!!

lambition 2013-05-13 03:59:41
如题,开发环境为VS2008
MFC MDI程序,我通过向导添加了一个CTestView类继承自CFromView,然后在ChildFrm中重写了OnCreateClient函数,如下

BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
m_wndSplitter.CreateStatic(this, 1, 2);

m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CTestVeiw), CSize(1100,1100), NULL);
m_wndSplitter.CreateView(0, 1, pContext->m_pNewViewClass, CSize(0, 0), pContext);


return TRUE/*CMDIChildWndEx::OnCreateClient(lpcs, pContext)*/;
}



添加这个类后会生成一个对话框资源,我在对话框内添加了一个TreeCtrl控件。关联变量为m_tree

然后我在CTestView类重写了OnInitialUpdate()函数本打算对m_tree进行一些处理,但为什么这个函数会调用两次呢?函数原型如下:

void CTestVeiw::OnInitialUpdate()
{
CFormView::OnInitialUpdate();

MessageBox("123"); //这会弹出两次
// TODO: 在此添加专用代码和/或调用基类
}



求解决办法 急~~~在线等
...全文
323 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
youdianhuaiczw 2013-08-23
  • 打赏
  • 举报
回复
OnInitialUpdate的第一次回调发生在CSplitterWnd::CreateView方法中(winsplit.cpp),第二次回调发生在CMainFrame::LoadFrame方法中(winfrm.cpp),而两次回调都是由于这两个方法所给的参数CCreateContext *pContex为NULL引起的。 修改CXXXApp::InitInstance: CCreateContext cc; pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, &cc); 就不会产生第二次OnInitialUpdate回调了。
huamurumeng 2013-06-19
  • 打赏
  • 举报
回复
引用 8 楼 xianglitian 的回复:
[quote=引用 7 楼 schlafenhamster 的回复:] 在 MDI 的 CChildFrame 中 分割窗口,我试过 没问题的。 其实你 只要个 CTreeView 就可以了,如果还有别的控件可以用 FormView // 一个view 中 也不会产生 2次 OnInitialUpdate() 你的 pContext->m_pNewViewClass 是不是 和 formview 是一个? 请直接指定 view。
同意 应该是两个分出来的窗口连了同一个view[/quote] 请问,这个问题怎么解决呢?
向立天 2013-05-21
  • 打赏
  • 举报
回复
引用 7 楼 schlafenhamster 的回复:
在 MDI 的 CChildFrame 中 分割窗口,我试过 没问题的。 其实你 只要个 CTreeView 就可以了,如果还有别的控件可以用 FormView // 一个view 中 也不会产生 2次 OnInitialUpdate() 你的 pContext->m_pNewViewClass 是不是 和 formview 是一个? 请直接指定 view。
同意 应该是两个分出来的窗口连了同一个view
schlafenhamster 2013-05-21
  • 打赏
  • 举报
回复
在 MDI 的 CChildFrame 中 分割窗口,我试过 没问题的。 其实你 只要个 CTreeView 就可以了,如果还有别的控件可以用 FormView // 一个view 中 也不会产生 2次 OnInitialUpdate() 你的 pContext->m_pNewViewClass 是不是 和 formview 是一个? 请直接指定 view。
rxguoblp 2013-05-21
  • 打赏
  • 举报
回复
你的窗口分割成功了吗?
lambition 2013-05-20
  • 打赏
  • 举报
回复
来人啊 ,这都多少天了
lambition 2013-05-13
  • 打赏
  • 举报
回复
人工置顶~~~~
lambition 2013-05-13
  • 打赏
  • 举报
回复
在线等·~~~~~~~~~~~~~
lambition 2013-05-13
  • 打赏
  • 举报
回复
m_wndSplitter为ChildFrm类内定义的 CSplitterWnd wndSplitter;

15,979

社区成员

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

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