2

MSDN のすべてのページをスキャンしましたが、次の回答が見つかりません。

  1. 編集コントロールの最小文字長。
  2. エディット コントロールの入力値の範囲を指定します。
  3. エディット コントロールでアルファベットのみを許可する。
  4. ボタン コントロールのツールチップを設定します。

Win32でこれを行う方法を教えてください。

4

1 に答える 1

5
  1. これを適切に行うのは困難です。素朴なアプローチではWM_KEYDOWN、メッセージを処理してバックスペースをインターセプトし、キーを削除します (VK_BACKおよびVK_DELETE)。ただし、ユーザーが既存のテキストの一部を選択してから、それを削除 (バックスペースまたは削除を使用)、切り取り、または置換 (キーを入力するか、他のテキストを貼り付けることにより) を処理する必要もあります。それは価値があるとは思いませんし、うまくできたとしても、それらの通常の動作をすべて破ると混乱する可能性があります。(これは非常に煩わしい場合もあります。コントロールにテキスト "bar" があり、それを "baz" に変更したいとします。コントロールが 3 の最小長を強制する場合、最後の文字をバックスペースしようとすると勝ちます。動作しません。「r」文字を削除する前に、まず「barz」に変更する必要があります。うーん。)

    コントロールに最小限の長さが必要な場合は、別の検証手順 (ユーザーが [OK] ボタンをクリックしたときやフォーカスを別のコントロールに移動したときなど) でそれを強制し、適切なエラー メッセージを表示することをお勧めします。

  2. 特定の文字のみをエディット コントロールに入力できるようにするのか、それとも数値の範囲に制限するのかがわかりません。前者については、3 を参照してください。

    値を特定の数値範囲に制限したい場合は、別の検証ステップで行うことをお勧めします。そうしないと、ユーザーが通常の方法で文字を挿入および削除できなくなる可能性があります。可能であれば、編集コントロールの使用を避け、トラックバー (スライダー) コントロールを使用してください。

  3. エディット コントロールをサブクラス化し、WM_CHARメッセージを処理し、不要な文字を拒否する必要があります。WM_PASTEさらに、メッセージを処理し、同様の検証を実行する必要があります。

  4. これは編集コントロールとは関係がなく、おそらく別の質問になるはずです。何を試しましたか?http://msdn.microsoft.com/en-us/library/bb760250.aspxを読みましたか?

于 2013-02-16T07:03:04.713 に答える