プロが教えるわが家の防犯対策術!

VSC++2005です、

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

ダイアログが表示されたとき、
ダイアログに貼り付けてあるテキストボックスの初期値を
入力しておきたいのですが、うまくゆきません

下のようにしました、

ボタンをクリックして、ダイアログを表示させ ダイアログ上の
エディットコントロールに、値を表示させるつもりですが、

void CXXXView::OnBnClickedButton2()
{
// TODO: ここにコントロール通知ハンドラ コードを追加します。

Cfailsettei cf;  //ダイアログのクラスのインスタンス作成

cf.edit1.SetWindowTextA("yyy");  
cf.edit2.SetWindowTextA("xxx");

//edit1、edit2は、エディットコントロールです

cf.DoModal();

}

エラーが起こってしまいます、

何故でしょうか?

よろしくお願いします。

A 回答 (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 などを設定
コメントなど必要なら記入して 『完了』
といった手順で メンバー変数が追加できます
    • good
    • 0
この回答へのお礼

MFCですが、非常にむつかしいですね、

おっしゃるとおりに実行しましたら

問題が解決しました、ありがとうございます!

お礼日時:2008/06/18 10:09

環境が記載されていませんが、MFCでしょうか。



エラーが発生するのは、ダイアログのウィンドウが生成されていないからです。
SetWindowText()を呼び出す前に、cf.Create(ダイアログリソースID)を呼んで、ウィンドウを作成してください。

通常MFCのダイアログであれば、CDialog::OnInitDialog()をオーバーライドして、C***Dialog::OnInitDialog()の中でSetWindowText()を使えば設定することができます。
(C***Dialogはあなたのダイアログクラスの名前)

CFormViewで初期値を設定したいのであれば、オーバーライドしたOnInitialUpdate()の中でSetWindowText()を呼び出してください。
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2008/06/18 10:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A