本人想在多文档中创建一个子文档,子文档是一个对话框形式的(这样里面能够加入一些控件),首先我增加一个对话框并生成了一个类CChild1,然后再主菜单中加入一个按钮(添加消息响应),其消息响应代码如下:
void CMainFrame::On32772()
{
if (m_pFuncTwoFrame != NULL)
{
m_pFuncTwoFrame->MDIActivate(); return ;
}
m_pFuncTwoFrame = new CChildFrame();
CMenu Menu;
CCreateContext context;
context.m_pNewViewClass = RUNTIME_CLASS(CChild1);
//待创建的视图的CRuntimeClass
//SetMenu(NULL);//移除当前菜单
// Menu.LoadMenuA(IDR_A_SUPPLIERS_ADD);
HINSTANCE hInst = AfxGetResourceHandle();
// SetMenu(&Menu);//设置新的菜单
//SetMenu(AfxGetApp()->m_pMainWnd->m_hWnd,m_hOPMenu);
m_pFuncTwoFrame->LoadFrame(IDR_MAINFRAME,WS_CHILD | WS_OVERLAPPEDWINDOW,this,&context);

// m_pFuncTwoFrame->SetWindowText(_T("供应商资料—增加"));
// m_pFuncTwoFrame->ShowWindow(SW_SHOW);
m_pFuncTwoFrame->InitialUpdateFrame(NULL,true);
// TODO: 在此添加命令处理程序代码
}其中CChildFrame* m_pFuncTwoFrame;
并且m_pFuncTwoFrame = NULL;
但是一点击总是运行到m_pFuncTwoFrame->InitialUpdateFrame(NULL,true);报错,具体是CRuntimeClass* pClassThis = GetRuntimeClass();这里
敢问哪位大哥帮忙一下,真的好急!

解决方案 »

  1.   

    不是有一个视图类麽?继承自CView的那个类,你把他改为继承自CFormView类,然后再建立一个FormView的对话框资源,两者匹配一下就行了!你就可以在上面增加控件了!
      

  2.   

    class CChild1 public CFormView
    {
    .....
    }CChild1 窗体的border设为none,style设为child之后写
    context.m_pNewViewClass = RUNTIME_CLASS(CChild1);
    可以的
      

  3.   

    3按照大虾的方法改了,但发现到了
    if(!m_pFuncTwoFrame->LoadFrame(IDR_MAINFRAME,WS_MAXIMIZE | WS_OVERLAPPEDWINDOW,this,&context))
    return;
    这一步的时候就退出了,大虾这是什么原因
      

  4.   

    你把你view类的基类换成CFormView类就可以了,注意一下CFormView关联的对话框的style:child
      

  5.   

    多谢党组织的关怀!我现在可以生成了,但是又出现一个问题,就是生成这个窗口后,点击关闭按钮,然后再点击生成那个窗口的按钮,运行到 if (m_pFuncTwoFrame != NULL)
        {
            m_pFuncTwoFrame->MDIActivate();        return ;
        }
    就报错
    假如该作
    if (m_pFuncTwoFrame != NULL)
    {
    //m_pFuncTwoFrame->MDIActivate();
    m_pFuncTwoFrame=NULL;
    // return ;
    }
    这样我连续点击那个生成窗口的按钮又会出现几个同样的窗口。而我理想的效果是同样的窗口在同一时间内只出现一次,请教各位大侠如何解决?