エディットボックスとスピンコントロールについて

[戻る]
Pie 2006/03/12(日) 18:39:39
はじめまして、以前からここのページを参考にさせていただいていましたが、解決できない問題
が発生してしまったので質問させていただきます。

エディットボックスの内容が変わるとリストボックスの中身をその都度再表示するプログラム
を作っているのですが、スピンコントロールで数値の自動入力にチェックを入れた状態で、
エディットボックスのEN_CHANGEから自作関数へ飛ぼうとするとエラーが出てしまいます。
いろいろ試してみたのですが、うまくいきませんでした。
例えばスピンコントロールの数値の自動入力にチェックを入れたEdit1のEN_CHANGEに

Edit2="文字列";(Edit2はCString型)
とするとアプリ起動時にEdit2に"文字列"と表示されてしまいます。
ほかには
UpdateData(FALSE);
などでは実行しようとするとエラーが出ます。
コンパイルはできるのですが、実行ができません。
数値の自動入力のチェックをはずすとエラーはなくなり、EN_CHANGEも普通に動作します。
どなたかご教授お願いいたします。

r 2006/03/12(日) 20:01:47
自動入力にすると OnInitDialog よりも以前の、エディットボックスとスピンが作成され
たタイミングで EN_CHANGE が発生するです。

だから EN_CHANGE 処理で
Edit2="文字列";
とすれば、起動時にEdit2に"文字列"と表示されるのは当然の成り行きだし、
UpdateData(FALSE);
とすれば、そのエディットボックスやスピン以外の未作成コントロールにまでアクセスし
ようとして実行時エラーになります。

フラグでも用意しておいて、OnInitDialog を通る以前の EN_CHANGE だったら何もしない
ようにしてしまえばいいです。

Pie 2006/03/12(日) 20:02:47
すいません、環境書くの忘れてました。
MFC ダイアログベース VC++6.0 Windos2000
です。

Pie 2006/03/12(日) 20:07:46
[[解決]]
rさんありがとうございました!無事解決できましたw
また行き詰まったらよろしくおねがいいたします。

古いスレッドには追加発言できません。