VC++(MFC)を使ってダイアログベースのプログラムを製作しています。
ダイアログ上のボタンを押すと特定の動作をしてその結果を
エディットボックスに書き出したいのですが、どうもその方法がわかりません。
コントロールのメンバ変数では、ダイアログの生成時か消滅時にしか
コントロール内容にアクセスできないのでしょうか?
SetDlgItemText関数を使おうともしたのですが、ウィンドウハンドルが不明です。
ダイアログベースのプログラムを起動したままダイアログ上の
エディットボックスの内容を変更したいときはどのようにすれば
よいのでしょうか? 教えてください。
> SetDlgItemText関数を使おうともしたのですが、ウィンドウハンドルが不明です。
>
ウィンドウハンドル?
Windows APIのSetDlgItemText関数ですね、それは?
第1引数のウィンドウハンドルは、ダイアログのハンドルです。
でもせっかくMFCを使用しているのですから、CWnd::SetDlgItemText()を使いましょうよ。
> コントロールのメンバ変数では、ダイアログの生成時か消滅時にしか
> コントロール内容にアクセスできないのでしょうか?
>
そんなことはありません。
エディットボックスを変数として追加しているなら、
CWnd::SetWindowText()でもテキスト設定が可能です。
CEdit m_wndEdit;
m_wndEdit.SetWindowText(Hoge);
他にもDDXなんていうテクもあります。
>コントロールのメンバ変数では、ダイアログの生成時か消滅時にしか
>コントロール内容にアクセスできないのでしょうか?
そのタイミングでUpdateDataが呼ばれてコントロールの”値”のメンバ変数が
反映・更新されているだけで、途中でアクセスできないわけではないです。
UpdateDataからDDX(DoDataExchangeだったかな?)が呼ばれます。
クラスウィザードで設定したメンバ変数が”コントロール”の場合
sugar さんのおっしゃる方法が使えます。
sugar様、さなえ様、はやい回答ありがとうございました。
結局、メンバ変数をコントロールで定義して、sugarさんのおっしゃるように
関数をつかってエディットボックスに書き込みできました。
ヘルプを見たらDoDataExchangeに関してもしっかり載っていたので
それも参考にしながら、おりをみてDDXのほうでもやってみたいと思います。
大変ありがとうございました。