• ベストアンサー

EDITコントロールで入力できる文字を制限するには?

Windows APIを使ってソフト開発しています。 EDITコントロールで文字入力を受ける際、入力できる文字をアルファベットと数字のみ(もしくは任意の文字のみ)にするにはどうすればよいのでしょうか?ユーザーが記号キーなどを押しても無視されるようにしたいのですが。 「ES_NUMBER」スタイルを付加すると数字のみの入力にできますが、こうゆう感じで任意の文字のみを許可するようにできるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

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

BearCave
質問者

お礼

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

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

親ウィンドウにEN_UPDATEが通知されるかと思われます。 そこで判定が可能かと。 GetWindowText()などで現在の入力情報が取得できます。 不正な入力が合った場合、削除してSetWindowText()で再設定してはどうでしょうか?

BearCave
質問者

お礼

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

関連するQ&A