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 は常に true です。他に情報が必要な場合はお知らせください。助けてくれてありがとう。

4

2 に答える 2

1

ダイアログを作成しているように見えますが、それを表示することはありません。したがってCalculateAnalyticTBA、クラスのコンストラクターで指定した値CToolDlg(または、指定しなかった場合は、コンパイラーが指定した値) があります。

この値を設定するには、少なくともダイアログを作成して、Data Exchange コード (DDX_Controlチェックボックスと変数のバインディングを呼び出して処理する) が実行されるようにする必要があります。

于 2013-01-16T21:46:14.167 に答える
0

正しい方法は、CToolDlg ダイアログを作成して表示し、ユーザーが選択肢を選択するのを待ってから、ユーザーが最終的に [OK] ボタンをクリックしたときにのみ選択を処理することです。

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 に答える