多量のエディットボックスに対し、同じ処理を走らせるには?

解決


いな  2006-06-22 20:04:53  No: 62286

お世話になります。
VC++6.0/WinXP/ダイアログベースで開発しております。

大量のエディットボックスを貼り付けているフォームがありまして
それぞれの入力値に、同じ処理前チェックが走ります。

1つ1つのコントロールに対してチェックを書いたのでが
冗長なソースになってしまいますので
連続して、チェックさせるには、どういった方法がありますのでしょうか。

理想的には、VBでいうところの、コントロール配列にさせて

for(int i = 0; i < 10; i++)
  CheckFunction(control[i].Text);

というイメージに近い事が出来れば嬉しいのですが。
ID名を連番にして、連続処理が出来るのかと考えたのですが
GetDlgItemの引数IDが、Int型のため、無理です・・。

CString s;
for(int i = 0; i < 10; i++) {
        s.Format("IDC_EDIT_%d", i);
  CheckFunction(GetDlgItem(s)); ←無理ですよね・・
}

どうか、ご教示願います。


Blue  2006-06-22 20:19:57  No: 62287

IDC_EDIT_○
の値を連番でつけるのはダメでしょうか?
そうすれば、

IDC_EDIT_5ならば IDC_EDIT_1 + 4 ってことにできますので。


いな  2006-06-22 20:51:43  No: 62288

>Blue様
回答下さいまして有難うございます。
IDC_EDITの値を連番・・・、というのは、各コントロールに割り振られている
IDの(内部判別)数値を、連番で振る、という事でしょうか。
ど、どうすれば、そのように出来るのでしょうか?
今は、プロパティで、ID名を振っているだけなのですが・・・。


Blue  2006-06-22 20:55:05  No: 62289

メニューの表示→シンボルブラウザ

で変更できないかな。
直にResource.hをいじってもよさそうだけど。


いな  2006-06-22 21:10:15  No: 62290

>Blue様
再び回答下さいまして、有難うございます!
こんな風にIDの一覧を見れる機能が存在するとは
知りませんでした^^;
これで、連続して処理できそうです。
ご親切に教えて下さいまして、有難うございました。


スナナ  2006-06-22 21:11:15  No: 62291

Blueさんのおっしゃるとおり、resource.hをテキストエディタで書き換えるのが手っ取り早いと思います。
ただし、他のコントロールIDとぶつからないように注意してください。


いな  2006-06-22 21:14:06  No: 62292

>スナナ様
回答下さいまして、有難うございます。
シンボルブラウザを見て、興奮してしまったのですが
resource.hを見たら、こちらのほうが変更し易そうですね。
他とぶつからないように、マイナーな数値を振るよう気をつけます。
有難うございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加