1

サブクラス化せずにCEditボックスの内容を検証する方法はありますか?

CEditボックスで無効なファイル名文字をチェックし、ユーザーが入力できないようにしたい(キーを押したときに記録しないでください。ボックスに貼り付けると、無効な文字が編集ボックスに表示されないようにする必要があります)。

これを行う簡単な方法はありますか?

ちなみに、このボックスに関連付けられている変数を作成するにはどうすればよいですか?コントロール変数ではない変数を追加した場合、この変数には常に編集コントロールにあるものが含まれますか?

ありがとう..

4

3 に答える 3

1

少し前に私はこれを作成しました。確かに、これは非常に古いものですが、アイデアはまだ保持されています:

代替テキスト

于 2009-05-14T06:31:52.343 に答える
0

http://msdn.microsoft.com/en-us/library/f7yhsd2b(VS.80).aspxによると、「編集コントロールからその親(通常はCDialogから派生したクラス)に送信されるWindows通知メッセージを処理する場合)、メッセージマップエントリとメッセージハンドラメンバー関数を各メッセージの親クラスに追加します。」および「ON_EN_UPDATE編集コントロールは変更されたテキストを表示しようとしています。コントロールがテキストをフォーマットした後、必要に応じてウィンドウサイズを変更できるように、テキストをスクリーニングする前に送信されます。」--したがって、CEditをサブクラス化せずに、親のWindowsメッセージマップ/メッセージハンドラーを介して更新を精査し、場合によってはブロックすることができます。

于 2009-05-14T06:31:32.343 に答える
0

ダイアログで PreTranslateMessage をオーバーライドします。メッセージが WM_KEYDOWN で、GetFocus() がエディット コントロールの HWND を返す場合、キーが気に入らないときにメッセージを食べます。

于 2009-05-14T14:19:14.623 に答える