お世話になります。
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)); ←無理ですよね・・
}
どうか、ご教示願います。
IDC_EDIT_○
の値を連番でつけるのはダメでしょうか?
そうすれば、
IDC_EDIT_5ならば IDC_EDIT_1 + 4 ってことにできますので。
>Blue様
回答下さいまして有難うございます。
IDC_EDITの値を連番・・・、というのは、各コントロールに割り振られている
IDの(内部判別)数値を、連番で振る、という事でしょうか。
ど、どうすれば、そのように出来るのでしょうか?
今は、プロパティで、ID名を振っているだけなのですが・・・。
メニューの表示→シンボルブラウザ
で変更できないかな。
直にResource.hをいじってもよさそうだけど。
>Blue様
再び回答下さいまして、有難うございます!
こんな風にIDの一覧を見れる機能が存在するとは
知りませんでした^^;
これで、連続して処理できそうです。
ご親切に教えて下さいまして、有難うございました。
Blueさんのおっしゃるとおり、resource.hをテキストエディタで書き換えるのが手っ取り早いと思います。
ただし、他のコントロールIDとぶつからないように注意してください。
>スナナ様
回答下さいまして、有難うございます。
シンボルブラウザを見て、興奮してしまったのですが
resource.hを見たら、こちらのほうが変更し易そうですね。
他とぶつからないように、マイナーな数値を振るよう気をつけます。
有難うございました。
ツイート | ![]() |