我是 MFC 的新手,想创建一个 SDI 应用程序,它的选项卡窗格始终嵌入在窗口的右侧,并在左侧有一个视图。在我的应用程序中,我有一个计算核心,其中的变量在带有编辑框的选项卡中更改。我想在计算类中初始化这些变量,然后在用于选项卡的对话框的初始化期间,将编辑框中的初始值设置为计算器中相应变量的初始值。
目前,我在文档类中创建了一个计算器实例。我还在 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);
我希望能够在 CParameterDlg 的 OnInitDialog 中执行以下操作:
BOOL CParameterDlg::OnInitDialog() {
CDialog::OnInitDialog()
float value = pointerToDocument->GetCalculatorVariable();
并使用 value 来初始化一个编辑框。但是我无法从主框架 OnCreate 中访问该文档,因为它返回 null(使用 GetActiveDocument、AfxGetApp 等)。
那我该如何初始化标签呢?我曾考虑尝试将计算器放在 App 类中。或者可能尝试在其他地方初始化对话框,稍后在文档正确初始化和链接时调用?或者我应该以完全不同的方式做事?