プロが教える店舗&オフィスのセキュリティ対策術

Windows APIを使ってソフト開発しています。

EDITコントロールで文字入力を受ける際、入力できる文字をアルファベットと数字のみ(もしくは任意の文字のみ)にするにはどうすればよいのでしょうか?ユーザーが記号キーなどを押しても無視されるようにしたいのですが。

「ES_NUMBER」スタイルを付加すると数字のみの入力にできますが、こうゆう感じで任意の文字のみを許可するようにできるでしょうか?

A 回答 (2件)

★アドバイス


>「ES_NUMBER」スタイルを付加すると数字のみの入力にできますが、
>こうゆう感じで任意の文字のみを許可するようにできるでしょうか?
 ↑
 ES_XXXX などのスタイルでは出来ません。無理。
 任意の文字だけを入力可能にするにはエディットボックスを
 サブクラス化して WM_KEYDOWN を処理して下さい。
 http://wisdom.sakura.ne.jp/system/winapi/win32/w …→『サブクラス化』
 http://wisdom.sakura.ne.jp/system/winapi/win32/w …→『キーボードイベント』
    • good
    • 1
この回答へのお礼

アドバイス通りにサブクラス化してWM_KEYDOWNを捕まえてみましたが、不必要な文字の場合にメッセージを破棄しても、何故か文字が表示されてしまいました。試行錯誤の結果、WM_CHARの方を捕まえて破棄すると成功しました。サイトがとても参考になりました。ありがとうございました。

お礼日時:2008/03/17 09:00

親ウィンドウにEN_UPDATEが通知されるかと思われます。


そこで判定が可能かと。

GetWindowText()などで現在の入力情報が取得できます。
不正な入力が合った場合、削除してSetWindowText()で再設定してはどうでしょうか?
    • good
    • 0
この回答へのお礼

今回はEDITコントロールをサブクラス化して、キー入力のメッセージを捕らえる方法で解決しました。アドバイスありがとうございました。

お礼日時:2008/03/17 09:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング