No.3ベストアンサー
- 回答日時:
Win32 APIを使っていて、入力があるたびに値のチェックをするのであれば、WM_COMMANDの処理で通知コードがEN_UPDATEまたはEN_CHANGEの場合を扱えば実現できます。
たとえば、エディットボックスのあるダイアログボックスのメッセージハンドラをに以下のような文を挿入すれば、エディットボックスの入力値が変わるごとに入力チェックをしてくれます(半角スペース*2を全角スペースに変換しています)。
case WM_COMMAND:
(挿入ここから)
if (HIWORD(wParam) == EN_UPDATE/* 表示の変更前にチェックするならEN_CHANGE */ && LOWORD(wParam) == IDC_EDIT/* チェックを行うエディットボックスのコントロールID */)
{
char buf[256]; /* 文字列処理用バッファ */
int value; /* 入力値 */
GetWindowText((HWND)lParam, buf, 255); /* エディットボックスの文字列取得 */
value = atoi(buf);
if (value < 0 || 60 < value) /* 入力値チェック */
{
/* 入力値が範囲外であることをユーザーに通知する */
MessageBox(hDlg, "0から60までの間の数を入力してください。", "入力エラー", MB_OK);
}
}
(以下、他のWM_COMMANDメッセージ処理)
ただし、入力値チェックを1からにして動かしてみればわかりますが、入力があるたび値のチェックをすると使う側からすればウザいです。
このような場合、自分ならば、値を入力ではなく選択させる(コンボボックスやスピンコントロールなどを使って)か、入力チェックを入力した値を利用/取得する時点で行うようにします。
こんにちは。
お返事大変遅くなり申し訳ありません。
なるほど・・・
コンボボックス等を使う手段、いいですね。
その方がユーザ側の入力ミスも無くなりますもんね。
いろいろ試してみたいと思います!
ご回答ありがとうございました。
また何かありましたらよろしくお願いいたします。
ここで質問を締め切らせていただきます。
No.2
- 回答日時:
Windowsプログラミングに利用しているライブラリは以下のいずれでしょうか。
(1)Win32 API
(2)MFC
(3).NET(C++/CLI)
(4)その他(ライブラリ名を具体的に書いてください)
お返事遅くなりごめんなさい。
私の利用しているライブラリは
(1)Win32 API
です。
説明不足で申し訳ありません。
よろしくお願いします。
No.1
- 回答日時:
BCB(C++Builder5.0)の話でVS2005ではどうかわかりませんが・・・
私は半角数字のみに制限するのをOnKeyPressで実現し、数字の入力範囲の制限はEditOnChangeで実現し
ていました。
OnChangeのほうで行う処理は
・適当な変数にエディットのデータを変換して代入
・その変数の値が制限範囲内か判定する
・制限範囲外なら変数に適当な値、例えば最大値・最小値を代入する
・エディットに変数の値を表示する
VS2005だとこれでできるかどうかわかりませんが、参考になれば幸いです。
ご回答ありがとうございます!
返事が遅くなりごめんなさい。
その方法でいろいろ試してみたいと思います。
情報ありがとうございました。
プログラムできましたらまた報告させて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
歩いた自慢大会
「めちゃくちゃ歩いたエピソード」を教えてください。 長時間でも長距離でも結構です。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
EDITコントロールで入力できる文字を制限するには?
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
【C++/CLI.NET】コンボボックスの値の設定・取得
C言語・C++・C#
-
-
4
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
5
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
6
コンボボックスのドロップダウンリストが表示されない
C言語・C++・C#
-
7
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
8
エディットコントロールでEnter押した時の動作
C言語・C++・C#
-
9
CString から LPCTSTRの型に変換
C言語・C++・C#
-
10
MFCでOnPaintのタイミング
C言語・C++・C#
-
11
UpdateData( FALSE); による文字列データの表示更新(VC++6.0)
C言語・C++・C#
-
12
MFC ダイアログ上のID取得について
C言語・C++・C#
-
13
ダイアログの上のテキストボックスの、初期値を設定する方法が分かりません・・・・
C言語・C++・C#
-
14
Debug Assertion Failed?
C言語・C++・C#
-
15
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
16
CStringの文字列検索&抜き出しについて
C言語・C++・C#
-
17
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
18
CString型 全角半角を意識せずに「1文字」ずつ取り出す
C言語・C++・C#
-
19
エディットボックスのフォントを変えたい
C言語・C++・C#
-
20
SetWindowText関数について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
アクセスのマクロ
-
EXCEL VBA で指定した範囲に入...
-
至急です!Excelがわかりません
-
初歩的な事だと思います。 Sub...
-
複数行の入力を受け取る方法
-
入力フォームの値をQRコードで...
-
accessで該当するレコードがな...
-
VBA R1C1形式で変数の入力について
-
時間の足し算
-
アルファベットGの小文字の入力
-
excel vba でユーザーフォーム...
-
POST時に履歴を残さない方法
-
Excel-VBAでInputBox+Pulldown...
-
gooを開いたときカーソルが検索...
-
vb.netでIE操作を解説したペー...
-
タグを教えて下さい
-
ビジネスメールの敬称
-
お問い合わせフォームから送信...
-
フォームを再送信しますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
初歩的な事だと思います。 Sub...
-
Excel-VBAでInputBox+Pulldown...
-
数字以外の入力をエラーにする...
-
VBAでInputBoxの再入力をさせる...
-
VBA R1C1形式で変数の入力について
-
EXCEL VBA で指定した範囲に入...
-
c#でTextBoxの入力制限
-
TextBoxから数字が文字...
-
教えて!全角文字「μ」の半角
-
DataGridViewの桁数制限に関して
-
excel vba でユーザーフォーム...
-
ExcelVBAのユーザーフォームで...
-
入力フォームの値をQRコードで...
-
アクセスのマクロ
-
エディットボックスの入力制限...
-
「イ分」・・・フンという文字...
-
DataGridView 列ごとの入力制限
-
複数行の入力を受け取る方法
おすすめ情報