1

MFC アプリケーションを使用して Visual Studio 2010 で電卓を作成したいと考えています。このために、ダイアログ ボックスを使用して電卓を作成し、ボタンと編集ボックスを追加しました。ご存知のように、編集ボックスは入力として使用されます。だから私は入力をfloat入力にしたい。それが以下の文です。

という文があります。まず、2 つのエディット ボックスを選択し、ダイアログ ボックスに配置します。[表示] メニューの [クラス ウィザード] を使用して、それぞれを float、値 number1 または number2 に接続します。

編集ボックスがあります。それらをフロート、値番号 1 に接続する方法は?手続きは?

ありがとう

4

1 に答える 1

1

あなたの質問を正しく理解できれば、編集ボックスを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ボタンがクリックされると編集ボックスの値でメンバー変数を更新します。編集ボックスを直接操作する代わりに、これらのメンバー変数を読み書きするだけでよいため、これは良いことです。

于 2012-04-18T13:23:20.640 に答える