数値入力チェック

[戻る]
momo 2002/05/29(水) 10:41:35
こんにちは。
エディットボックスにて数値の1〜3以外の文字を入力不可に
したいのですが、どうしたら良いのでしょうか。
エディットボックスのチェンジイベントで制御しようと思っています。
何か良い方法がありましたら教えてください。
宜しくお願い致します。

開発環境:Windows2000、VC++6.0です。

sugar 2002/05/29(水) 11:00:43
DDXには、入力チェックの機能があったと思います。
それで1〜3以外の入力ははじけるでしょう。

あるいは、エディットボックスをサブクラス化して、
WM_CHARイベントから'1'、'2'、'3'以外の入力をはじくという方法もあります。

sugar 2002/05/29(水) 11:09:17
> DDXには、入力チェックの機能があったと思います。
> それで1〜3以外の入力ははじけるでしょう。
> 
自分で発言しておいて何なんですが、
このチェックって、OKボタンを押したときの正当性チェックですね。
なので、最終的に1〜3以外は認められないのですが、
入力自体は認められてしまうようです。
DDVって言うやつです。

wood 2002/05/29(水) 12:11:17
KillFocus,SetFocus使ってチェックしたことあるよ

com-a 2002/05/29(水) 13:59:47
EN_CHANGEもしくはEN_UPDATEで入力文字チェックしても良いかも。


もし、モーダルダイアログベースのアプリでしたら、EN_KILLFOCUSを処理した場合、
ダイアログの[X]ボタンを押されると、先にWM_CLOSEが送られてしまいます。
つまり、ダイアログが閉じられた後にEN_KILLFOCUSが飛んできてしまいます。

#メッセージが飛んでくる順序がこのように決められているのか、場合によって
#順序が変わるのかは不明ですが、どちらにせよ、WM_CLOSEが飛んでくるのは
#確実なので、もし、入力された文字を受け付けたくない場合、再入力を
#促したくともダイアログが消えてしまうので、やっかいです。

#ダイアログに[X]ボタンを付けていないのであれば、EN_KILLFOCUSで
#処理しても問題ないでしょう。

##上記問題はモーダルの時だけかなぁ? あんまり自信無し。

momo 2002/05/29(水) 17:18:03
[[解決]]
EN_CHANGE内のチェックで行い上手くいきました。
sugarさん、woodさん、com-aさん
わざわざ返答して頂き、ありがとう御座いました。

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