テキストボックスの変数名の付け方


りんりん  2005-07-10 17:57:51  No: 58234

はじめまして。Visual C++ Ver.6を使っています。

ダイアログ上に3つテキストボックスをおいたのですが
変数は配列のように宣言できればいいな、と思っって試行錯誤して
いるのですが、ClassWizardでのやりかたがよくわかりません。。。。

[IDC_BOX1][IDC_BOX2][IDC_BOX3]とあって、今までは
[m_box1][m_box2][m_box3]という具合に変数を付けていたのですが、
できれば m_box[3] みたいにしたいなぁと。。。。

結果的にhogehoge.hでダイアログ変数の宣言部分で 
CString m_box[3]  と記述させたいのですが、どういう手順で
ClassWizardで変数を作成すればいいのでしょうか?

お手数ですがよろしくお願いします。


りんりん  2005-07-10 19:04:26  No: 58235

補足です。。。
アプリケーションの枠組みはMFC AppWizardで作成しています。


iijima  2005-07-10 20:35:30  No: 58236

ClassWizardは、配列でのコントロール変数の定義をサポートしません。
自分で書いてください。

// exam.
// ヘッダファイル
CxxxDlg : public CDialog {
public:
    CString m_box[3];
    ...
};

// 定義ファイル
void CxxxDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);

    // 以下を追加
    DDX_Text( pDX, IDC_BOX1, m_box[0] );
    DDX_Text( pDX, IDC_BOX2, m_box[1] );
    DDX_Text( pDX, IDC_BOX3, m_box[2] );
}

なお、コントロールのID値(IDC_BOX1〜IDC_BOX3)が連続した値であることが
保証されているなら、次のようにループ処理することも可能です。

    for( int i = 0; i < 3; ++i ){
        DDX_Text( pDX, IDC_BOX1 + i, m_box[i] );
    }

また、初期化が必要なら、コンストラクタで初期値を設定してください。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加