ダイアログベースでのエディットボックスへの書き込み – プログラミング – Home

ダイアログベースでのエディットボックス...
 
通知
すべてクリア

[解決済] ダイアログベースでのエディットボックスへの書き込み


こんの
 こんの
(@こんの)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

VC++(MFC)を使ってダイアログベースのプログラムを製作しています。
ダイアログ上のボタンを押すと特定の動作をしてその結果を
エディットボックスに書き出したいのですが、どうもその方法がわかりません。
コントロールのメンバ変数では、ダイアログの生成時か消滅時にしか
コントロール内容にアクセスできないのでしょうか?
SetDlgItemText関数を使おうともしたのですが、ウィンドウハンドルが不明です。
ダイアログベースのプログラムを起動したままダイアログ上の
エディットボックスの内容を変更したいときはどのようにすれば
よいのでしょうか? 教えてください。


引用未解決
トピックタグ
sugar
 sugar
(@sugar)
ゲスト
結合: 24年前
投稿: 448
 

> SetDlgItemText関数を使おうともしたのですが、ウィンドウハンドルが不明です。
>
ウィンドウハンドル?
Windows APIのSetDlgItemText関数ですね、それは?
第1引数のウィンドウハンドルは、ダイアログのハンドルです。
でもせっかくMFCを使用しているのですから、CWnd::SetDlgItemText()を使いましょうよ。

> コントロールのメンバ変数では、ダイアログの生成時か消滅時にしか
> コントロール内容にアクセスできないのでしょうか?
>
そんなことはありません。
エディットボックスを変数として追加しているなら、
CWnd::SetWindowText()でもテキスト設定が可能です。
CEdit m_wndEdit;
m_wndEdit.SetWindowText(Hoge);

他にもDDXなんていうテクもあります。


返信引用
さなえ
 さなえ
(@さなえ)
ゲスト
結合: 23年前
投稿: 24
 

>コントロールのメンバ変数では、ダイアログの生成時か消滅時にしか
>コントロール内容にアクセスできないのでしょうか?

そのタイミングでUpdateDataが呼ばれてコントロールの”値”のメンバ変数が
反映・更新されているだけで、途中でアクセスできないわけではないです。
UpdateDataからDDX(DoDataExchangeだったかな?)が呼ばれます。
クラスウィザードで設定したメンバ変数が”コントロール”の場合
sugar さんのおっしゃる方法が使えます。


返信引用
こんの
 こんの
(@こんの)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

sugar様、さなえ様、はやい回答ありがとうございました。
結局、メンバ変数をコントロールで定義して、sugarさんのおっしゃるように
関数をつかってエディットボックスに書き込みできました。
ヘルプを見たらDoDataExchangeに関してもしっかり載っていたので
それも参考にしながら、おりをみてDDXのほうでもやってみたいと思います。
大変ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました