あなたの質問を正しく理解できれば、編集ボックスをfloat
ダイアログ ボックスのメンバー変数にバインドする必要があります。これは、ダイアログ データ交換と呼ばれます。この回答では、コードでこれを達成する方法を説明しようとします (クラス ウィザードを教えるよりも役立つはずです)。
基本的に、float
ダイアログ ボックスで 2 つのメンバー変数を、それらのアクセサーと共に定義します。
class CYourDialog : CDialog
{
// ...
public:
float GetNumber1() const {
return m_number1;
}
void SetNumber1(float val) {
m_number1 = val;
}
float GetNumber2() const {
return m_number2;
}
void SetNumber2(float val) {
m_number2 = val;
}
private:
float m_number1;
float m_number2;
};
次に、ダイアログ ボックスのDoDataExchange()メソッドをオーバーライドし、そこからDDX_Text()を呼び出して、メンバー変数をコントロールにバインドします。
void CYourDialog::DoDataExchange(CDataExchange *dx)
{
CDialog::DoDataExchange(dx);
DDX_Text(dx, IDC_NUMBER1_CONTROL_ID, m_number1);
DDX_Text(dx, IDC_NUMBER2_CONTROL_ID, m_number2);
}
そこから、MFC フレームワークは、ダイアログの初期化時に編集ボックスにメンバー変数の値を自動的に入力し、OK
ボタンがクリックされると編集ボックスの値でメンバー変数を更新します。編集ボックスを直接操作する代わりに、これらのメンバー変数を読み書きするだけでよいため、これは良いことです。