数値入力チェック – プログラミング – Home

通知
すべてクリア

[解決済] 数値入力チェック


momo
 momo
(@momo)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

こんにちは。
エディットボックスにて数値の1~3以外の文字を入力不可に
したいのですが、どうしたら良いのでしょうか。
エディットボックスのチェンジイベントで制御しようと思っています。
何か良い方法がありましたら教えてください。
宜しくお願い致します。

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


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

DDXには、入力チェックの機能があったと思います。
それで1~3以外の入力ははじけるでしょう。

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


返信引用
sugar
 sugar
(@sugar)
ゲスト
結合: 23年前
投稿: 448
 

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


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

KillFocus,SetFocus使ってチェックしたことあるよ


返信引用
com-a
 com-a
(@com-a)
ゲスト
結合: 23年前
投稿: 11
 

EN_CHANGEもしくはEN_UPDATEで入力文字チェックしても良いかも。

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

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

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

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


返信引用
momo
 momo
(@momo)
ゲスト
結合: 23年前
投稿: 12
Topic starter  

EN_CHANGE内のチェックで行い上手くいきました。
sugarさん、woodさん、com-aさん
わざわざ返答して頂き、ありがとう御座いました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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