重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

C++初心者です。
ご教授よろしくお願いします。

Visual Basic C++ において、
label,button などのプロパティ設定を行う際、
this->label3->Name = L"label3"
といった固定値での設定ではなく、変数で設定を行いたいと考えています。

イメージはこのような感じです。
this->label$i->Name = L"label$i"

最終的には、for文で回して、以下のような設定をしたいと考えています。
for(i=1;i<=3;i++){
this->label$i->Name = L"label$i";
}

おおよそ以上のようなことをしたいのですが、
実際にどういったコードを記述すればよいかわかりません。

どなたかご教授よろしくお願いします。

A 回答 (4件)

No1 です


他の方の回答通知が来て改めて内容見たときに気が付いたのですが
代入するコントロールの方も違ってたのね   見落としてました

クラスウイザードの標準操作ではメンバ変数に配列を使うことはできないはずなので
自分で手を加えて細工することになります

手っ取り早くやるならそのコントロールを
ポインタ等の配列に代入して使うのがいいでしょう

以下 不足してた部分の雑なサンプル

Labei *LabekPtr[3]; //変数の型は 実際のコントロールのものに合わせてください

LabekPtr[0] = this->labe1;
LabekPtr[1] = this->labe2;
LabekPtr[2] = this->labe3;

for(int i = 0; i < 3 ; i ++) {
 LabekPtr[i]->Name =
}
    • good
    • 0

> Visual Basic C++ において、



なるほど(w)ネタです。
私のほうが、VC++ではなく、C++のプログラマなので、多少用語が違うのは気にせず~

this->label3->Name = L"label3"
"Name"は実体を持っているワークでしょうか?それで多少変わる感じがありますね。
上の書き方は、Nameはポインター型で(const char *)"label3";
的な書式なので、
だとすれば、、
No1さんのやつが、一番近いですね。

元の、プロトタイプを
this->label1
this->label2
this->label3
ではなく、
this->label[n] で定義すれば、相当楽になると思いますよ。

char buffer[100];

for(i=1;i<=3;i++) {
 sprintf(buffer,"label%d",i);
 this->label[i].Name = strdup(buffer); // 実体の場合
 this->label[i]->Name = strdup(buffer); // 参照構造体の場合
}
strdupは、
char *p;
p=malloc(strlen(buffer)+1); // \0 の分を追加。
strcpy(p,buffer);
return(p);
と等価の関数です。
実体を生成させるために書いています。
これがないと、初期化されていないポインターへの直コピー=一般保護例外が出るはずです。
    • good
    • 0

this->label1->Name = L"label1"


this->label2->Name = L"label2"
this->label3->Name = L"label3"
ということですよね。
基本、C言語では(スクリプト言語で採用されているような) label$i とか L"label$i" で変数iを展開する、といったことはできない、とお考えください。
(そもそも、$変数名 などという使い方自体しません)

・文字列はsprintf等の文字列変換関数を使って作る
・コントロールは、配列に入れて labels[i]等とする
    • good
    • 0

一例として


確認してないんで間違ってるかも(流れはわかると思います)

TCHAR buffrt[100];

for(i=1;i<=3;i++){
 sprintf(buffer, L"Labev%d", i);
 this->label$i->Name = buffer; //個人的には SetWindowText 使う気がするけど
}

みたいな感じでいいかと
SetWindowText
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!