我定义了一个分割窗口,左边是自己的view,右边是FormView,FormView中使用了Tab,
Tab每一页上各有控件. 界面运行后没有问题。
不过一旦要打开文件问题就来了。
只要FormView出於激活状态,每次按下工具栏的打开按钮或菜单中的打开选项,FormView就会重新调用OnInitialUpdate()一次 ,由於Tab上的一些控件是动态创建的,所以运行自此就出错关闭了。
不过如果定义App中OpenDocumentFile return NULL;
并在mainframe中定义 OnFileOpen() ,就可以避免这种情况,不过要自己定义打开的对话框和自己对文件操作。於是问题便来了,
 1. Serialize和SplitterWnd中的FormView,难道是熊掌与鱼不可兼得吗?
 2. 我想让两个View进行通话,且不通过Doc和mainFrame能行吗不知道说了一堆,大家能看明白吗? 
(分数不是问题,UP也有分)

解决方案 »

  1.   

    1.可以这样:
    比如你动态创建一个button,是m_button
    在OnInitialUpdate()中
    CFormView::OnInitialUpdate();
    if(m_button.GetSafeHwnd())//已创建好了就直接返回
      return;或者放在OnCreate中创建应该也是可以的吧。2.通过Doc和mainFrame没什么不好吧?
    否则只好使用全局变量了。
      

  2.   

    同意楼上的,DOC是最好进行通话的地方。
    如果没有一个坚强的理由,还是用DOC的好。
      

  3.   

    应该是你自己设计的问题,一般调用OnFileOpen()的话只会触发OnUpdate()调用,最好再仔细查看自己是否在调用了OnFileOpen()后重新创建了FormView。