用的是vs2010开发平台,多文档对话框。 想在MainFrm.h的public中定义变量CChildFrame * m_subWindow。也#include "ChildFrm.h"。可是编译是老是出错:
1>f:\datamanager\datamanager\mainfrm.h(24): error C2146: 语法错误: 缺少“;”(在标识符“m_subWindow”的前面)
1>f:\datamanager\datamanager\mainfrm.h(24): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>f:\datamanager\datamanager\mainfrm.h(24): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
    而且, 如果把CChildFrame * m_subWindow 定义在 MainFrm.cpp中 则编译通过!!知道这个是不是vs2010的问题,求大侠提示!Visual Studio 2010ChildFrameMainFrame

解决方案 »

  1.   

    为的是这个:
      m_subWindow =new CChildFrame();
      m_subWindow->LoadFrame(IDD_FORMTESTONE,WS_MAXIMIZE | WS_OVERLAPPEDWINDOW,
      this,&context);
      m_subWindow->ShowWindow(SW_SHOWMAXIMIZED);
      //设置主窗口标题
      m_subWindow->SetWindowTextW(_T("338"));
      m_subWindow->InitialUpdateFrame(NULL,true);
      

  2.   

    CMainFrame中应该是包含CChildFrame的吧,在程序初始化过程中会自动加载。
    你是不是想完成初始化的时候让子文档以及主框架都最大化,然后修改主窗口标题这样的效果?
      

  3.   

    void CChildFrame::ActivateFrame(int nCmdShow) 
    {
    // TODO: Add your specialized code here and/or call the base class
    nCmdShow = SW_MAXIMIZE;

    CMDIChildWnd::ActivateFrame(nCmdShow);
    }void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle)
    {
    CMDIFrameWnd::OnUpdateFrameTitle(bAddToTitle);

    // 设置窗体标题;
    ::SetWindowText(GetSafeHwnd() ,_T("测试标题"));
    }CMainFrame::CMainFrame()
    {
    // TODO: add member initialization code here
    m_bFirstOnSize=1;

    }void CMainFrame::OnSize(UINT nType, int cx, int cy) 
    {
    CMDIFrameWnd::OnSize(nType, cx, cy);

    // TODO: Add your message handler code here
    if(m_bFirstOnSize) ShowWindow(SW_SHOWMAXIMIZED);
    m_bFirstOnSize=FALSE;
    }
      

  4.   

    不是, 可能你没理解意思。不过 我用别的方法解决了 : 把CChildFrame * m_subWindow定义成全局的变量。
      

  5.   

    在CMainFrame::OnCreate中也加入一条设置窗体标题的语句吧
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    // 设置窗体标题;
    ::SetWindowText(GetSafeHwnd() ,_T("测试标题"));
    return 0;
    }