
こんばんわ。
エディットボックスをサブクラス化して
入力チェックを行いたいが、
どのMSGでどの様に行ったら良いのでしょうか?
条件
1.数値のみ入力可
2.10~96の時のみ入力可
#条件1と2を満たした数値のみ入力できるようにしたい
サブクラス化、条件1は実装済。
WM_CHAR、EN_KILLFOCUS、
EN_UPDATEなどで
CString csBuf;
GetDlgItem(IDDxxxx)->GetWindowText(csBuf);
と書くと、強制終了。
WM_KILLFOCUSで処理する時の引数は、
次のフォーカスのポインタなので、
利用不可。
なんらかの操作をした時に
親ウィンドウプロシージャで入力チェックしても良いのですが、
出来れば、入力したらすぐチェックしたいです。
環境、MFC、VC++6.0です。
条件2の数値が、1桁ならWM_CHARで簡単にできたのですが・・・
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
強制終了の原因はSetWindowText() によるエディットの文字列の変更の
無限ループだと思います。
case WM_COMMAND:
if(HIWORD(wParam) == EN_UPDATE){ //エディットが変更される直前。
//SetWindowText() による変更を無視させるために GetFocus() も使う。
if(GetFocus() == hEdit && (HWND)lParam == hEdit){
回答ありがとうございます。
CString csBuf;
GetWindowText(csBuf);
とコーディングすることで、文字列を取得できました。
エディットボックスの入力チェックは
これで無事完了です。
原因は、無限ループの様でした。
よく考えると、サブクラス化したのに、
GetDlgItem(IDCxxx)->GetWindowText(csBuf);
だと、無限ループしちゃいますね。
どうも、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
初歩的な事だと思います。 Sub...
-
エクセルVBA テキストボックス...
-
Excel-VBAでInputBox+Pulldown...
-
テキストボックスの番号を使っ...
-
教えて!全角文字「μ」の半角
-
エディットボックスの入力制限...
-
HTMLの入力フォームに全角と半...
-
EXCEL VBA で指定した範囲に入...
-
TEXTAREA に入力時の位置
-
DataGridViewの桁数制限に関して
-
フォームの入力項目に全角文字...
-
POST時に履歴を残さない方法
-
uwsc webページ内のテキストボ...
-
ACCESS テキストボックスの入力...
-
VB 2005 Textbox にテンキーか...
-
HTMLで入力したデータを表...
-
c#でTextBoxの入力制限
-
TextBoxに特定の文字のみ入力を...
-
数字以外の入力をエラーにする...
-
VBA R1C1形式で変数の入力について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
初歩的な事だと思います。 Sub...
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
数字以外の入力をエラーにする...
-
教えて!全角文字「μ」の半角
-
Excel-VBAでInputBox+Pulldown...
-
DataGridViewの桁数制限に関して
-
VBA R1C1形式で変数の入力について
-
入力フォームの値をQRコードで...
-
VBAでInputBoxの再入力をさせる...
-
エディットボックスの入力制限...
-
EXCEL VBA で指定した範囲に入...
-
accessで該当するレコードがな...
-
DataGridView 列ごとの入力制限
-
c#でTextBoxの入力制限
-
「イ分」・・・フンという文字...
-
アクセスのマクロ
-
TextBoxから数字が文字...
-
excel vba でユーザーフォーム...
-
ExcelVBAのユーザーフォームで...
おすすめ情報