none
一个文档类多个视类的小问题 RRS feed

  • 问题

  • 在研究VC自带的一段代码oleview,vs2010\samples\1033\VC2010samples\C++\MFC\ole\oleview

    看到文档的分割用了下面的方式:

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
      CCreateContext* pContext)
    {
     // create a splitter with 1 row, 2 columns
     if (!m_wndSplitter.CreateStatic(this, 1, 2))
     {
      TRACE(_T("Failed to CreateStaticSplitter\n"));
      return FALSE;
     }

     // add the first splitter pane - the default view in column 0
     if (!m_wndSplitter.CreateView(0, 0,
      pContext->m_pNewViewClass, CSize(240, 0), pContext))//注意这里
     {
      TRACE(_T("Failed to create first pane\n"));
      return FALSE;
     }

     if (!m_wndSplitter.CreateView(0, 1,
      RUNTIME_CLASS(CRegistryView), CSize(0, 0), pContext))
     {
      TRACE(_T("Failed to create second pane\n"));
      return FALSE;
     }

     m_pObjTreeView = (CObjTreeView*)m_wndSplitter.GetPane(0, 0) ;
     m_pObjectView = (CRegistryView*)m_wndSplitter.GetPane(0,1) ;

     // activate the input view
     SetActiveView((CView*)m_wndSplitter.GetPane(0, 0));
     m_wndSplitter.SetColumnInfo( 0, 240, 0 ) ;

     return TRUE;
    }

     

    pContext->m_pNewViewClass没有用到RUNTIME_CLASS宏,我创建的视类中的函数不能执行,但是这个示例又能正常运行,我实在想不明白。


    xiao
    2011年6月4日 9:11

答案

  • pContext->m_pNewViewClass没有用到RUNTIME_CLASS宏是因为用的是文档模板那里的RUNTIME_CLASS宏生成的数据。

    你的视类函数执行出问题的话,检查函数的假定条件。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 wh_xiao 2011年6月4日 22:01
    2011年6月4日 17:03
    版主

全部回复

  • pContext->m_pNewViewClass没有用到RUNTIME_CLASS宏是因为用的是文档模板那里的RUNTIME_CLASS宏生成的数据。

    你的视类函数执行出问题的话,检查函数的假定条件。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 wh_xiao 2011年6月4日 22:01
    2011年6月4日 17:03
    版主
  • 放在了这里

    AddDocTemplate(new CSingleDocTemplate(IDR_MAINFRAME,
       RUNTIME_CLASS(COle2ViewDoc),
       RUNTIME_CLASS(CMainFrame),     // main SDI frame window
       RUNTIME_CLASS(CObjTreeView)));


    xiao
    2011年6月4日 22:01