0

我需要在不同的程序中访问复选框值。复选框在 ToolDlg.cpp 中启动

DDX_Control(pDX, IDC_CalculateTBA, m_CalculateTBA);

在这样启动的 oninitdialog 中:

    m_CalculateTBA.SetCheck(0);
    CalculateAnalyticTBA = false;


void CToolDlg::OnBnClickedCheck3()
{   
    CalculateAnalyticTBA = m_CalculateTBA.GetCheck();   
}

我需要 SetCal.cpp 程序中的复选框值。这是我在这个程序中尝试的代码:

 CToolDlg dialog;
 if( dialog.CalculateAnalyticTBA )
{

  Do some thing

}

但是即使我没有选中该复选框, dialog.CalculateAnalyticTBA 也始终为真。如果您需要任何其他信息,请告诉我。感谢您的帮助。

4

2 回答 2

1

看起来您正在创建一个对话框,但从未显示它。你在类CalculateAnalyticTBA的构造函数中给它的任何值也是CToolDlg如此(或者,如果你没有,编译器给它的任何值)。

为了设置此值,您至少必须创建对话框,以便数据交换代码(调用DDX_Control并处理复选框和变量的绑定)有机会运行。

于 2013-01-16T21:46:14.167 回答
0

正确的方法是创建并显示 CToolDlg 对话框并等待用户选择他的选择,然后仅在用户最终单击“确定”按钮时处理选择。

CToolDlg dialog;
// create and display the dialog
if (dialog.DoModal()==IDOK)
{  // user clicked the ok button, now do the work
   ....
}
于 2013-01-18T22:23:32.477 回答