我建立了一个工程去掉了document/view结构,然后在其代码中发现
CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd);// create a new MDI child window
pFrame->CreateNewChild(
    RUNTIME_CLASS(CChildFrame), IDR_NODOCMTYPE, m_hMDIMenu, m_hMDIAccel);
在childframe的oncreate里
if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, 
CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
{
TRACE0("Failed to create view window\n");
return -1;
}
我自己建立了一个类继承自formview,然后把m_wndView类型改为自己的formview类,但是编译应用程序出现错误!请问如何在一个没有document/view的MDI程序里面使用formview?

解决方案 »

  1.   

    其实你所要的无非就是一个基于CFormView的对话框,直接建后者就OK了
      

  2.   

    我帮他帖,呵呵。
    我是先建立一个不要DOC/VIEW支持的SDI程序,然后把其中的
    CChildView    m_wndView;
    换成:
    CFormView   m_wndView;报错2个:error C2512: “CFormView” : 没有合适的默认构造函数可用
        “CFormView::Create” : 无法访问 protected 成员(在“CFormView”类中声明)呵呵
      

  3.   

    那位大侠试一下??
    错误
    D:\vctemp\nodocmdi\ChildFrm.cpp(92) : error C2248: 'Create' : cannot access protected member declared in class 'CFormView'
            c:\program files\microsoft visual studio\vc98\mfc\include\afxext.h(756) : see declaration of 'Create'
    afxext.h里面CFormView的create定义的是protected
      

  4.   

    恩 I_Love_CPP(我爱C++) 说的是阿,第一个错误可以把生成的formview的构造器和析构改为public,但是“CFormView::Create” : 无法访问 protected 成员(在“CFormView”类中声明)怎么办,我不能改微软的定义把
      

  5.   

    在CSDN上搜索看大家用formview的不少,怎么我一用就出问题那?哪位大侠能指点一下在没有document/view的情况下使用formview
      

  6.   

    我查了MSDN,发现CFormView就是一个特殊的对话框。所以单独用CFormView必须要建立一个对话框资源。
    请看下面:
    CFormView(
       LPCTSTR lpszTemplateName 
    );
    CFormView(
       UINT nIDTemplate 
    );
    Parameters
    lpszTemplateName :
    Contains a null-terminated string that is the name of a dialog-template resource. 
    nIDTemplate :
    Contains the ID number of a dialog-template resource. 所以呢,你建立一个基于CFormView的对话框就是你要做的东西了。
      

  7.   

    对话框资源肯定是建了要不也建不了formview阿,你说的建立一个基于CFormView的对话框就是你要做的东西了是什么意思???