C++ MFC:如何使用SDI中文档的信息初始化CTabbedPane选项卡(对话框)?

C++ MFC:如何使用SDI中文档的信息初始化CTabbedPane选项卡(对话框)?,c++,mfc,sdi,C++,Mfc,Sdi,我是MFC的新手,希望创建一个SDI应用程序,该应用程序的选项卡窗格始终嵌入在窗口的右侧,并在其左侧显示视图。在我的应用程序中,我有一个计算核心,其中的变量在带有编辑框的选项卡中更改。我想在calculation类中初始化这些变量,然后在初始化用于选项卡的对话框时,将编辑框中的初始值设置为计算器中相应变量的初始值 目前,我在文档类中创建了计算器的一个实例。 我还在MainFrame OnCreate方法中创建一个CTabbedPane,如下所示: m_TabbedPane.Create(_T("

我是MFC的新手,希望创建一个SDI应用程序,该应用程序的选项卡窗格始终嵌入在窗口的右侧,并在其左侧显示视图。在我的应用程序中,我有一个计算核心,其中的变量在带有编辑框的选项卡中更改。我想在calculation类中初始化这些变量,然后在初始化用于选项卡的对话框时,将编辑框中的初始值设置为计算器中相应变量的初始值

目前,我在文档类中创建了计算器的一个实例。 我还在MainFrame OnCreate方法中创建一个CTabbedPane,如下所示:

m_TabbedPane.Create(_T(""), this, CRect(0, 0, 290, 200),
    TRUE,
    (UINT)-1,
    WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
    WS_CLIPCHILDREN | CBRS_RIGHT |
    CBRS_FLOAT_MULTI))

m_tab = new CParametersDlg();
m_tab->Create(IDD_TAB, this);
m_TabbedPane.AddTab(m_tab);
我希望能够在CPParameterDLG的OnInitDialog中执行以下操作:

BOOL CParameterDlg::OnInitDialog() {
CDialog::OnInitDialog()
float value = pointerToDocument->GetCalculatorVariable();
并使用值初始化编辑框。但是,我无法从主框架OnCreate中访问该文档,因为它返回null(使用GetActiveDocument、AfxGetApp等)


那么我如何初始化选项卡?我曾考虑尝试将计算器放在App类中。或者可能尝试在其他地方初始化对话框,在文档正确初始化和链接后调用该对话框?或者我应该完全不同地执行操作吗?

我认为
CMainFrame::OnCreate()
在事件序列中太早了,无法访问document类,通常还不会创建它


最好等到document被创建/初始化之后,文档类就可以调用
CMainFrame()
中的一个新方法,将
这个
作为一个参数传递给创建选项卡。

谢谢您的回答。我在CMainFrame中创建了一个函数,通过将文档指针传递到对话框类来创建选项卡。然后我调用OnNewDocument中的函数,使用
CMainFrame*pFrame=(CMainFrame*)AfxGetMainWnd()获取帧它似乎正在工作,非常感谢。