• ベストアンサー

ダイアログの上のテキストボックスの、初期値を設定する方法が分かりません・・・・

VSC++2005です、 ダイアログの上のテキストボックスの初期値を設定する 方法が分かりません、 ダイアログが表示されたとき、 ダイアログに貼り付けてあるテキストボックスの初期値を 入力しておきたいのですが、うまくゆきません 下のようにしました、 ボタンをクリックして、ダイアログを表示させ ダイアログ上の エディットコントロールに、値を表示させるつもりですが、 void CXXXView::OnBnClickedButton2() { // TODO: ここにコントロール通知ハンドラ コードを追加します。 Cfailsettei cf;  //ダイアログのクラスのインスタンス作成 cf.edit1.SetWindowTextA("yyy");   cf.edit2.SetWindowTextA("xxx"); //edit1、edit2は、エディットコントロールです cf.DoModal(); } エラーが起こってしまいます、 何故でしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

cf.edit1 や cf.edit2 などはダイアログのインスタンスを宣言しただけではテキストボックスなどのコントロールは作られていません Cfailsettei クラスに CString型のメンバー変数を用意します アクセス指定子は Publicにして そして cd.m_strEdit1 = _T("yyy"); cd.m_strEdit2 = _T("xxx"); としてから DoModalで起動します ダイアログクラスの WM_INITDIALOGの処理ルーチン OnInitDialogの // TODO: の 下の行辺りで CEdit* pEdit = (CEdit*)GetdlgItem( IDC_EDIT1 ); pEdit->SetWidnowText( m_strEdit1 ); pEdit = (CEdit*)GetdlgItem( IDC_EDIT2 ); pEdit->SetWidnowText( m_strEdit2 ); などと記述してみましょう または Cfailsetteiに IDC_EDIT1およびIDC_EDIT2に関連付けした String型のメンバー変数用意するかでしょう ダイアログエディタでコントロールを選択して 右クリック 変数の追加 カテゴリを 『Value』に変更 変数名に m_strEdit1 などを設定 コメントなど必要なら記入して 『完了』 といった手順で メンバー変数が追加できます

wxy
質問者

お礼

MFCですが、非常にむつかしいですね、 おっしゃるとおりに実行しましたら 問題が解決しました、ありがとうございます!

その他の回答 (1)

  • penta1331
  • ベストアンサー率64% (16/25)
回答No.1

環境が記載されていませんが、MFCでしょうか。 エラーが発生するのは、ダイアログのウィンドウが生成されていないからです。 SetWindowText()を呼び出す前に、cf.Create(ダイアログリソースID)を呼んで、ウィンドウを作成してください。 通常MFCのダイアログであれば、CDialog::OnInitDialog()をオーバーライドして、C***Dialog::OnInitDialog()の中でSetWindowText()を使えば設定することができます。 (C***Dialogはあなたのダイアログクラスの名前) CFormViewで初期値を設定したいのであれば、オーバーライドしたOnInitialUpdate()の中でSetWindowText()を呼び出してください。

wxy
質問者

お礼

ありがとうございました

関連するQ&A