![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
プログラム初心者です。
よろしくお願いします!
現在私は、visualstudio6.0のソフトで、リソース機能を持ちいてある機能の実現に向けてプログラムを書いています。
そこで質問なのですが、
たとえばリソース機能を用いてダイアログボックスにエディットボックスを20つ設けますと、それぞれIDC_EDIT1~IDC_EDIT20と計20個IDができますよね?
その20個を私の書いているソースの中にそれぞれ違う値をいれたいので、
イメージでは
for(i=1;i<21;i++){
IDC_EDIT[i]
}
というようにしたいのですが、IDC_EDIT[i]ではやはりコンパイルエラーが出てしまいます。ソースをずらずら長く書けばできないこともないのですが、大変な量になるので簡単にできないだろうかと検討中です。
この場合、ソースをコンパクトにすることは可能でしょうか?ご教授よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
テーブルにすればどうですか?
int idc_table[]={
IDC_EDIT1,
IDC_EDIT2,
・
・
・
};
for(i=0;i<20;i++){
HWND hWnd = GetDlgItem( hDlg , idc_table[i] );
SetWindowText( hWnd , "あああ" );
}
あるいはリソースは使わず
CreateWindowでEditボックスを作るという方法もあります。
テーブルにすることでたった今できることができました!質問内容が説明不足であったのに、的確なアドバイスを頂き本当に感謝しております!
ありがとうございました!
No.4
- 回答日時:
MFCだと勝手に仮定してお話します。
ます、正攻法なのは#3さんがおっしゃっているIDC_EDIT1~IDC_EDIT20を連番にする方法です。
クラスウィザードを使わなくてもプログラムが組めるのであれば
ややイレギュラーな方法もあります。
まずダイアログクラスのメンバ変数として配列を用意します。
int m_nValue[20]; //あるいはCString m_szValue[20];
次にソースファイルのDoDataExchange内で
void CHogeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CHogeDlg)
DDX_Text(pDX, IDC_EDIT1, m_nValue[0]);
DDX_Text(pDX, IDC_EDIT2, m_nValue[1]);
(中略)
DDX_Text(pDX, IDC_EDIT20, m_nValue[19]);
//}}AFX_DATA_MAP
}
とします。
すると、UpdateData()とm_nValue[]の操作でエディットボックスの値の制御ができます(代わりにこのクラスをクラスウィザードで使うことができなくなりますが)。
ご教授ありがとうございます!
実は私はMFCを使っていなくて。。
言葉足らずで本当に申し訳ございません!
ですが、せっかくFAYさんからお返事を頂いたので、MFCを勉強した時には参考にさせていただきます。
ありがとうございました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?e8efa67)
No.3
- 回答日時:
"違う値を入れる"というのが意味不明。
DDXを用いてリンクされた変数の値をそれぞれ用意する、
ということであれば、、
リソースIDは確かresource.hで#defineされており、
実際はunsigned int の値を取るはずです。
従ってIDC_EDIT1~IDC_EDIT20が連番になっていれば、
ループで何とかなるでしょう。
連番になっていなければ、値設定用のマップでも作って対処するのが良いと思いますよ
申し訳ございません!
知識不足のため言葉たいへん足らずでした。
頑張って勉強して早く熟練者になれるようにがんばります。ありがとうございました。
No.1
- 回答日時:
IDC_EDIT1 に設定される値は基本的にはシステムで決定されますが、
その値自体は resource.h (だっけかな)に書かれています。
なのでこのファイルを直接編集すると任意の値を設定できますよ。
※ちなみに「IDC_EDIT1」というのはそれ自体でDEFINEされちゃってるので、
「IDC_EDIT[i]」などという書き方は出来ないのではないかと・・
迅速なお返事ありがとうございます。
たった今、sha-girlさんの方法でやることができました!ですが、こんなに早くお返事をしていただき本当にうれしいです。アドバイスありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- オープンソース IT用語、ソースとオブジェクト、改変と翻訳と翻案の違いなど どのようにりかいすればよいのですか 1 2022/09/09 10:02
- au(KDDI) ■AU「 スマホトクするプログラム」について 4 2023/08/09 08:54
- 画像編集・動画編集・音楽編集 動画編集サイト 1 2023/08/08 11:17
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- ラジコン・ミニ四駆 ★フタバの4PMプロポの機能についての質問です♪ 1 2022/11/09 16:59
- 一眼レフカメラ タムロン100-400mmとシグマ100-400mmで悩んでいます。 3 2022/04/25 16:10
- 政治 自公維新参政のバックは極悪カルト<ジャパンハンドラー・CIA<イルミナティという構図 3 2022/06/30 01:51
- その他(プログラミング・Web制作) Pythonのライブラリ、randomについて 3 2022/09/20 14:30
- その他(コンピューター・テクノロジー) 50台の織機から回転数を取得・集計しモニターに表示したい 2 2022/11/05 15:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
DWORDって
-
Excel-vba 文字列と変数を...
-
フォームを開くときに、コンボ...
-
C#で動的にコントロールを取得...
-
足して100になるような乱数のア...
-
Nullってどういう意味ですか?
-
世界のナベアツ
-
Access2003 オートナンバーの現...
-
VB6でのLog
-
Exit Subのような・・・。
-
数字の位ごとの値を表示するプ...
-
vbaで極大値を抽出する方法
-
VB6.0-整数と余りを求める
-
Rails3 の time_select の値表示
-
4択問題のプログラムでランダム...
-
c言語 偶数個
-
VBAで配列のNULL判定
-
VBAの定数の使い方で、計算値を...
-
エラーの意味は? Lvalue req...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
エクセルのマクロについて教え...
-
VB6.0-整数と余りを求める
-
足して100になるような乱数のア...
-
数字の位ごとの値を表示するプ...
-
VBAで配列のNULL判定
-
世界のナベアツ
-
ラジオボタンの値の取得につい...
-
相関係数p値の出し方
-
1つ前の値を変数に保存する方法
-
VBAの定数の使い方で、計算値を...
-
DWORDって
-
4択問題のプログラムでランダム...
-
Access2003 オートナンバーの現...
-
C#で動的にコントロールを取得...
-
スピンボタンで小数点
-
UWSCのcallについて
-
フリーランタイマーの時間差分...
おすすめ情報